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