FAILURE MAP
← Case archive

FA-90986 / Quantum circuit simulation / Open access

Tableau Hadamard skips the Y sign flip · case 01

H S H on |0> reports stabilizer +Y instead of -Y.

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

ROOT CAUSE

The Hadamard rule swaps the x and z bits but never toggles the sign bit when both are set (H Y H = -Y).

VERIFIED REPAIR

XOR the sign with x & z before swapping the bits.

Unsuccessful approach: The attempted repair toggles the sign with x | z, flipping the sign of every X or Z generator too.

Case contract

Input [n, gates] with gates h, s, x, z (["g", q]) and cx (["cx", c, t]). Track the n stabilizer generators of |0...0> (initially Z on each qubit) under the Aaronson-Gottesman update rules and return them as signed strings such as "+XX", character q describing qubit q.

Why this case matters

Stabilizer simulators verify Clifford circuits and error-correction encoders; a phase-bit rule error yields wrong syndromes.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    n, gates = x
    xs = [[0] * n for _ in range(n)]
    zs = [[1 if i == j else 0 for j in range(n)] for i in range(n)]
    rs = [0] * n
    for g in gates:
        op = g[0]
        for row in range(n):
            X, Z = xs[row], zs[row]
            if op == 'h':
                a = g[1]
                X[a], Z[a] = Z[a], X[a]
            elif op == 's':
                a = g[1]
                rs[row] ^= X[a] & Z[a]
                Z[a] ^= X[a]
            elif op == 'x':
                rs[row] ^= Z[g[1]]
            elif op == 'z':
                rs[row] ^= X[g[1]]
            elif op == 'cx':
                a, b = g[1], g[2]
                rs[row] ^= X[a] & Z[b] & (X[b] ^ Z[a] ^ 1)
                X[b] ^= X[a]
                Z[a] ^= Z[b]
    letters = {(0, 0): 'I', (1, 0): 'X', (0, 1): 'Z', (1, 1): 'Y'}
    return [('-' if rs[r] else '+') + ''.join(letters[(xs[r][q], zs[r][q])] for q in range(n)) for r in range(n)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: h on y eigenstate', [1, [['h', 0], ['s', 0], ['h', 0]]], ['-Y']], ['regression: random clifford 4', [3, [['cx', 1, 2], ['h', 1], ['cx', 1, 0], ['s', 1], ['x', 2], ['cx', 1, 2], ['cx', 1, 2], ['h', 0], ['cx', 0, 2], ['z', 0], ['s', 2], ['h', 2], ['z', 0]]], ['-XZY', '+ZYI', '-IYX']], ['repair check: bell preparation', [2, [['h', 0], ['cx', 0, 1]]], ['+XX', '+ZZ']], ['control: x flips z sign', [1, [['x', 0]]], ['-Z']], ['control: cx on excited control', [2, [['x', 0], ['cx', 0, 1]]], ['-ZI', '+ZZ']], ['control: random clifford 0', [3, [['cx', 1, 2]]], ['+ZII', '+IZI', '+IZZ']], ['control: random clifford 1', [1, [['z', 0], ['s', 0], ['x', 0], ['x', 0], ['x', 0], ['z', 0], ['z', 0], ['z', 0]]], ['-Z']]], [['regression: random clifford 26', [1, [['x', 0], ['h', 0], ['x', 0], ['h', 0], ['s', 0], ['h', 0], ['s', 0], ['h', 0], ['s', 0], ['s', 0], ['x', 0]]], ['+Y']], ['regression: random clifford 28', [3, [['h', 1], ['cx', 0, 1], ['h', 0], ['cx', 2, 1], ['z', 0], ['x', 0], ['cx', 2, 1], ['h', 1], ['h', 2], ['s', 0], ['h', 0], ['cx', 1, 2]]], ['+YII', '+IZI', '+IIX']], ['repair check: s twice after h', [1, [['h', 0], ['s', 0], ['s', 0]]], ['-X']], ['control: random clifford 3', [1, [['s', 0], ['h', 0], ['h', 0], ['x', 0], ['h', 0], ['h', 0], ['s', 0], ['s', 0]]], ['-Z']], ['control: random clifford 5', [1, [['h', 0], ['h', 0], ['h', 0], ['h', 0], ['z', 0], ['s', 0], ['s', 0], ['s', 0], ['x', 0], ['h', 0], ['x', 0], ['h', 0]]], ['-Z']], ['control: random clifford 6', [1, [['h', 0], ['z', 0], ['h', 0], ['z', 0], ['x', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['s', 0], ['x', 0]]], ['-Z']], ['control: random clifford 10', [1, [['z', 0], ['z', 0], ['s', 0], ['z', 0], ['h', 0], ['h', 0], ['s', 0]]], ['+Z']]], [['regression: random clifford 41', [3, [['s', 2], ['s', 0], ['s', 1], ['cx', 1, 2], ['h', 1], ['cx', 2, 1], ['cx', 1, 2], ['h', 1], ['s', 2], ['cx', 1, 0]]], ['+ZZI', '+IZY', '-XYX']], ['regression: random clifford 42', [3, [['h', 2], ['cx', 1, 0], ['h', 2], ['s', 1], ['h', 0], ['cx', 2, 1], ['x', 2], ['x', 2], ['cx', 0, 2], ['h', 0], ['cx', 0, 2]]], ['-XZZ', '-YZY', '-YIY']], ['repair check: ghz', [3, [['h', 0], ['cx', 0, 1], ['cx', 0, 2]]], ['+XXX', '+ZZI', '+ZIZ']], ['control: random clifford 16', [1, [['x', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['z', 0], ['z', 0], ['h', 0], ['x', 0], ['h', 0]]], ['-Z']], ['control: random clifford 21', [3, [['h', 0], ['s', 2], ['s', 1], ['h', 0], ['cx', 0, 2], ['cx', 0, 2], ['cx', 1, 2], ['h', 1], ['h', 1], ['cx', 2, 1]]], ['+ZII', '+IZZ', '+IZI']], ['control: random clifford 24', [1, [['x', 0]]], ['-Z']], ['control: random clifford 25', [2, [['cx', 1, 0], ['cx', 1, 0]]], ['+ZI', '+IZ']]], [['regression: random clifford 4', [3, [['cx', 1, 2], ['h', 1], ['cx', 1, 0], ['s', 1], ['x', 2], ['cx', 1, 2], ['cx', 1, 2], ['h', 0], ['cx', 0, 2], ['z', 0], ['s', 2], ['h', 2], ['z', 0]]], ['-XZY', '+ZYI', '-IYX']], ['regression: random clifford 12', [1, [['h', 0], ['s', 0], ['h', 0], ['x', 0], ['s', 0], ['x', 0], ['x', 0], ['z', 0], ['h', 0], ['s', 0], ['s', 0]]], ['+Z']], ['repair check: random clifford 2', [3, [['cx', 0, 2], ['z', 2], ['s', 2], ['h', 0], ['cx', 2, 1], ['x', 1], ['cx', 1, 0], ['x', 1], ['x', 1], ['z', 0], ['cx', 2, 1], ['h', 1], ['h', 0]]], ['-ZII', '-IXI', '-ZIZ']], ['control: random clifford 32', [3, [['z', 1], ['x', 1], ['cx', 1, 0], ['cx', 1, 2], ['cx', 2, 1], ['x', 0], ['cx', 1, 2], ['z', 1], ['z', 1], ['cx', 2, 1], ['z', 2], ['x', 0], ['cx', 0, 2]]], ['+IIZ', '-ZIZ', '+ZZZ']], ['control: random clifford 34', [1, [['z', 0], ['h', 0], ['z', 0], ['h', 0]]], ['-Z']], ['control: random clifford 40', [1, [['h', 0], ['x', 0], ['z', 0], ['s', 0], ['s', 0], ['x', 0], ['x', 0], ['x', 0], ['h', 0]]], ['+Z']], ['control: random clifford 43', [1, [['h', 0], ['x', 0], ['h', 0], ['z', 0], ['x', 0], ['x', 0], ['s', 0]]], ['+Z']]], [['regression: random clifford 28', [3, [['h', 1], ['cx', 0, 1], ['h', 0], ['cx', 2, 1], ['z', 0], ['x', 0], ['cx', 2, 1], ['h', 1], ['h', 2], ['s', 0], ['h', 0], ['cx', 1, 2]]], ['+YII', '+IZI', '+IIX']], ['regression: random clifford 37', [3, [['z', 0], ['cx', 0, 2], ['s', 1], ['z', 1], ['h', 2], ['cx', 0, 1], ['s', 2], ['cx', 1, 0], ['h', 2], ['cx', 1, 0]]], ['+ZII', '+ZZI', '-ZIY']], ['repair check: random clifford 7', [3, [['cx', 0, 2], ['cx', 2, 1], ['s', 0], ['cx', 0, 2], ['cx', 2, 1], ['z', 1], ['z', 0], ['h', 1], ['x', 1]]], ['+ZII', '+ZXI', '+IIZ']], ['control: random clifford 45', [2, [['z', 1], ['h', 0], ['cx', 0, 1], ['cx', 1, 0], ['cx', 0, 1], ['s', 1], ['z', 0], ['h', 0], ['s', 1], ['z', 1], ['cx', 0, 1], ['h', 1], ['cx', 0, 1], ['z', 1]]], ['+ZZ', '+YY']], ['control: random clifford 46', [3, [['s', 0], ['z', 0]]], ['+ZII', '+IZI', '+IIZ']], ['control: random clifford 47', [2, [['cx', 1, 0], ['x', 1], ['z', 1], ['h', 0], ['x', 1], ['cx', 1, 0], ['cx', 0, 1], ['cx', 1, 0], ['z', 0], ['z', 1], ['h', 1], ['s', 1], ['z', 0], ['cx', 0, 1]]], ['-IZ', '+ZI']], ['control: random clifford 48', [2, [['x', 0], ['z', 0], ['x', 1], ['h', 0], ['h', 1], ['h', 1], ['z', 1], ['cx', 1, 0], ['h', 0], ['s', 0]]], ['-ZI', '-IZ']]]]
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: h on y eigenstate['+Y']['-Y']Failed
regression: random clifford 4['+XZY', '+ZYI', '-IYX']['-XZY', '+ZYI', '-IYX']Failed
repair check: bell preparation['+XX', '+ZZ']['+XX', '+ZZ']Passed
control: x flips z sign['-Z']['-Z']Passed
control: cx on excited control['-ZI', '+ZZ']['-ZI', '+ZZ']Passed
control: random clifford 0['+ZII', '+IZI', '+IZZ']['+ZII', '+IZI', '+IZZ']Passed
control: random clifford 1['-Z']['-Z']Passed

SHA-256 / 6db5139ede43345d0b6526d09c4ea260da79f1a42040c9cea1cef9a2934adc4b

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    n, gates = x
    xs = [[0] * n for _ in range(n)]
    zs = [[1 if i == j else 0 for j in range(n)] for i in range(n)]
    rs = [0] * n
    for g in gates:
        op = g[0]
        for row in range(n):
            X, Z = xs[row], zs[row]
            if op == 'h':
                a = g[1]
                rs[row] ^= X[a] | Z[a]
                X[a], Z[a] = Z[a], X[a]
            elif op == 's':
                a = g[1]
                rs[row] ^= X[a] & Z[a]
                Z[a] ^= X[a]
            elif op == 'x':
                rs[row] ^= Z[g[1]]
            elif op == 'z':
                rs[row] ^= X[g[1]]
            elif op == 'cx':
                a, b = g[1], g[2]
                rs[row] ^= X[a] & Z[b] & (X[b] ^ Z[a] ^ 1)
                X[b] ^= X[a]
                Z[a] ^= Z[b]
    letters = {(0, 0): 'I', (1, 0): 'X', (0, 1): 'Z', (1, 1): 'Y'}
    return [('-' if rs[r] else '+') + ''.join(letters[(xs[r][q], zs[r][q])] for q in range(n)) for r in range(n)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: h on y eigenstate', [1, [['h', 0], ['s', 0], ['h', 0]]], ['-Y']], ['regression: random clifford 4', [3, [['cx', 1, 2], ['h', 1], ['cx', 1, 0], ['s', 1], ['x', 2], ['cx', 1, 2], ['cx', 1, 2], ['h', 0], ['cx', 0, 2], ['z', 0], ['s', 2], ['h', 2], ['z', 0]]], ['-XZY', '+ZYI', '-IYX']], ['repair check: bell preparation', [2, [['h', 0], ['cx', 0, 1]]], ['+XX', '+ZZ']], ['control: x flips z sign', [1, [['x', 0]]], ['-Z']], ['control: cx on excited control', [2, [['x', 0], ['cx', 0, 1]]], ['-ZI', '+ZZ']], ['control: random clifford 0', [3, [['cx', 1, 2]]], ['+ZII', '+IZI', '+IZZ']], ['control: random clifford 1', [1, [['z', 0], ['s', 0], ['x', 0], ['x', 0], ['x', 0], ['z', 0], ['z', 0], ['z', 0]]], ['-Z']]], [['regression: random clifford 26', [1, [['x', 0], ['h', 0], ['x', 0], ['h', 0], ['s', 0], ['h', 0], ['s', 0], ['h', 0], ['s', 0], ['s', 0], ['x', 0]]], ['+Y']], ['regression: random clifford 28', [3, [['h', 1], ['cx', 0, 1], ['h', 0], ['cx', 2, 1], ['z', 0], ['x', 0], ['cx', 2, 1], ['h', 1], ['h', 2], ['s', 0], ['h', 0], ['cx', 1, 2]]], ['+YII', '+IZI', '+IIX']], ['repair check: s twice after h', [1, [['h', 0], ['s', 0], ['s', 0]]], ['-X']], ['control: random clifford 3', [1, [['s', 0], ['h', 0], ['h', 0], ['x', 0], ['h', 0], ['h', 0], ['s', 0], ['s', 0]]], ['-Z']], ['control: random clifford 5', [1, [['h', 0], ['h', 0], ['h', 0], ['h', 0], ['z', 0], ['s', 0], ['s', 0], ['s', 0], ['x', 0], ['h', 0], ['x', 0], ['h', 0]]], ['-Z']], ['control: random clifford 6', [1, [['h', 0], ['z', 0], ['h', 0], ['z', 0], ['x', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['s', 0], ['x', 0]]], ['-Z']], ['control: random clifford 10', [1, [['z', 0], ['z', 0], ['s', 0], ['z', 0], ['h', 0], ['h', 0], ['s', 0]]], ['+Z']]], [['regression: random clifford 41', [3, [['s', 2], ['s', 0], ['s', 1], ['cx', 1, 2], ['h', 1], ['cx', 2, 1], ['cx', 1, 2], ['h', 1], ['s', 2], ['cx', 1, 0]]], ['+ZZI', '+IZY', '-XYX']], ['regression: random clifford 42', [3, [['h', 2], ['cx', 1, 0], ['h', 2], ['s', 1], ['h', 0], ['cx', 2, 1], ['x', 2], ['x', 2], ['cx', 0, 2], ['h', 0], ['cx', 0, 2]]], ['-XZZ', '-YZY', '-YIY']], ['repair check: ghz', [3, [['h', 0], ['cx', 0, 1], ['cx', 0, 2]]], ['+XXX', '+ZZI', '+ZIZ']], ['control: random clifford 16', [1, [['x', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['z', 0], ['z', 0], ['h', 0], ['x', 0], ['h', 0]]], ['-Z']], ['control: random clifford 21', [3, [['h', 0], ['s', 2], ['s', 1], ['h', 0], ['cx', 0, 2], ['cx', 0, 2], ['cx', 1, 2], ['h', 1], ['h', 1], ['cx', 2, 1]]], ['+ZII', '+IZZ', '+IZI']], ['control: random clifford 24', [1, [['x', 0]]], ['-Z']], ['control: random clifford 25', [2, [['cx', 1, 0], ['cx', 1, 0]]], ['+ZI', '+IZ']]], [['regression: random clifford 4', [3, [['cx', 1, 2], ['h', 1], ['cx', 1, 0], ['s', 1], ['x', 2], ['cx', 1, 2], ['cx', 1, 2], ['h', 0], ['cx', 0, 2], ['z', 0], ['s', 2], ['h', 2], ['z', 0]]], ['-XZY', '+ZYI', '-IYX']], ['regression: random clifford 12', [1, [['h', 0], ['s', 0], ['h', 0], ['x', 0], ['s', 0], ['x', 0], ['x', 0], ['z', 0], ['h', 0], ['s', 0], ['s', 0]]], ['+Z']], ['repair check: random clifford 2', [3, [['cx', 0, 2], ['z', 2], ['s', 2], ['h', 0], ['cx', 2, 1], ['x', 1], ['cx', 1, 0], ['x', 1], ['x', 1], ['z', 0], ['cx', 2, 1], ['h', 1], ['h', 0]]], ['-ZII', '-IXI', '-ZIZ']], ['control: random clifford 32', [3, [['z', 1], ['x', 1], ['cx', 1, 0], ['cx', 1, 2], ['cx', 2, 1], ['x', 0], ['cx', 1, 2], ['z', 1], ['z', 1], ['cx', 2, 1], ['z', 2], ['x', 0], ['cx', 0, 2]]], ['+IIZ', '-ZIZ', '+ZZZ']], ['control: random clifford 34', [1, [['z', 0], ['h', 0], ['z', 0], ['h', 0]]], ['-Z']], ['control: random clifford 40', [1, [['h', 0], ['x', 0], ['z', 0], ['s', 0], ['s', 0], ['x', 0], ['x', 0], ['x', 0], ['h', 0]]], ['+Z']], ['control: random clifford 43', [1, [['h', 0], ['x', 0], ['h', 0], ['z', 0], ['x', 0], ['x', 0], ['s', 0]]], ['+Z']]], [['regression: random clifford 28', [3, [['h', 1], ['cx', 0, 1], ['h', 0], ['cx', 2, 1], ['z', 0], ['x', 0], ['cx', 2, 1], ['h', 1], ['h', 2], ['s', 0], ['h', 0], ['cx', 1, 2]]], ['+YII', '+IZI', '+IIX']], ['regression: random clifford 37', [3, [['z', 0], ['cx', 0, 2], ['s', 1], ['z', 1], ['h', 2], ['cx', 0, 1], ['s', 2], ['cx', 1, 0], ['h', 2], ['cx', 1, 0]]], ['+ZII', '+ZZI', '-ZIY']], ['repair check: random clifford 7', [3, [['cx', 0, 2], ['cx', 2, 1], ['s', 0], ['cx', 0, 2], ['cx', 2, 1], ['z', 1], ['z', 0], ['h', 1], ['x', 1]]], ['+ZII', '+ZXI', '+IIZ']], ['control: random clifford 45', [2, [['z', 1], ['h', 0], ['cx', 0, 1], ['cx', 1, 0], ['cx', 0, 1], ['s', 1], ['z', 0], ['h', 0], ['s', 1], ['z', 1], ['cx', 0, 1], ['h', 1], ['cx', 0, 1], ['z', 1]]], ['+ZZ', '+YY']], ['control: random clifford 46', [3, [['s', 0], ['z', 0]]], ['+ZII', '+IZI', '+IIZ']], ['control: random clifford 47', [2, [['cx', 1, 0], ['x', 1], ['z', 1], ['h', 0], ['x', 1], ['cx', 1, 0], ['cx', 0, 1], ['cx', 1, 0], ['z', 0], ['z', 1], ['h', 1], ['s', 1], ['z', 0], ['cx', 0, 1]]], ['-IZ', '+ZI']], ['control: random clifford 48', [2, [['x', 0], ['z', 0], ['x', 1], ['h', 0], ['h', 1], ['h', 1], ['z', 1], ['cx', 1, 0], ['h', 0], ['s', 0]]], ['-ZI', '-IZ']]]]
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: h on y eigenstate['+Y']['-Y']Failed
regression: random clifford 4['+XZY', '+ZYI', '+IYX']['-XZY', '+ZYI', '-IYX']Failed
repair check: bell preparation['-XX', '+ZZ']['+XX', '+ZZ']Failed
control: x flips z sign['-Z']['-Z']Passed
control: cx on excited control['-ZI', '+ZZ']['-ZI', '+ZZ']Passed
control: random clifford 0['+ZII', '+IZI', '+IZZ']['+ZII', '+IZI', '+IZZ']Passed
control: random clifford 1['-Z']['-Z']Passed

SHA-256 / d58802ad786bd970544e431e31ff5ab4a77fbaff50932848716c2bd86321aed1

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(x):
    n, gates = x
    xs = [[0] * n for _ in range(n)]
    zs = [[1 if i == j else 0 for j in range(n)] for i in range(n)]
    rs = [0] * n
    for g in gates:
        op = g[0]
        for row in range(n):
            X, Z = xs[row], zs[row]
            if op == 'h':
                a = g[1]
                rs[row] ^= X[a] & Z[a]
                X[a], Z[a] = Z[a], X[a]
            elif op == 's':
                a = g[1]
                rs[row] ^= X[a] & Z[a]
                Z[a] ^= X[a]
            elif op == 'x':
                rs[row] ^= Z[g[1]]
            elif op == 'z':
                rs[row] ^= X[g[1]]
            elif op == 'cx':
                a, b = g[1], g[2]
                rs[row] ^= X[a] & Z[b] & (X[b] ^ Z[a] ^ 1)
                X[b] ^= X[a]
                Z[a] ^= Z[b]
    letters = {(0, 0): 'I', (1, 0): 'X', (0, 1): 'Z', (1, 1): 'Y'}
    return [('-' if rs[r] else '+') + ''.join(letters[(xs[r][q], zs[r][q])] for q in range(n)) for r in range(n)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: h on y eigenstate', [1, [['h', 0], ['s', 0], ['h', 0]]], ['-Y']], ['regression: random clifford 4', [3, [['cx', 1, 2], ['h', 1], ['cx', 1, 0], ['s', 1], ['x', 2], ['cx', 1, 2], ['cx', 1, 2], ['h', 0], ['cx', 0, 2], ['z', 0], ['s', 2], ['h', 2], ['z', 0]]], ['-XZY', '+ZYI', '-IYX']], ['repair check: bell preparation', [2, [['h', 0], ['cx', 0, 1]]], ['+XX', '+ZZ']], ['control: x flips z sign', [1, [['x', 0]]], ['-Z']], ['control: cx on excited control', [2, [['x', 0], ['cx', 0, 1]]], ['-ZI', '+ZZ']], ['control: random clifford 0', [3, [['cx', 1, 2]]], ['+ZII', '+IZI', '+IZZ']], ['control: random clifford 1', [1, [['z', 0], ['s', 0], ['x', 0], ['x', 0], ['x', 0], ['z', 0], ['z', 0], ['z', 0]]], ['-Z']]], [['regression: random clifford 26', [1, [['x', 0], ['h', 0], ['x', 0], ['h', 0], ['s', 0], ['h', 0], ['s', 0], ['h', 0], ['s', 0], ['s', 0], ['x', 0]]], ['+Y']], ['regression: random clifford 28', [3, [['h', 1], ['cx', 0, 1], ['h', 0], ['cx', 2, 1], ['z', 0], ['x', 0], ['cx', 2, 1], ['h', 1], ['h', 2], ['s', 0], ['h', 0], ['cx', 1, 2]]], ['+YII', '+IZI', '+IIX']], ['repair check: s twice after h', [1, [['h', 0], ['s', 0], ['s', 0]]], ['-X']], ['control: random clifford 3', [1, [['s', 0], ['h', 0], ['h', 0], ['x', 0], ['h', 0], ['h', 0], ['s', 0], ['s', 0]]], ['-Z']], ['control: random clifford 5', [1, [['h', 0], ['h', 0], ['h', 0], ['h', 0], ['z', 0], ['s', 0], ['s', 0], ['s', 0], ['x', 0], ['h', 0], ['x', 0], ['h', 0]]], ['-Z']], ['control: random clifford 6', [1, [['h', 0], ['z', 0], ['h', 0], ['z', 0], ['x', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['s', 0], ['x', 0]]], ['-Z']], ['control: random clifford 10', [1, [['z', 0], ['z', 0], ['s', 0], ['z', 0], ['h', 0], ['h', 0], ['s', 0]]], ['+Z']]], [['regression: random clifford 41', [3, [['s', 2], ['s', 0], ['s', 1], ['cx', 1, 2], ['h', 1], ['cx', 2, 1], ['cx', 1, 2], ['h', 1], ['s', 2], ['cx', 1, 0]]], ['+ZZI', '+IZY', '-XYX']], ['regression: random clifford 42', [3, [['h', 2], ['cx', 1, 0], ['h', 2], ['s', 1], ['h', 0], ['cx', 2, 1], ['x', 2], ['x', 2], ['cx', 0, 2], ['h', 0], ['cx', 0, 2]]], ['-XZZ', '-YZY', '-YIY']], ['repair check: ghz', [3, [['h', 0], ['cx', 0, 1], ['cx', 0, 2]]], ['+XXX', '+ZZI', '+ZIZ']], ['control: random clifford 16', [1, [['x', 0], ['h', 0], ['h', 0], ['h', 0], ['h', 0], ['z', 0], ['z', 0], ['h', 0], ['x', 0], ['h', 0]]], ['-Z']], ['control: random clifford 21', [3, [['h', 0], ['s', 2], ['s', 1], ['h', 0], ['cx', 0, 2], ['cx', 0, 2], ['cx', 1, 2], ['h', 1], ['h', 1], ['cx', 2, 1]]], ['+ZII', '+IZZ', '+IZI']], ['control: random clifford 24', [1, [['x', 0]]], ['-Z']], ['control: random clifford 25', [2, [['cx', 1, 0], ['cx', 1, 0]]], ['+ZI', '+IZ']]], [['regression: random clifford 4', [3, [['cx', 1, 2], ['h', 1], ['cx', 1, 0], ['s', 1], ['x', 2], ['cx', 1, 2], ['cx', 1, 2], ['h', 0], ['cx', 0, 2], ['z', 0], ['s', 2], ['h', 2], ['z', 0]]], ['-XZY', '+ZYI', '-IYX']], ['regression: random clifford 12', [1, [['h', 0], ['s', 0], ['h', 0], ['x', 0], ['s', 0], ['x', 0], ['x', 0], ['z', 0], ['h', 0], ['s', 0], ['s', 0]]], ['+Z']], ['repair check: random clifford 2', [3, [['cx', 0, 2], ['z', 2], ['s', 2], ['h', 0], ['cx', 2, 1], ['x', 1], ['cx', 1, 0], ['x', 1], ['x', 1], ['z', 0], ['cx', 2, 1], ['h', 1], ['h', 0]]], ['-ZII', '-IXI', '-ZIZ']], ['control: random clifford 32', [3, [['z', 1], ['x', 1], ['cx', 1, 0], ['cx', 1, 2], ['cx', 2, 1], ['x', 0], ['cx', 1, 2], ['z', 1], ['z', 1], ['cx', 2, 1], ['z', 2], ['x', 0], ['cx', 0, 2]]], ['+IIZ', '-ZIZ', '+ZZZ']], ['control: random clifford 34', [1, [['z', 0], ['h', 0], ['z', 0], ['h', 0]]], ['-Z']], ['control: random clifford 40', [1, [['h', 0], ['x', 0], ['z', 0], ['s', 0], ['s', 0], ['x', 0], ['x', 0], ['x', 0], ['h', 0]]], ['+Z']], ['control: random clifford 43', [1, [['h', 0], ['x', 0], ['h', 0], ['z', 0], ['x', 0], ['x', 0], ['s', 0]]], ['+Z']]], [['regression: random clifford 28', [3, [['h', 1], ['cx', 0, 1], ['h', 0], ['cx', 2, 1], ['z', 0], ['x', 0], ['cx', 2, 1], ['h', 1], ['h', 2], ['s', 0], ['h', 0], ['cx', 1, 2]]], ['+YII', '+IZI', '+IIX']], ['regression: random clifford 37', [3, [['z', 0], ['cx', 0, 2], ['s', 1], ['z', 1], ['h', 2], ['cx', 0, 1], ['s', 2], ['cx', 1, 0], ['h', 2], ['cx', 1, 0]]], ['+ZII', '+ZZI', '-ZIY']], ['repair check: random clifford 7', [3, [['cx', 0, 2], ['cx', 2, 1], ['s', 0], ['cx', 0, 2], ['cx', 2, 1], ['z', 1], ['z', 0], ['h', 1], ['x', 1]]], ['+ZII', '+ZXI', '+IIZ']], ['control: random clifford 45', [2, [['z', 1], ['h', 0], ['cx', 0, 1], ['cx', 1, 0], ['cx', 0, 1], ['s', 1], ['z', 0], ['h', 0], ['s', 1], ['z', 1], ['cx', 0, 1], ['h', 1], ['cx', 0, 1], ['z', 1]]], ['+ZZ', '+YY']], ['control: random clifford 46', [3, [['s', 0], ['z', 0]]], ['+ZII', '+IZI', '+IIZ']], ['control: random clifford 47', [2, [['cx', 1, 0], ['x', 1], ['z', 1], ['h', 0], ['x', 1], ['cx', 1, 0], ['cx', 0, 1], ['cx', 1, 0], ['z', 0], ['z', 1], ['h', 1], ['s', 1], ['z', 0], ['cx', 0, 1]]], ['-IZ', '+ZI']], ['control: random clifford 48', [2, [['x', 0], ['z', 0], ['x', 1], ['h', 0], ['h', 1], ['h', 1], ['z', 1], ['cx', 1, 0], ['h', 0], ['s', 0]]], ['-ZI', '-IZ']]]]
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: h on y eigenstate['-Y']['-Y']Passed
regression: random clifford 4['-XZY', '+ZYI', '-IYX']['-XZY', '+ZYI', '-IYX']Passed
repair check: bell preparation['+XX', '+ZZ']['+XX', '+ZZ']Passed
control: x flips z sign['-Z']['-Z']Passed
control: cx on excited control['-ZI', '+ZZ']['-ZI', '+ZZ']Passed
control: random clifford 0['+ZII', '+IZI', '+IZZ']['+ZII', '+IZI', '+IZZ']Passed
control: random clifford 1['-Z']['-Z']Passed

SHA-256 / 83ced57bfdf158c1167818575c865594415534be2a3666ad163712a043db9903

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:31.681283+00:00.

Case digest / e29f43e158c07ae0d7975c654b11aeed3ea0b52d92d885455f8302051aae0f4e