FA-91026 / Quantum circuit simulation / Open access
Depth scheduler counts identity gates as layers · case 01
Two id gates on a qubit add two layers of depth.
ROOT CAUSE
The id skip is missing, so identity operations occupy scheduling layers.
THE FAILURE
The id skip is missing, so identity operations occupy scheduling layers.
Unsuccessful approach: The attempted repair skips the uppercase name "I", which the contract never uses.
Case contract
Input [nq, nc, ops]; ops are [name, qubits], ["measure", [q], [c]], ["g", [q], "if", c] (classically conditioned), ["barrier", qubits] (empty list = all qubits) and ["id", [q]]. ASAP layering: each op lands one layer after the latest of its qubits and any clbit it reads or writes, and sets those levels; barriers align the listed qubits to their maximum without adding a layer; id costs nothing. Return [depth, qubit levels].
Why this case matters
Depth drives decoherence budgets and transpiler choices; scheduling slips misreport circuit cost.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
nq, nc, ops = x
ql = [0] * nq
cl = [0] * nc
for op in ops:
name, qs = op[0], op[1]
if name == 'barrier':
qs = qs or list(range(nq))
top = max(ql[q] for q in qs)
for q in qs:
ql[q] = top
continue
pass
cbits = []
if name == 'measure':
cbits = op[2]
elif len(op) > 2 and op[2] == 'if':
cbits = [op[3]]
level = 1 + max([ql[q] for q in qs] + [cl[c] for c in cbits])
for q in qs:
ql[q] = level
for c in cbits:
cl[c] = level
return [max(ql + cl + [0]), ql]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: identity is free', [1, 0, [['id', [0]], ['id', [0]], ['x', [0]]]], [1, [1]]], ['regression: random schedule 1', [4, 2, [['ccx', [1, 0, 3]], ['ccx', [2, 1, 3]], ['barrier', [0, 1, 2, 3]], ['cx', [1, 0]], ['id', [1]], ['cx', [1, 2]], ['cx', [0, 2]]]], [5, [5, 4, 5, 2]]], ['regression: random schedule 2', [1, 1, [['h', [0]], ['rz', [0]], ['x', [0]], ['x', [0], 'if', 0], ['x', [0]], ['x', [0]], ['x', [0], 'if', 0], ['id', [0]]]], [7, [7]]], ['control: barrier aligns everything', [3, 1, [['h', [0]], ['h', [0]], ['barrier', []], ['x', [2]]]], [3, [2, 2, 3]]], ['control: partial barrier', [3, 1, [['h', [0]], ['barrier', [0, 1]], ['x', [1]], ['x', [2]]]], [2, [1, 2, 1]]], ['control: toffoli waits on all', [3, 0, [['h', [2]], ['h', [2]], ['ccx', [0, 1, 2]], ['x', [0]]]], [4, [4, 3, 3]]], ['control: cx waits on target', [2, 0, [['h', [1]], ['h', [1]], ['cx', [0, 1]]]], [3, [3, 3]]]], [['regression: random schedule 10', [4, 1, [['id', [2]]]], [0, [0, 0, 0, 0]]], ['regression: random schedule 11', [2, 2, [['barrier', [0]], ['barrier', [1]], ['h', [1]], ['h', [0]], ['id', [0]], ['cx', [0, 1]], ['x', [1]], ['rz', [0]]]], [3, [3, 3]]], ['regression: random schedule 2', [1, 1, [['h', [0]], ['rz', [0]], ['x', [0]], ['x', [0], 'if', 0], ['x', [0]], ['x', [0]], ['x', [0], 'if', 0], ['id', [0]]]], [7, [7]]], ['control: conditioned gate after measure', [2, 1, [['h', [0]], ['measure', [0], [0]], ['x', [1], 'if', 0]]], [3, [2, 3]]], ['control: measure after conditioned read', [2, 1, [['h', [0]], ['h', [0]], ['h', [0]], ['x', [1], 'if', 0], ['measure', [1], [0]]]], [3, [3, 2]]], ['control: empty circuit', [2, 1, []], [0, [0, 0]]], ['control: late read then early-qubit measure', [2, 1, [['h', [1]], ['h', [1]], ['h', [1]], ['x', [1], 'if', 0], ['measure', [0], [0]]]], [5, [5, 4]]]], [['regression: random schedule 14', [4, 1, [['cx', [0, 3]], ['x', [0]], ['cx', [0, 2]], ['cx', [2, 3]], ['x', [1], 'if', 0], ['cx', [3, 0]], ['cx', [1, 2]], ['id', [0]], ['barrier', [2]]]], [5, [5, 5, 5, 5]]], ['regression: random schedule 28', [2, 1, [['x', [1]], ['id', [0]], ['x', [0]], ['cx', [1, 0]], ['id', [1]], ['h', [1]]]], [3, [2, 3]]], ['regression: random schedule 11', [2, 2, [['barrier', [0]], ['barrier', [1]], ['h', [1]], ['h', [0]], ['id', [0]], ['cx', [0, 1]], ['x', [1]], ['rz', [0]]]], [3, [3, 3]]], ['control: read then measure other clbit writer', [3, 2, [['h', [2]], ['h', [2]], ['z', [2], 'if', 1], ['measure', [0], [1]], ['x', [1], 'if', 1]]], [5, [4, 5, 3]]], ['control: random schedule 0', [1, 2, [['x', [0]], ['rz', [0]], ['measure', [0], [0]], ['x', [0]], ['barrier', [0]], ['x', [0], 'if', 1], ['x', [0], 'if', 1], ['x', [0]], ['measure', [0], [0]]]], [8, [8]]], ['control: random schedule 3', [1, 2, [['h', [0]], ['h', [0]]]], [2, [2]]], ['control: random schedule 4', [4, 1, [['measure', [3], [0]], ['ccx', [2, 1, 0]], ['ccx', [0, 2, 3]]]], [2, [2, 1, 2, 2]]]], [['regression: random schedule 32', [3, 2, [['cx', [1, 0]], ['cx', [1, 0]], ['rz', [0]], ['ccx', [2, 1, 0]], ['cx', [0, 2]], ['id', [0]], ['h', [0]], ['h', [0]], ['cx', [1, 2]]]], [7, [7, 6, 6]]], ['regression: random schedule 33', [3, 2, [['rz', [2]], ['cx', [0, 1]], ['x', [0], 'if', 0], ['barrier', [0, 1, 2]], ['x', [0], 'if', 0], ['x', [0]], ['rz', [0]], ['rz', [0]], ['id', [0]]]], [6, [6, 2, 2]]], ['regression: random schedule 14', [4, 1, [['cx', [0, 3]], ['x', [0]], ['cx', [0, 2]], ['cx', [2, 3]], ['x', [1], 'if', 0], ['cx', [3, 0]], ['cx', [1, 2]], ['id', [0]], ['barrier', [2]]]], [5, [5, 5, 5, 5]]], ['control: random schedule 5', [3, 2, [['ccx', [0, 1, 2]], ['ccx', [2, 1, 0]], ['barrier', [0, 1, 2]], ['x', [1]]]], [3, [2, 3, 2]]], ['control: random schedule 6', [4, 2, [['barrier', [2]], ['cx', [1, 2]], ['ccx', [2, 3, 0]]]], [2, [2, 1, 2, 2]]], ['control: random schedule 7', [4, 2, [['x', [2], 'if', 1], ['x', [1]], ['barrier', [2]], ['cx', [0, 1]], ['h', [2]]]], [2, [2, 2, 2, 0]]], ['control: random schedule 8', [1, 1, [['x', [0], 'if', 0], ['rz', [0]], ['rz', [0]], ['h', [0]], ['rz', [0]], ['h', [0]], ['measure', [0], [0]], ['rz', [0]]]], [8, [8]]]], [['regression: random schedule 44', [4, 2, [['id', [0]], ['cx', [3, 1]], ['x', [0]], ['ccx', [3, 0, 1]], ['cx', [2, 1]], ['cx', [2, 0]]]], [4, [4, 3, 4, 2]]], ['regression: random schedule 47', [4, 1, [['ccx', [1, 0, 3]], ['barrier', []], ['measure', [0], [0]], ['x', [3]], ['ccx', [1, 3, 0]], ['cx', [0, 1]], ['x', [2]], ['id', [0]]]], [4, [4, 4, 2, 3]]], ['regression: random schedule 29', [4, 1, [['x', [0]], ['h', [0]], ['id', [1]]]], [2, [2, 0, 0, 0]]], ['control: random schedule 9', [3, 1, [['cx', [2, 1]], ['h', [1]], ['barrier', [1, 2]]]], [2, [0, 2, 2]]], ['control: random schedule 13', [4, 2, [['cx', [3, 2]], ['x', [3]], ['ccx', [3, 1, 0]], ['ccx', [1, 0, 2]], ['h', [0]]]], [5, [5, 4, 4, 3]]], ['control: random schedule 15', [1, 2, [['barrier', [0]], ['rz', [0]], ['rz', [0]], ['x', [0], 'if', 0], ['rz', [0]], ['x', [0], 'if', 0], ['x', [0]], ['measure', [0], [1]]]], [7, [7]]], ['control: random schedule 16', [3, 1, [['x', [2], 'if', 0], ['barrier', [0, 1, 2]], ['cx', [1, 2]], ['cx', [0, 1]], ['h', [0]], ['measure', [1], [0]], ['measure', [2], [0]]]], [5, [4, 4, 5]]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: identity is free | [3, [3]] | [1, [1]] | Failed |
| regression: random schedule 1 | [6, [6, 5, 6, 2]] | [5, [5, 4, 5, 2]] | Failed |
| regression: random schedule 2 | [8, [8]] | [7, [7]] | Failed |
| control: barrier aligns everything | [3, [2, 2, 3]] | [3, [2, 2, 3]] | Passed |
| control: partial barrier | [2, [1, 2, 1]] | [2, [1, 2, 1]] | Passed |
| control: toffoli waits on all | [4, [4, 3, 3]] | [4, [4, 3, 3]] | Passed |
| control: cx waits on target | [3, [3, 3]] | [3, [3, 3]] | Passed |
SHA-256 / f2852a45a1a866ed426c287b30a59a1048c2e83db4c790e068f2ba5601d436e9
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
nq, nc, ops = x
ql = [0] * nq
cl = [0] * nc
for op in ops:
name, qs = op[0], op[1]
if name == 'barrier':
qs = qs or list(range(nq))
top = max(ql[q] for q in qs)
for q in qs:
ql[q] = top
continue
if name == 'I':
continue
cbits = []
if name == 'measure':
cbits = op[2]
elif len(op) > 2 and op[2] == 'if':
cbits = [op[3]]
level = 1 + max([ql[q] for q in qs] + [cl[c] for c in cbits])
for q in qs:
ql[q] = level
for c in cbits:
cl[c] = level
return [max(ql + cl + [0]), ql]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: identity is free', [1, 0, [['id', [0]], ['id', [0]], ['x', [0]]]], [1, [1]]], ['regression: random schedule 1', [4, 2, [['ccx', [1, 0, 3]], ['ccx', [2, 1, 3]], ['barrier', [0, 1, 2, 3]], ['cx', [1, 0]], ['id', [1]], ['cx', [1, 2]], ['cx', [0, 2]]]], [5, [5, 4, 5, 2]]], ['regression: random schedule 2', [1, 1, [['h', [0]], ['rz', [0]], ['x', [0]], ['x', [0], 'if', 0], ['x', [0]], ['x', [0]], ['x', [0], 'if', 0], ['id', [0]]]], [7, [7]]], ['control: barrier aligns everything', [3, 1, [['h', [0]], ['h', [0]], ['barrier', []], ['x', [2]]]], [3, [2, 2, 3]]], ['control: partial barrier', [3, 1, [['h', [0]], ['barrier', [0, 1]], ['x', [1]], ['x', [2]]]], [2, [1, 2, 1]]], ['control: toffoli waits on all', [3, 0, [['h', [2]], ['h', [2]], ['ccx', [0, 1, 2]], ['x', [0]]]], [4, [4, 3, 3]]], ['control: cx waits on target', [2, 0, [['h', [1]], ['h', [1]], ['cx', [0, 1]]]], [3, [3, 3]]]], [['regression: random schedule 10', [4, 1, [['id', [2]]]], [0, [0, 0, 0, 0]]], ['regression: random schedule 11', [2, 2, [['barrier', [0]], ['barrier', [1]], ['h', [1]], ['h', [0]], ['id', [0]], ['cx', [0, 1]], ['x', [1]], ['rz', [0]]]], [3, [3, 3]]], ['regression: random schedule 2', [1, 1, [['h', [0]], ['rz', [0]], ['x', [0]], ['x', [0], 'if', 0], ['x', [0]], ['x', [0]], ['x', [0], 'if', 0], ['id', [0]]]], [7, [7]]], ['control: conditioned gate after measure', [2, 1, [['h', [0]], ['measure', [0], [0]], ['x', [1], 'if', 0]]], [3, [2, 3]]], ['control: measure after conditioned read', [2, 1, [['h', [0]], ['h', [0]], ['h', [0]], ['x', [1], 'if', 0], ['measure', [1], [0]]]], [3, [3, 2]]], ['control: empty circuit', [2, 1, []], [0, [0, 0]]], ['control: late read then early-qubit measure', [2, 1, [['h', [1]], ['h', [1]], ['h', [1]], ['x', [1], 'if', 0], ['measure', [0], [0]]]], [5, [5, 4]]]], [['regression: random schedule 14', [4, 1, [['cx', [0, 3]], ['x', [0]], ['cx', [0, 2]], ['cx', [2, 3]], ['x', [1], 'if', 0], ['cx', [3, 0]], ['cx', [1, 2]], ['id', [0]], ['barrier', [2]]]], [5, [5, 5, 5, 5]]], ['regression: random schedule 28', [2, 1, [['x', [1]], ['id', [0]], ['x', [0]], ['cx', [1, 0]], ['id', [1]], ['h', [1]]]], [3, [2, 3]]], ['regression: random schedule 11', [2, 2, [['barrier', [0]], ['barrier', [1]], ['h', [1]], ['h', [0]], ['id', [0]], ['cx', [0, 1]], ['x', [1]], ['rz', [0]]]], [3, [3, 3]]], ['control: read then measure other clbit writer', [3, 2, [['h', [2]], ['h', [2]], ['z', [2], 'if', 1], ['measure', [0], [1]], ['x', [1], 'if', 1]]], [5, [4, 5, 3]]], ['control: random schedule 0', [1, 2, [['x', [0]], ['rz', [0]], ['measure', [0], [0]], ['x', [0]], ['barrier', [0]], ['x', [0], 'if', 1], ['x', [0], 'if', 1], ['x', [0]], ['measure', [0], [0]]]], [8, [8]]], ['control: random schedule 3', [1, 2, [['h', [0]], ['h', [0]]]], [2, [2]]], ['control: random schedule 4', [4, 1, [['measure', [3], [0]], ['ccx', [2, 1, 0]], ['ccx', [0, 2, 3]]]], [2, [2, 1, 2, 2]]]], [['regression: random schedule 32', [3, 2, [['cx', [1, 0]], ['cx', [1, 0]], ['rz', [0]], ['ccx', [2, 1, 0]], ['cx', [0, 2]], ['id', [0]], ['h', [0]], ['h', [0]], ['cx', [1, 2]]]], [7, [7, 6, 6]]], ['regression: random schedule 33', [3, 2, [['rz', [2]], ['cx', [0, 1]], ['x', [0], 'if', 0], ['barrier', [0, 1, 2]], ['x', [0], 'if', 0], ['x', [0]], ['rz', [0]], ['rz', [0]], ['id', [0]]]], [6, [6, 2, 2]]], ['regression: random schedule 14', [4, 1, [['cx', [0, 3]], ['x', [0]], ['cx', [0, 2]], ['cx', [2, 3]], ['x', [1], 'if', 0], ['cx', [3, 0]], ['cx', [1, 2]], ['id', [0]], ['barrier', [2]]]], [5, [5, 5, 5, 5]]], ['control: random schedule 5', [3, 2, [['ccx', [0, 1, 2]], ['ccx', [2, 1, 0]], ['barrier', [0, 1, 2]], ['x', [1]]]], [3, [2, 3, 2]]], ['control: random schedule 6', [4, 2, [['barrier', [2]], ['cx', [1, 2]], ['ccx', [2, 3, 0]]]], [2, [2, 1, 2, 2]]], ['control: random schedule 7', [4, 2, [['x', [2], 'if', 1], ['x', [1]], ['barrier', [2]], ['cx', [0, 1]], ['h', [2]]]], [2, [2, 2, 2, 0]]], ['control: random schedule 8', [1, 1, [['x', [0], 'if', 0], ['rz', [0]], ['rz', [0]], ['h', [0]], ['rz', [0]], ['h', [0]], ['measure', [0], [0]], ['rz', [0]]]], [8, [8]]]], [['regression: random schedule 44', [4, 2, [['id', [0]], ['cx', [3, 1]], ['x', [0]], ['ccx', [3, 0, 1]], ['cx', [2, 1]], ['cx', [2, 0]]]], [4, [4, 3, 4, 2]]], ['regression: random schedule 47', [4, 1, [['ccx', [1, 0, 3]], ['barrier', []], ['measure', [0], [0]], ['x', [3]], ['ccx', [1, 3, 0]], ['cx', [0, 1]], ['x', [2]], ['id', [0]]]], [4, [4, 4, 2, 3]]], ['regression: random schedule 29', [4, 1, [['x', [0]], ['h', [0]], ['id', [1]]]], [2, [2, 0, 0, 0]]], ['control: random schedule 9', [3, 1, [['cx', [2, 1]], ['h', [1]], ['barrier', [1, 2]]]], [2, [0, 2, 2]]], ['control: random schedule 13', [4, 2, [['cx', [3, 2]], ['x', [3]], ['ccx', [3, 1, 0]], ['ccx', [1, 0, 2]], ['h', [0]]]], [5, [5, 4, 4, 3]]], ['control: random schedule 15', [1, 2, [['barrier', [0]], ['rz', [0]], ['rz', [0]], ['x', [0], 'if', 0], ['rz', [0]], ['x', [0], 'if', 0], ['x', [0]], ['measure', [0], [1]]]], [7, [7]]], ['control: random schedule 16', [3, 1, [['x', [2], 'if', 0], ['barrier', [0, 1, 2]], ['cx', [1, 2]], ['cx', [0, 1]], ['h', [0]], ['measure', [1], [0]], ['measure', [2], [0]]]], [5, [4, 4, 5]]]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: identity is free | [3, [3]] | [1, [1]] | Failed |
| regression: random schedule 1 | [6, [6, 5, 6, 2]] | [5, [5, 4, 5, 2]] | Failed |
| regression: random schedule 2 | [8, [8]] | [7, [7]] | Failed |
| control: barrier aligns everything | [3, [2, 2, 3]] | [3, [2, 2, 3]] | Passed |
| control: partial barrier | [2, [1, 2, 1]] | [2, [1, 2, 1]] | Passed |
| control: toffoli waits on all | [4, [4, 3, 3]] | [4, [4, 3, 3]] | Passed |
| control: cx waits on target | [3, [3, 3]] | [3, [3, 3]] | Passed |
SHA-256 / ef0745a6add0a8ba483ca027dedbce84aa7ccc9de9aeaff2d0bd0a91bd6b76a6
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 7 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗Verification & scope
A deterministic bounded teaching model with a stipulated toy contract; amplitudes are rounded to fixed decimals for strict JSON output. It is not a production quantum SDK and claims no standards conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:51:32.199973+00:00.
Case digest / 4f88b84810b33f466fd816d248b2eaed6c72197258b7731f5fc67834e69868a7