FA-91066 / Quantum circuit simulation / Open access
Direction fixer reports the output position of an unroutable CNOT · case 01
For an unroutable gate at input position 1 the error names position 5 after an earlier flip expanded the output.
ROOT CAUSE
The error index is len(out), the position in the rewritten stream, not the input op index.
VERIFIED REPAIR
Report the input op index.
Unsuccessful approach: The attempted repair reports idx + 1, a one-based index where the contract is zero-based.
Case contract
Input [edges, ops]; edges are directed native CNOT pairs [c, t]. Each ["cx", c, t] is kept if [c, t] is native, else rewritten as h c, h t, cx t c, h c, h t if [t, c] is native, else the result is ["unroutable", op index]; c == t gives ["invalid", op index]. Other ops pass through. A final stack pass cancels an ["h", q] against an identical immediately preceding ["h", q].
Why this case matters
Direction fixing is a mandatory transpiler pass for devices with directed couplers; errors either break hardware constraints or bloat circuits.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
edges, ops = x
allowed = {(a, b) for a, b in edges}
out = []
for idx, op in enumerate(ops):
if op[0] != 'cx':
out.append(list(op))
continue
c, t = op[1], op[2]
if c == t:
return ['invalid', idx]
if (c, t) in allowed:
out.append(['cx', c, t])
elif (t, c) in allowed:
out += [['h', c], ['h', t], ['cx', t, c], ['h', c], ['h', t]]
else:
return ['unroutable', len(out)]
res = []
for op in out:
if op[0] == 'h' and res and res[-1] == op:
res.pop()
else:
res.append(op)
return res
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: random coupling 20', [[[1, 0], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 3], ['cx', 2, 3]]], ['unroutable', 1]], ['regression: random coupling 36', [[[0, 2], [2, 1], [1, 0]], [['h', 0], ['cx', 0, 1], ['cx', 0, 3], ['x', 0], ['h', 1]]], ['unroutable', 2]], ['repair check: unroutable pair', [[[0, 1], [1, 2], [2, 3]], [['h', 1], ['cx', 0, 2]]], ['unroutable', 1]], ['control: native direction', [[[0, 1], [1, 2], [2, 3]], [['cx', 0, 1]]], [['cx', 0, 1]]], ['control: reversed direction', [[[0, 1], [1, 2], [2, 3]], [['cx', 1, 0]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0]]], ['control: bidirectional edge', [[[0, 1], [1, 0]], [['cx', 1, 0]]], [['cx', 1, 0]]], ['control: self loop', [[[0, 1], [1, 2], [2, 3]], [['h', 0], ['cx', 2, 2]]], ['invalid', 1]]], [['regression: random coupling 50', [[[1, 2], [0, 1], [0, 2], [2, 3]], [['cx', 2, 0], ['cx', 3, 1], ['h', 0], ['h', 1], ['x', 0]]], ['unroutable', 1]], ['regression: random coupling 20', [[[1, 0], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 3], ['cx', 2, 3]]], ['unroutable', 1]], ['repair check: random coupling 3', [[[1, 0], [2, 3]], [['cx', 1, 2], ['h', 1], ['x', 2]]], ['unroutable', 0]], ['control: hadamards cancel', [[[0, 1], [1, 2], [2, 3]], [['h', 0], ['h', 0], ['x', 1]]], [['x', 1]]], ['control: hadamards on different qubits', [[[0, 1], [1, 2], [2, 3]], [['h', 0], ['h', 1]]], [['h', 0], ['h', 1]]], ['control: flip then h cancels', [[[0, 1], [1, 2], [2, 3]], [['cx', 1, 0], ['h', 0]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1]]], ['control: flip then h on target cancels', [[[0, 1], [1, 2], [2, 3]], [['cx', 1, 0], ['h', 1], ['cx', 0, 1]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0], ['h', 1], ['cx', 0, 1]]]], [['regression: random coupling 46', [[[3, 2], [2, 1], [1, 2]], [['cx', 2, 3], ['cx', 3, 0]]], ['unroutable', 1]], ['regression: random coupling 50', [[[1, 2], [0, 1], [0, 2], [2, 3]], [['cx', 2, 0], ['cx', 3, 1], ['h', 0], ['h', 1], ['x', 0]]], ['unroutable', 1]], ['repair check: random coupling 5', [[[3, 2], [0, 2], [2, 3], [1, 2]], [['cx', 1, 0], ['h', 3], ['h', 0], ['cx', 0, 3]]], ['unroutable', 0]], ['control: random coupling 1', [[[2, 3], [3, 2], [0, 1], [0, 2]], [['h', 1]]], [['h', 1]]], ['control: random coupling 2', [[[0, 2], [2, 3], [2, 1]], [['h', 3]]], [['h', 3]]], ['control: random coupling 8', [[[2, 1], [1, 2], [3, 2]], [['x', 0], ['h', 3]]], [['x', 0], ['h', 3]]], ['control: random coupling 9', [[[0, 2], [0, 1], [1, 2], [3, 2]], [['h', 1], ['cx', 0, 2]]], [['h', 1], ['cx', 0, 2]]]], [['regression: random coupling 36', [[[0, 2], [2, 1], [1, 0]], [['h', 0], ['cx', 0, 1], ['cx', 0, 3], ['x', 0], ['h', 1]]], ['unroutable', 2]], ['regression: random coupling 46', [[[3, 2], [2, 1], [1, 2]], [['cx', 2, 3], ['cx', 3, 0]]], ['unroutable', 1]], ['repair check: random coupling 7', [[[0, 1], [2, 3], [2, 1], [1, 2]], [['cx', 1, 3]]], ['unroutable', 0]], ['control: random coupling 11', [[[2, 3], [1, 2], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 2], ['h', 2], ['cx', 1, 1], ['h', 0]]], ['invalid', 3]], ['control: random coupling 16', [[[1, 2], [2, 3], [0, 2]], [['x', 0], ['cx', 0, 2], ['x', 1]]], [['x', 0], ['cx', 0, 2], ['x', 1]]], ['control: random coupling 17', [[[0, 1], [2, 1], [1, 2], [2, 3], [3, 2]], [['cx', 2, 3], ['h', 3], ['x', 0], ['h', 2]]], [['cx', 2, 3], ['h', 3], ['x', 0], ['h', 2]]], ['control: random coupling 25', [[[0, 2], [2, 1], [0, 1], [2, 3], [1, 2]], [['cx', 1, 0], ['cx', 0, 2], ['x', 1], ['x', 3], ['h', 3]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0], ['cx', 0, 2], ['x', 1], ['x', 3], ['h', 3]]]], [['regression: random coupling 20', [[[1, 0], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 3], ['cx', 2, 3]]], ['unroutable', 1]], ['regression: random coupling 36', [[[0, 2], [2, 1], [1, 0]], [['h', 0], ['cx', 0, 1], ['cx', 0, 3], ['x', 0], ['h', 1]]], ['unroutable', 2]], ['repair check: random coupling 12', [[[0, 2], [3, 2]], [['x', 2], ['cx', 3, 1], ['h', 2], ['h', 3]]], ['unroutable', 1]], ['control: random coupling 26', [[[1, 0], [0, 1]], [['x', 3]]], [['x', 3]]], ['control: random coupling 27', [[[0, 1], [1, 0], [2, 3], [3, 2]], [['cx', 2, 3], ['h', 2], ['cx', 2, 3]]], [['cx', 2, 3], ['h', 2], ['cx', 2, 3]]], ['control: random coupling 31', [[[1, 2], [1, 0], [0, 1], [0, 2]], [['cx', 1, 1]]], ['invalid', 0]], ['control: random coupling 32', [[[3, 2], [0, 2], [1, 2]], [['h', 0]]], [['h', 0]]]]]
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: random coupling 20 | ['unroutable', 5] | ['unroutable', 1] | Failed |
| regression: random coupling 36 | ['unroutable', 6] | ['unroutable', 2] | Failed |
| repair check: unroutable pair | ['unroutable', 1] | ['unroutable', 1] | Passed |
| control: native direction | [['cx', 0, 1]] | [['cx', 0, 1]] | Passed |
| control: reversed direction | [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0]] | [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0]] | Passed |
| control: bidirectional edge | [['cx', 1, 0]] | [['cx', 1, 0]] | Passed |
| control: self loop | ['invalid', 1] | ['invalid', 1] | Passed |
SHA-256 / 91fdb74339318835e593beb007e8262ccf8a9e15cdd850c4ee702680a9c39696
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
edges, ops = x
allowed = {(a, b) for a, b in edges}
out = []
for idx, op in enumerate(ops):
if op[0] != 'cx':
out.append(list(op))
continue
c, t = op[1], op[2]
if c == t:
return ['invalid', idx]
if (c, t) in allowed:
out.append(['cx', c, t])
elif (t, c) in allowed:
out += [['h', c], ['h', t], ['cx', t, c], ['h', c], ['h', t]]
else:
return ['unroutable', idx + 1]
res = []
for op in out:
if op[0] == 'h' and res and res[-1] == op:
res.pop()
else:
res.append(op)
return res
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: random coupling 20', [[[1, 0], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 3], ['cx', 2, 3]]], ['unroutable', 1]], ['regression: random coupling 36', [[[0, 2], [2, 1], [1, 0]], [['h', 0], ['cx', 0, 1], ['cx', 0, 3], ['x', 0], ['h', 1]]], ['unroutable', 2]], ['repair check: unroutable pair', [[[0, 1], [1, 2], [2, 3]], [['h', 1], ['cx', 0, 2]]], ['unroutable', 1]], ['control: native direction', [[[0, 1], [1, 2], [2, 3]], [['cx', 0, 1]]], [['cx', 0, 1]]], ['control: reversed direction', [[[0, 1], [1, 2], [2, 3]], [['cx', 1, 0]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0]]], ['control: bidirectional edge', [[[0, 1], [1, 0]], [['cx', 1, 0]]], [['cx', 1, 0]]], ['control: self loop', [[[0, 1], [1, 2], [2, 3]], [['h', 0], ['cx', 2, 2]]], ['invalid', 1]]], [['regression: random coupling 50', [[[1, 2], [0, 1], [0, 2], [2, 3]], [['cx', 2, 0], ['cx', 3, 1], ['h', 0], ['h', 1], ['x', 0]]], ['unroutable', 1]], ['regression: random coupling 20', [[[1, 0], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 3], ['cx', 2, 3]]], ['unroutable', 1]], ['repair check: random coupling 3', [[[1, 0], [2, 3]], [['cx', 1, 2], ['h', 1], ['x', 2]]], ['unroutable', 0]], ['control: hadamards cancel', [[[0, 1], [1, 2], [2, 3]], [['h', 0], ['h', 0], ['x', 1]]], [['x', 1]]], ['control: hadamards on different qubits', [[[0, 1], [1, 2], [2, 3]], [['h', 0], ['h', 1]]], [['h', 0], ['h', 1]]], ['control: flip then h cancels', [[[0, 1], [1, 2], [2, 3]], [['cx', 1, 0], ['h', 0]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1]]], ['control: flip then h on target cancels', [[[0, 1], [1, 2], [2, 3]], [['cx', 1, 0], ['h', 1], ['cx', 0, 1]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0], ['h', 1], ['cx', 0, 1]]]], [['regression: random coupling 46', [[[3, 2], [2, 1], [1, 2]], [['cx', 2, 3], ['cx', 3, 0]]], ['unroutable', 1]], ['regression: random coupling 50', [[[1, 2], [0, 1], [0, 2], [2, 3]], [['cx', 2, 0], ['cx', 3, 1], ['h', 0], ['h', 1], ['x', 0]]], ['unroutable', 1]], ['repair check: random coupling 5', [[[3, 2], [0, 2], [2, 3], [1, 2]], [['cx', 1, 0], ['h', 3], ['h', 0], ['cx', 0, 3]]], ['unroutable', 0]], ['control: random coupling 1', [[[2, 3], [3, 2], [0, 1], [0, 2]], [['h', 1]]], [['h', 1]]], ['control: random coupling 2', [[[0, 2], [2, 3], [2, 1]], [['h', 3]]], [['h', 3]]], ['control: random coupling 8', [[[2, 1], [1, 2], [3, 2]], [['x', 0], ['h', 3]]], [['x', 0], ['h', 3]]], ['control: random coupling 9', [[[0, 2], [0, 1], [1, 2], [3, 2]], [['h', 1], ['cx', 0, 2]]], [['h', 1], ['cx', 0, 2]]]], [['regression: random coupling 36', [[[0, 2], [2, 1], [1, 0]], [['h', 0], ['cx', 0, 1], ['cx', 0, 3], ['x', 0], ['h', 1]]], ['unroutable', 2]], ['regression: random coupling 46', [[[3, 2], [2, 1], [1, 2]], [['cx', 2, 3], ['cx', 3, 0]]], ['unroutable', 1]], ['repair check: random coupling 7', [[[0, 1], [2, 3], [2, 1], [1, 2]], [['cx', 1, 3]]], ['unroutable', 0]], ['control: random coupling 11', [[[2, 3], [1, 2], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 2], ['h', 2], ['cx', 1, 1], ['h', 0]]], ['invalid', 3]], ['control: random coupling 16', [[[1, 2], [2, 3], [0, 2]], [['x', 0], ['cx', 0, 2], ['x', 1]]], [['x', 0], ['cx', 0, 2], ['x', 1]]], ['control: random coupling 17', [[[0, 1], [2, 1], [1, 2], [2, 3], [3, 2]], [['cx', 2, 3], ['h', 3], ['x', 0], ['h', 2]]], [['cx', 2, 3], ['h', 3], ['x', 0], ['h', 2]]], ['control: random coupling 25', [[[0, 2], [2, 1], [0, 1], [2, 3], [1, 2]], [['cx', 1, 0], ['cx', 0, 2], ['x', 1], ['x', 3], ['h', 3]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0], ['cx', 0, 2], ['x', 1], ['x', 3], ['h', 3]]]], [['regression: random coupling 20', [[[1, 0], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 3], ['cx', 2, 3]]], ['unroutable', 1]], ['regression: random coupling 36', [[[0, 2], [2, 1], [1, 0]], [['h', 0], ['cx', 0, 1], ['cx', 0, 3], ['x', 0], ['h', 1]]], ['unroutable', 2]], ['repair check: random coupling 12', [[[0, 2], [3, 2]], [['x', 2], ['cx', 3, 1], ['h', 2], ['h', 3]]], ['unroutable', 1]], ['control: random coupling 26', [[[1, 0], [0, 1]], [['x', 3]]], [['x', 3]]], ['control: random coupling 27', [[[0, 1], [1, 0], [2, 3], [3, 2]], [['cx', 2, 3], ['h', 2], ['cx', 2, 3]]], [['cx', 2, 3], ['h', 2], ['cx', 2, 3]]], ['control: random coupling 31', [[[1, 2], [1, 0], [0, 1], [0, 2]], [['cx', 1, 1]]], ['invalid', 0]], ['control: random coupling 32', [[[3, 2], [0, 2], [1, 2]], [['h', 0]]], [['h', 0]]]]]
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: random coupling 20 | ['unroutable', 2] | ['unroutable', 1] | Failed |
| regression: random coupling 36 | ['unroutable', 3] | ['unroutable', 2] | Failed |
| repair check: unroutable pair | ['unroutable', 2] | ['unroutable', 1] | Failed |
| control: native direction | [['cx', 0, 1]] | [['cx', 0, 1]] | Passed |
| control: reversed direction | [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0]] | [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0]] | Passed |
| control: bidirectional edge | [['cx', 1, 0]] | [['cx', 1, 0]] | Passed |
| control: self loop | ['invalid', 1] | ['invalid', 1] | Passed |
SHA-256 / 163da793ed56680277d2cd0cc61c5713f6577efe23bf336c847f7bf309fa2c2d
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
edges, ops = x
allowed = {(a, b) for a, b in edges}
out = []
for idx, op in enumerate(ops):
if op[0] != 'cx':
out.append(list(op))
continue
c, t = op[1], op[2]
if c == t:
return ['invalid', idx]
if (c, t) in allowed:
out.append(['cx', c, t])
elif (t, c) in allowed:
out += [['h', c], ['h', t], ['cx', t, c], ['h', c], ['h', t]]
else:
return ['unroutable', idx]
res = []
for op in out:
if op[0] == 'h' and res and res[-1] == op:
res.pop()
else:
res.append(op)
return res
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: random coupling 20', [[[1, 0], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 3], ['cx', 2, 3]]], ['unroutable', 1]], ['regression: random coupling 36', [[[0, 2], [2, 1], [1, 0]], [['h', 0], ['cx', 0, 1], ['cx', 0, 3], ['x', 0], ['h', 1]]], ['unroutable', 2]], ['repair check: unroutable pair', [[[0, 1], [1, 2], [2, 3]], [['h', 1], ['cx', 0, 2]]], ['unroutable', 1]], ['control: native direction', [[[0, 1], [1, 2], [2, 3]], [['cx', 0, 1]]], [['cx', 0, 1]]], ['control: reversed direction', [[[0, 1], [1, 2], [2, 3]], [['cx', 1, 0]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0]]], ['control: bidirectional edge', [[[0, 1], [1, 0]], [['cx', 1, 0]]], [['cx', 1, 0]]], ['control: self loop', [[[0, 1], [1, 2], [2, 3]], [['h', 0], ['cx', 2, 2]]], ['invalid', 1]]], [['regression: random coupling 50', [[[1, 2], [0, 1], [0, 2], [2, 3]], [['cx', 2, 0], ['cx', 3, 1], ['h', 0], ['h', 1], ['x', 0]]], ['unroutable', 1]], ['regression: random coupling 20', [[[1, 0], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 3], ['cx', 2, 3]]], ['unroutable', 1]], ['repair check: random coupling 3', [[[1, 0], [2, 3]], [['cx', 1, 2], ['h', 1], ['x', 2]]], ['unroutable', 0]], ['control: hadamards cancel', [[[0, 1], [1, 2], [2, 3]], [['h', 0], ['h', 0], ['x', 1]]], [['x', 1]]], ['control: hadamards on different qubits', [[[0, 1], [1, 2], [2, 3]], [['h', 0], ['h', 1]]], [['h', 0], ['h', 1]]], ['control: flip then h cancels', [[[0, 1], [1, 2], [2, 3]], [['cx', 1, 0], ['h', 0]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1]]], ['control: flip then h on target cancels', [[[0, 1], [1, 2], [2, 3]], [['cx', 1, 0], ['h', 1], ['cx', 0, 1]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0], ['h', 1], ['cx', 0, 1]]]], [['regression: random coupling 46', [[[3, 2], [2, 1], [1, 2]], [['cx', 2, 3], ['cx', 3, 0]]], ['unroutable', 1]], ['regression: random coupling 50', [[[1, 2], [0, 1], [0, 2], [2, 3]], [['cx', 2, 0], ['cx', 3, 1], ['h', 0], ['h', 1], ['x', 0]]], ['unroutable', 1]], ['repair check: random coupling 5', [[[3, 2], [0, 2], [2, 3], [1, 2]], [['cx', 1, 0], ['h', 3], ['h', 0], ['cx', 0, 3]]], ['unroutable', 0]], ['control: random coupling 1', [[[2, 3], [3, 2], [0, 1], [0, 2]], [['h', 1]]], [['h', 1]]], ['control: random coupling 2', [[[0, 2], [2, 3], [2, 1]], [['h', 3]]], [['h', 3]]], ['control: random coupling 8', [[[2, 1], [1, 2], [3, 2]], [['x', 0], ['h', 3]]], [['x', 0], ['h', 3]]], ['control: random coupling 9', [[[0, 2], [0, 1], [1, 2], [3, 2]], [['h', 1], ['cx', 0, 2]]], [['h', 1], ['cx', 0, 2]]]], [['regression: random coupling 36', [[[0, 2], [2, 1], [1, 0]], [['h', 0], ['cx', 0, 1], ['cx', 0, 3], ['x', 0], ['h', 1]]], ['unroutable', 2]], ['regression: random coupling 46', [[[3, 2], [2, 1], [1, 2]], [['cx', 2, 3], ['cx', 3, 0]]], ['unroutable', 1]], ['repair check: random coupling 7', [[[0, 1], [2, 3], [2, 1], [1, 2]], [['cx', 1, 3]]], ['unroutable', 0]], ['control: random coupling 11', [[[2, 3], [1, 2], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 2], ['h', 2], ['cx', 1, 1], ['h', 0]]], ['invalid', 3]], ['control: random coupling 16', [[[1, 2], [2, 3], [0, 2]], [['x', 0], ['cx', 0, 2], ['x', 1]]], [['x', 0], ['cx', 0, 2], ['x', 1]]], ['control: random coupling 17', [[[0, 1], [2, 1], [1, 2], [2, 3], [3, 2]], [['cx', 2, 3], ['h', 3], ['x', 0], ['h', 2]]], [['cx', 2, 3], ['h', 3], ['x', 0], ['h', 2]]], ['control: random coupling 25', [[[0, 2], [2, 1], [0, 1], [2, 3], [1, 2]], [['cx', 1, 0], ['cx', 0, 2], ['x', 1], ['x', 3], ['h', 3]]], [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0], ['cx', 0, 2], ['x', 1], ['x', 3], ['h', 3]]]], [['regression: random coupling 20', [[[1, 0], [3, 2], [0, 2]], [['cx', 2, 3], ['cx', 0, 3], ['cx', 2, 3]]], ['unroutable', 1]], ['regression: random coupling 36', [[[0, 2], [2, 1], [1, 0]], [['h', 0], ['cx', 0, 1], ['cx', 0, 3], ['x', 0], ['h', 1]]], ['unroutable', 2]], ['repair check: random coupling 12', [[[0, 2], [3, 2]], [['x', 2], ['cx', 3, 1], ['h', 2], ['h', 3]]], ['unroutable', 1]], ['control: random coupling 26', [[[1, 0], [0, 1]], [['x', 3]]], [['x', 3]]], ['control: random coupling 27', [[[0, 1], [1, 0], [2, 3], [3, 2]], [['cx', 2, 3], ['h', 2], ['cx', 2, 3]]], [['cx', 2, 3], ['h', 2], ['cx', 2, 3]]], ['control: random coupling 31', [[[1, 2], [1, 0], [0, 1], [0, 2]], [['cx', 1, 1]]], ['invalid', 0]], ['control: random coupling 32', [[[3, 2], [0, 2], [1, 2]], [['h', 0]]], [['h', 0]]]]]
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: random coupling 20 | ['unroutable', 1] | ['unroutable', 1] | Passed |
| regression: random coupling 36 | ['unroutable', 2] | ['unroutable', 2] | Passed |
| repair check: unroutable pair | ['unroutable', 1] | ['unroutable', 1] | Passed |
| control: native direction | [['cx', 0, 1]] | [['cx', 0, 1]] | Passed |
| control: reversed direction | [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0]] | [['h', 1], ['h', 0], ['cx', 0, 1], ['h', 1], ['h', 0]] | Passed |
| control: bidirectional edge | [['cx', 1, 0]] | [['cx', 1, 0]] | Passed |
| control: self loop | ['invalid', 1] | ['invalid', 1] | Passed |
SHA-256 / e5b1f64ca7175036b524143144df524e05b123e2087428adea6fc39362fd4450
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.423345+00:00.
Case digest / 9333d7e282e63e4114f69a99f01d03f4bca2de7aa90d3bbdb4ec17063ed5882e