Selene · Runtime · Frontier card → /selene-frontier/ancilla-repetition-code
[G6] Encoded
parity ancilla
Allocate three rails, encode |+⟩_L = (|000⟩ + |111⟩)/√2, run the G2 parity probe off rail a0, decode, measure all three. At zero noise the host majority must equal a0 on every shot, and the triple (a0, a1, a2) must live entirely in {(0,0,0), (1,1,1)}. Neither is what we observe.
Resolved → The fix this verdict named (transversal probe across all three rails) was implemented in [G6b]: 0/4800 disagreements, encoded-subspace share = 1.000.
verdict verified
encoded_subspace_leak1/1 criteriaEach criterion below is recomputed from the committed rows by quantum/verdicts.py; this chip reads the result rather than restating it.
- pass
encoded_subspace_leak_presentPhysical pairs disagree far more often than the 4-sigma envelope allows, so the encoded subspace leaks: this is a negative result, recorded as such.
measured 0.5 · threshold 0.040825
Verdict
Code-subspace leak — naive probe is not transversal
Encoded-subspace share over all 4800 shots = 0.5000; majority disagreed with bare-rail
a0 on 2400 shots (50.0%). This is a real wind-tunnel finding: cx(d_j, a0) on a single rail of a GHZ ancilla entangles only that rail with data, dragging the triple off the codespace. A correctly-protected probe needs to be transversal across all three rails (or replaced with a different gadget — Steane code, flag qubits). G6's takeaway: the simplest possible "wrap the ancilla in a rep code" pattern does not work; the card flips from untouched to blocked-by-construction.Per-slope results
| s | shots | P(a0 = 1) | P(majority = 1) | encoded-subspace share | disagreement rate |
|---|---|---|---|---|---|
| 2 | 800 | 0.0000 | 0.4925 | 0.5075 | 0.4925 |
| 4 | 800 | 0.0000 | 0.4900 | 0.5100 | 0.4900 |
| 6 | 800 | 0.0000 | 0.5138 | 0.4863 | 0.5138 |
| 8 | 800 | 0.0000 | 0.5025 | 0.4975 | 0.5025 |
| 10 | 800 | 0.0000 | 0.5062 | 0.4938 | 0.5062 |
| 12 | 800 | 0.0000 | 0.4950 | 0.5050 | 0.4950 |
Kernel snippet (N = 16, s = 2)
open in Playpond ↗
from quantum.nadarasa_g6_lib import (
guppy, qubit, h, cx, measure, result, probe_one, phase_on,
)
@guppy
def program() -> None:
d0 = qubit()
d1 = qubit()
d2 = qubit()
d3 = qubit()
h(d0)
h(d1)
h(d2)
h(d3)
phase_on(d0, 0.7853981633974483)
phase_on(d1, 1.5707963267948966)
phase_on(d2, -3.141592653589793)
phase_on(d3, 0.0)
a0 = qubit()
a1 = qubit()
a2 = qubit()
h(a0)
cx(a0, a1)
cx(a0, a2)
probe_one(a0, d0)
probe_one(a0, d1)
probe_one(a0, d2)
probe_one(a0, d3)
cx(a0, a2)
cx(a0, a1)
h(a0)
result("a0", measure(a0))
result("a1", measure(a1))
result("a2", measure(a2))
result("x0", measure(d0))
result("x1", measure(d1))
result("x2", measure(d2))
result("x3", measure(d3))