{"abstract":"For an unroutable gate at input position 1 the error names position 5 after an earlier flip expanded the output.","category":"Quantum circuit simulation","checks":7,"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].","evaluation_group":"w2-quantum_circuit_simulation-coupling-direction-fix","failed_approach":"The attempted repair reports idx + 1, a one-based index where the contract is zero-based.","family":"w2-quantum_circuit_simulation-coupling-direction-fix-unroutable-index","id":"FA-91066","implementations":{"attempt":{"sha256":"163da793ed56680277d2cd0cc61c5713f6577efe23bf336c847f7bf309fa2c2d","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    edges, ops = x\n    allowed = {(a, b) for a, b in edges}\n    out = []\n    for idx, op in enumerate(ops):\n        if op[0] != 'cx':\n            out.append(list(op))\n            continue\n        c, t = op[1], op[2]\n        if c == t:\n            return ['invalid', idx]\n        if (c, t) in allowed:\n            out.append(['cx', c, t])\n        elif (t, c) in allowed:\n            out += [['h', c], ['h', t], ['cx', t, c], ['h', c], ['h', t]]\n        else:\n            return ['unroutable', idx + 1]\n    res = []\n    for op in out:\n        if op[0] == 'h' and res and res[-1] == op:\n            res.pop()\n        else:\n            res.append(op)\n    return res\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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]]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"91fdb74339318835e593beb007e8262ccf8a9e15cdd850c4ee702680a9c39696","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    edges, ops = x\n    allowed = {(a, b) for a, b in edges}\n    out = []\n    for idx, op in enumerate(ops):\n        if op[0] != 'cx':\n            out.append(list(op))\n            continue\n        c, t = op[1], op[2]\n        if c == t:\n            return ['invalid', idx]\n        if (c, t) in allowed:\n            out.append(['cx', c, t])\n        elif (t, c) in allowed:\n            out += [['h', c], ['h', t], ['cx', t, c], ['h', c], ['h', t]]\n        else:\n            return ['unroutable', len(out)]\n    res = []\n    for op in out:\n        if op[0] == 'h' and res and res[-1] == op:\n            res.pop()\n        else:\n            res.append(op)\n    return res\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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]]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"e5b1f64ca7175036b524143144df524e05b123e2087428adea6fc39362fd4450","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    edges, ops = x\n    allowed = {(a, b) for a, b in edges}\n    out = []\n    for idx, op in enumerate(ops):\n        if op[0] != 'cx':\n            out.append(list(op))\n            continue\n        c, t = op[1], op[2]\n        if c == t:\n            return ['invalid', idx]\n        if (c, t) in allowed:\n            out.append(['cx', c, t])\n        elif (t, c) in allowed:\n            out += [['h', c], ['h', t], ['cx', t, c], ['h', c], ['h', t]]\n        else:\n            return ['unroutable', idx]\n    res = []\n    for op in out:\n        if op[0] == 'h' and res and res[-1] == op:\n            res.pop()\n        else:\n            res.append(op)\n    return res\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['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]]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-quantum_circuit_simulation-coupling-direction-fix-unroutable-index","generated_at":"2026-09-29T14:51:32.423345+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Direction fixing is a mandatory transpiler pass for devices with directed couplers; errors either break hardware constraints or bloat circuits.","repair":"Report the input op index.","root_cause":"The error index is len(out), the position in the rewritten stream, not the input op index.","sha256":"9333d7e282e63e4114f69a99f01d03f4bca2de7aa90d3bbdb4ec17063ed5882e","title":"Direction fixer reports the output position of an unroutable CNOT · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.424,"exit_code":1,"observations":[{"actual":["unroutable",2],"check":"regression: random coupling 20","expected":["unroutable",1],"passed":false},{"actual":["unroutable",3],"check":"regression: random coupling 36","expected":["unroutable",2],"passed":false},{"actual":["unroutable",2],"check":"repair check: unroutable pair","expected":["unroutable",1],"passed":false},{"actual":[["cx",0,1]],"check":"control: native direction","expected":[["cx",0,1]],"passed":true},{"actual":[["h",1],["h",0],["cx",0,1],["h",1],["h",0]],"check":"control: reversed direction","expected":[["h",1],["h",0],["cx",0,1],["h",1],["h",0]],"passed":true},{"actual":[["cx",1,0]],"check":"control: bidirectional edge","expected":[["cx",1,0]],"passed":true},{"actual":["invalid",1],"check":"control: self loop","expected":["invalid",1],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: random coupling 20\", \"actual\": [\"unroutable\", 2], \"expected\": [\"unroutable\", 1], \"passed\": false}, {\"check\": \"regression: random coupling 36\", \"actual\": [\"unroutable\", 3], \"expected\": [\"unroutable\", 2], \"passed\": false}, {\"check\": \"repair check: unroutable pair\", \"actual\": [\"unroutable\", 2], \"expected\": [\"unroutable\", 1], \"passed\": false}, {\"check\": \"control: native direction\", \"actual\": [[\"cx\", 0, 1]], \"expected\": [[\"cx\", 0, 1]], \"passed\": true}, {\"check\": \"control: reversed direction\", \"actual\": [[\"h\", 1], [\"h\", 0], [\"cx\", 0, 1], [\"h\", 1], [\"h\", 0]], \"expected\": [[\"h\", 1], [\"h\", 0], [\"cx\", 0, 1], [\"h\", 1], [\"h\", 0]], \"passed\": true}, {\"check\": \"control: bidirectional edge\", \"actual\": [[\"cx\", 1, 0]], \"expected\": [[\"cx\", 1, 0]], \"passed\": true}, {\"check\": \"control: self loop\", \"actual\": [\"invalid\", 1], \"expected\": [\"invalid\", 1], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.631,"exit_code":1,"observations":[{"actual":["unroutable",5],"check":"regression: random coupling 20","expected":["unroutable",1],"passed":false},{"actual":["unroutable",6],"check":"regression: random coupling 36","expected":["unroutable",2],"passed":false},{"actual":["unroutable",1],"check":"repair check: unroutable pair","expected":["unroutable",1],"passed":true},{"actual":[["cx",0,1]],"check":"control: native direction","expected":[["cx",0,1]],"passed":true},{"actual":[["h",1],["h",0],["cx",0,1],["h",1],["h",0]],"check":"control: reversed direction","expected":[["h",1],["h",0],["cx",0,1],["h",1],["h",0]],"passed":true},{"actual":[["cx",1,0]],"check":"control: bidirectional edge","expected":[["cx",1,0]],"passed":true},{"actual":["invalid",1],"check":"control: self loop","expected":["invalid",1],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: random coupling 20\", \"actual\": [\"unroutable\", 5], \"expected\": [\"unroutable\", 1], \"passed\": false}, {\"check\": \"regression: random coupling 36\", \"actual\": [\"unroutable\", 6], \"expected\": [\"unroutable\", 2], \"passed\": false}, {\"check\": \"repair check: unroutable pair\", \"actual\": [\"unroutable\", 1], \"expected\": [\"unroutable\", 1], \"passed\": true}, {\"check\": \"control: native direction\", \"actual\": [[\"cx\", 0, 1]], \"expected\": [[\"cx\", 0, 1]], \"passed\": true}, {\"check\": \"control: reversed direction\", \"actual\": [[\"h\", 1], [\"h\", 0], [\"cx\", 0, 1], [\"h\", 1], [\"h\", 0]], \"expected\": [[\"h\", 1], [\"h\", 0], [\"cx\", 0, 1], [\"h\", 1], [\"h\", 0]], \"passed\": true}, {\"check\": \"control: bidirectional edge\", \"actual\": [[\"cx\", 1, 0]], \"expected\": [[\"cx\", 1, 0]], \"passed\": true}, {\"check\": \"control: self loop\", \"actual\": [\"invalid\", 1], \"expected\": [\"invalid\", 1], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.737,"exit_code":0,"observations":[{"actual":["unroutable",1],"check":"regression: random coupling 20","expected":["unroutable",1],"passed":true},{"actual":["unroutable",2],"check":"regression: random coupling 36","expected":["unroutable",2],"passed":true},{"actual":["unroutable",1],"check":"repair check: unroutable pair","expected":["unroutable",1],"passed":true},{"actual":[["cx",0,1]],"check":"control: native direction","expected":[["cx",0,1]],"passed":true},{"actual":[["h",1],["h",0],["cx",0,1],["h",1],["h",0]],"check":"control: reversed direction","expected":[["h",1],["h",0],["cx",0,1],["h",1],["h",0]],"passed":true},{"actual":[["cx",1,0]],"check":"control: bidirectional edge","expected":[["cx",1,0]],"passed":true},{"actual":["invalid",1],"check":"control: self loop","expected":["invalid",1],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: random coupling 20\", \"actual\": [\"unroutable\", 1], \"expected\": [\"unroutable\", 1], \"passed\": true}, {\"check\": \"regression: random coupling 36\", \"actual\": [\"unroutable\", 2], \"expected\": [\"unroutable\", 2], \"passed\": true}, {\"check\": \"repair check: unroutable pair\", \"actual\": [\"unroutable\", 1], \"expected\": [\"unroutable\", 1], \"passed\": true}, {\"check\": \"control: native direction\", \"actual\": [[\"cx\", 0, 1]], \"expected\": [[\"cx\", 0, 1]], \"passed\": true}, {\"check\": \"control: reversed direction\", \"actual\": [[\"h\", 1], [\"h\", 0], [\"cx\", 0, 1], [\"h\", 1], [\"h\", 0]], \"expected\": [[\"h\", 1], [\"h\", 0], [\"cx\", 0, 1], [\"h\", 1], [\"h\", 0]], \"passed\": true}, {\"check\": \"control: bidirectional edge\", \"actual\": [[\"cx\", 1, 0]], \"expected\": [[\"cx\", 1, 0]], \"passed\": true}, {\"check\": \"control: self loop\", \"actual\": [\"invalid\", 1], \"expected\": [\"invalid\", 1], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}