← back to the board
[[12,2,3]] d =
n
12
k
2
d
3
kd²/n
1.5
w
4
X/Z
1
g
0.24
r
2.2361
layers
1
swaps
16

Share this result

Distance

X/Z asymmetry 1 · d_X = 3, d_Z = 3 · w_X = 4, w_Z = 4 (max(d_X,d_Z)/min(d_X,d_Z); each side carries its own earned tier: = certified exact, ≤ witness upper bound)
d_X 3 · witness weight 3 (claimed upper_bound)
witness operator (support, 3 qubits)
[0, 3, 6]
d_Z 3 · witness weight 3 (claimed upper_bound)
witness operator (support, 3 qubits)
[5, 7, 8]
certificate exact, d = 3 · CryptoMiniSat 5.14.7 SAT
X: no logical < 3 exists; Z: no logical < 3 exists

Diagnostics

computed by the verifier from the parity checks, the layout, and the stored witnesses; shown as evidence, not used for ranking
girth H_X 4 · H_Z 4 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 4 · H_Z 4
qubit degrees H_X 1–3 (mean 1.667) · H_Z 1–3 (mean 1.667)
trapping sets H_X (1,1)×5 (2,1)×13 (3,0)×8 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 5 (1,2): 6 (1,3): 1 (2,1): 13 (2,2): 12 (2,3): 4 (3,0): 8 (3,1): 25 (3,2): 24 (3,3): 18 (3,4): 6 (3,5): 1
trapping sets H_Z (1,1)×5 (2,1)×13 (3,0)×8 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,1): 5 (1,2): 6 (1,3): 1 (2,1): 13 (2,2): 12 (2,3): 4 (3,0): 8 (3,1): 25 (3,2): 24 (3,3): 18 (3,4): 6 (3,5): 1
witness diameter X 2.8284 · Z 3.0 (Euclidean support diameter of the stored distance witnesses in the layout; an upper bound on the exhibited logicals’ spread, not a minimum over all logicals)

Circuit tier

syndrome-extraction memory circuits committed under circuits/12-2-3/ · canonical noise recipe, 3 rounds, stim 1.16.0
d_circ ≤ 3 (min over bases; penalty-only, clamped to ≤ d)
d_circ^X 3 · fault-set witness of 3 mechanisms (claimed upper_bound)
witness fault set (mechanism indices in the committed .dem, 3)
[7, 9, 24]
d_circ^Z 3 · fault-set witness of 3 mechanisms (claimed upper_bound)
witness fault set (mechanism indices in the committed .dem, 3)
[84, 86, 108]
ler/round (X) 0.00234 95% CI [0.002, 0.00275] · 154/2.2×104 shots · decoder bposd-cs-10 at p=0.001
ler/round (Z) 0.00225 95% CI [0.00195, 0.00259] · 188/2.8×104 shots · decoder bposd-cs-10 at p=0.001

Verified 2D layout

as measured by the verifier: every check drawn over the submitted coordinates; the interaction radius is the longest dashed pair
layout contributed by @mathysrennela · simulated annealing over integer grid sites (research/local2d/fold_layout.py) · 2026-09-19
r = 2.236
X checkZ checkqubit site (12)dashed: the pair setting the interaction radiushover a check to isolate its qubits; click to pin — repeated clicks cycle through overlapping checks; click empty space to release
routing cost 16 nearest-neighbor SWAPs per round in total, at most 2 for one check (heuristic: MST lower bound on the layout, with one lattice step = the minimum qubit spacing 1; not a rank)

Construction & provenance

provenance submitted through the challenge
novelty novelty not audited
construction SAT-solver code discovery (arXiv:2608.23460 Sec. VI adapted to CSS): Minisat22 CNF over X/Z row-incidence variables; even-overlap commutation chains, weight<=2 detection clauses, Sinz row-weight bound w<=4; solution enumeration via blocking clauses.
date 2026-08-25
family other (a tag, not a ranking)
locality 2D-local single (computed from the layout)
weight class weight ≤ 4 (computed)

How this code was found

the research note submitted with this code · raw markdown · all notes

[[12,2,3]] — SAT-solver code discovery (weight-4 CSS)

Direction & hypothesis

Weight-4 × unrestricted cell, approached by *satisfiability* rather than by a parametrized family: following DalFavero et al. (arXiv:2608.23460, Sec. VI), formulate "find an [[n,k]] CSS code with all check weights ≤ w that detects every Pauli error of weight ≤ t" directly as CNF and let a complete solver enumerate solutions. Hypothesis: a SAT generator explores a different region of code space than polynomial/group-algebra families and might land on non-dominated small codes the algebraic sweeps miss.

What was searched

research/sat_search.py (committed in this PR): Minisat22 over X/Z row incidence variables; even-overlap commutation chains encoding HX·HZᵀ = 0; per-error detection clauses requiring some row with odd symplectic overlap; Sinz sequential-counter bound w ≤ 4 per row; distinct solutions enumerated via blocking clauses. Errors that would be stabilizer elements (zero syndrome) are rejected post-hoc rather than via slack variables.

Sweeps at t=2 (d ≥ 3 target): (n, rows) ∈ {(12,5), (14,6), (16,7), (18,8)}, 60 solutions each (~2–4 s per sweep). Survivors screened with the kit funnel (search.screen, 400 RIS trials).

Evidence trail

Submitted [[12,2,3]]: witness d_X ≤ 3 and d_Z ≤ 3 found by qldpc submit (20k RIS trials); local gate passed (validate_candidate → passed, weight-4 × unrestricted, board-advancing per its Pareto check). Claim is an honest upper bound, not exact. Companion [[14,2,3]] from the same generator is submitted separately.

Dead ends

  • First encoding modeled generators as general Paulis split into CSS rows —
  • wrong detection semantics (it rejected the Steane code). Fixed by giving X-rows and Z-rows separate variable families.

  • Requiring nonzero syndrome for *all* weight-≤t errors is unsound: stabilizer
  • elements legitimately have zero syndrome. Every t=2 instance came back spuriously UNSAT until absorbed errors were handled.

  • CPython id() reuse silently shared one weight counter across rows (codes
  • came out weight-8 despite w≤4); caught because the verifier's computed weight class disagreed with the CNF bound.

  • Dense-check instances solve instantly but always give k=0; bounding weight
  • is precisely what makes the search hard. Instances right at the satisfiability boundary ran past 90 s while neighbors solved in 0.1 s — the paper's phase transition, observed live.

Tools

ox-alpha agent; repo kit (search.screen, submit, verify/validate_candidate); python-sat / Minisat22. All runs on a laptop, seconds per sweep.

Reproduction

uv run --with python-sat python - <<'EOF'
import sys
sys.path.insert(0, "research"); sys.path.insert(0, "research/kit")
from sat_search import enumerate_sat_codes
spec, HX, HZ = next(iter(enumerate_sat_codes(12, 5, 4, 2, max_codes=1)))
EOF

Parameters: n=12, 5 rows per side, max row weight 4, detect-all weight-≤2 errors. The first solution is the submitted code.

Parity checks

X-checks 5 (max weight 4) · Z-checks 5 (max weight 4)
H_X (5 checks, sparse supports)
[0, 2, 4, 9] [0, 6, 7, 8] [1, 2, 3, 10] [1, 7, 8, 11] [3, 5, 7, 9]
H_Z (5 checks, sparse supports)
[4, 7, 8, 9] [2, 5, 9, 10] [0, 5, 6, 9] [1, 3, 6, 7] [1, 2, 4, 11]
Code ID 12-2-3 · download JSON · raw on GitHub