FAILURE MAP
← Case archive

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.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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