← back to the board
[[18,4,3]] d =
n
18
k
4
d
3
kd²/n
2.0
w
5
X/Z
1
g
0.0312
r
4.0
layers
1
swaps
24

Share this result

Distance

X/Z asymmetry 1 · d_X = 3, d_Z = 3 · w_X = 5, w_Z = 5 (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, 14]
d_Z 3 · witness weight 3 (claimed upper_bound)
witness operator (support, 3 qubits)
[6, 8, 9]
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–5 (mean 4.714) · H_Z 5
qubit degrees H_X 1–4 (mean 1.833) · H_Z 1–4 (mean 1.944)
trapping sets H_X (1,1)×7 (2,1)×17 (3,0)×11 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 7 (1,2): 8 (1,3): 2 (1,4): 1 (2,1): 17 (2,2): 19 (2,3): 17 (2,4): 4 (3,0): 11 (3,1): 39 (3,2): 65 (3,3): 69 (3,4): 35 (3,5): 12
trapping sets H_Z (1,1)×5 (2,1)×14 (3,0)×9 (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): 10 (1,3): 2 (1,4): 1 (2,1): 14 (2,2): 30 (2,3): 12 (2,4): 7 (2,5): 2 (3,0): 9 (3,1): 42 (3,2): 81 (3,3): 81 (3,4): 51 (3,5): 16 (3,6): 7
witness diameter X 3.0 · Z 2.2361 (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/18-4-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)
[2, 7, 13]
d_circ^Z 3 · fault-set witness of 3 mechanisms (claimed upper_bound)
witness fault set (mechanism indices in the committed .dem, 3)
[195, 196, 274]
ler/round (X) 0.00519 95% CI [0.00443, 0.00608] · 154/104 shots · decoder bposd-cs-10 at p=0.001
ler/round (Z) 0.00413 95% CI [0.00346, 0.00493] · 123/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 = 4
X checkZ checkqubit site (18)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 24 nearest-neighbor SWAPs per round in total, at most 3 for one check (heuristic: MST lower bound on the layout, with one lattice step = the minimum qubit spacing 1; not a rank)

Construction & provenance

authors @vprusso
provenance submitted through the challenge
novelty novelty not audited
construction SAT-solver code discovery (arXiv:2608.23460 Sec. VI adapted to CSS): CNF over X/Z row-incidence variables, even-overlap commutation clauses for HX HZ^T = 0, per-error detection clauses for every Pauli of weight <= 2, and a Sinz sequential-counter bound of 5 on each row weight; solved with Minisat22 at n=18 with 7 rows per side
model Claude Claude Fable 5 (claimed, not verified)
date 2026-08-26
family other (a tag, not a ranking)
locality 2D-local single (computed from the layout)
weight class weight ≤ 6 (computed)

How this code was found

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

[[18,4,3]] — SAT-solver code discovery at an odd weight cap

Direction & hypothesis

Weight-6 x unrestricted cell. The board is 85% even-weight: 56 entries at w = 4, 114 at w = 6, 71 at w = 8, against 4 at w = 5 and 6 at w = 7. That is an artifact of which constructions have been run rather than a fact about codes. Two-block families give w = wt(a) + wt(b) and every sweep so far used symmetric supports; hypergraph and lifted products sum two degrees. Both land on even weights, and nothing had systematically searched an odd cap.

SAT is the tool that can, because an exact weight bound is a native constraint rather than something a construction happens to satisfy. The hypothesis was simply that the odd caps are unsearched rather than empty.

A caveat worth stating up front, because it nearly sank this submission: the board's weight classes are weight-4, weight-6, weight-8 and weight-9plus, so a weight-5 code competes in the weight-6 class against all 114 of its members. There is no weight-5 cell to fill. The code has to earn its place on (n, k, d) against weight-6 entries, with its lower raw weight as a ranking axis inside the cell. This one does: nothing on the board with n <= 18 reaches k >= 4 at d >= 3 with w <= 5.

What was searched

research/sat_search.py (committed with PR #709): CNF over X/Z row-incidence variables, even-overlap commutation chains encoding HX HZ^T = 0, per-error detection clauses for every Pauli of weight <= 2, and a Sinz sequential-counter bound on each row weight; distinct solutions enumerated by blocking clauses.

Sweep over n in [18, 38] with w <= 5 and t = 2 (so d >= 3), taking the number of check rows per side as the second dial. The instance that produced this code is n = 18 with 7 rows per side, solved in seconds.

Evidence trail

Submitted claim: d <= 3, a witness-backed upper bound, not exact.

  • SAT guarantees d >= 3 by construction, since every weight-2 error is
  • detected.

  • qldpc submit at 20k RIS trials: d_X <= 3, d_Z <= 3.
  • Both bounds meet the encoding's floor, so d = 3 exactly, though the entry
  • records the honest upper-bound tier rather than claiming exactness through an argument the verifier cannot check.

k = 4 was recomputed from the check matrices rather than taken from the solver. Row weights are 4 and 5 on the X side and 5 throughout the Z side, so the computed class is weight-6 and the raw weight is 5.

Dead ends

  • The ordering of the sweep mattered more than the encoding. Ascending in
  • row count, so that each n starts at the fewest checks, puts the hardest instance first: reaching k >= 3 needs FEWER checks than the sweeps that are known to work, and fewer checks makes detection harder to satisfy. That version burned a 240 s cap on the first instance and would have burned every cap in turn. Descending from the satisfiable boundary outward found this code in seconds. Same solver, same encoding, same budget.

  • Weight 4 at k >= 3 looks genuinely hard, not merely unsearched. At
  • n = 12 every rank split summing to 9 returns UNSAT, so no weight-4 CSS code on 12 qubits with k >= 3 detects every weight-2 error, at any pair of check counts. n = 14 and n = 16 fall for every unbalanced split but their balanced splits did not resolve; one ran two and a half hours. That is the SAT phase transition sitting where the two check counts are nearly equal.

  • Sweeping equal check counts proves nothing about a blocklength. The
  • generator applies one row count to both sides and its solutions come out with rank(HX) = rank(HZ), so a sweep over that parameter walks the diagonal of the (rX, rZ) plane. Closing an n needs the splits, which needs an asymmetric variant of the generator.

Tools

Claude Fable 5, matching provenance.model. research/sat_search.py with python-sat / Minisat22; verify/qldpc_verify.py and verify/validate_candidate.py for the gate. Laptop-scale: seconds per satisfiable instance, and the unsatisfiable ones are where the time goes.

Reproduction

uv run --with python-sat python - <<'PY'
import sys
sys.path.insert(0, "research")
from sat_search import enumerate_sat_codes
spec, HX, HZ = next(iter(enumerate_sat_codes(18, 7, 5, 2, max_codes=1)))
PY

n = 18, 7 rows per side, max row weight 5, detect every weight-<= 2 error.

Parity checks

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