Draft · v0.2 · Unreviewed
← Index/Project · Nadarasa ReductionDraft · v0.2 · Selene Emulator
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

sshotsP(a0 = 1)P(majority = 1)encoded-subspace sharedisagreement rate
28000.00000.49250.50750.4925
48000.00000.49000.51000.4900
68000.00000.51380.48630.5138
88000.00000.50250.49750.5025
108000.00000.50620.49380.5062
128000.00000.49500.50500.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))