← back to the board
[[64,22,3]] d ≤
n
64
k
22
d
3
kd²/n
3.094
w
6
X/Z
1
g
0.0483
r
4.0
layers
1
swaps
74

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 3, d_Z ≤ 3 · w_X = 6, w_Z = 6 (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)
[19, 26, 27]
d_Z 3 · witness weight 3 (claimed upper_bound)
witness operator (support, 3 qubits)
[59, 61, 63]
certificate none yet · distance stands as a self-certified upper bound (d ≤)

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–6 (mean 5.571) · H_Z 4–6 (mean 5.524)
qubit degrees H_X 1–4 (mean 1.828) · H_Z 1–3 (mean 1.812)
trapping sets H_X (1,1)×21 (2,1)×77 (3,0)×52 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 21 (1,2): 34 (1,3): 8 (1,4): 1 (2,1): 77 (2,2): 113 (2,3): 57 (2,4): 9 (2,5): 3 (3,0): 52 (3,1): 234 (3,2): 400 (3,3): 386 (3,4): 206 (3,5): 89 (3,6): 13 (3,7): 1
trapping sets H_Z (1,1)×20 (2,1)×79 (3,0)×53 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,1): 20 (1,2): 36 (1,3): 8 (2,1): 79 (2,2): 120 (2,3): 54 (2,4): 2 (3,0): 53 (3,1): 255 (3,2): 415 (3,3): 368 (3,4): 144 (3,5): 43 (3,6): 1
witness diameter X 1.4142 · Z 4.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)

Verified 2D layout

as measured by the verifier: every check drawn over the submitted coordinates; the interaction radius is the longest dashed pair
r = 4
X checkZ checkqubit site (64)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 74 nearest-neighbor SWAPs per round in total, at most 5 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 search (research/local_sat.py build_local_cnf, n_side=8, G=21, max_weight=6, t=2 detection, anchor radius 2.0, shared_t3 encoding, CaDiCaL 1.5.3 via python-sat) over 2D-local CSS codes on a 8x8 grid; each check is anchored at a grid site and acts within radius 2.0 of it, so the interaction radius is at most 4.0 by construction. Model index 0 of the enumeration; distance is a witness-backed upper bound.
model Claude Claude Fable 5.1 (Claude Code) (claimed, not verified)
date 2026-09-24
notes Phase 0 triage of the 2D-local SAT t=2+ campaign (issue #2024); instance s8_G21_w6_t2. Distance is an upper bound from the kit's RIS witness search at 20000 trials per side.
family local-sat-css (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

[[64,22,3]]: 2D-local weight-6 CSS code from a t=2 SAT search on an 8x8 grid

Direction & hypothesis

Cell: weight-6 x local-2d-single. The t=2 SAT method had placed the d=3 records at n=16, 25, 36, and 49 (codes/16-6-3.json, codes/25-9-3.json, codes/36-12-3.json, codes/49-17-3.json), and the 8x8 grid had not been tried. At each of those grids the best k came from the smallest G that is still SAT, and the column-count bound (G >= 2n/(w+1)) predicts where that G sits: 5, 8, 11, 14 for n=16, 25, 36, 49 (found: 5, 8, 11, 15), and 19 for n=64. G=23, 22, and 21 were run as the first three rungs at 8x8.

What was searched

research/local_sat.py build_local_cnf(8, G, 6, 2, 2.0, shared_t3=True) for G = 23, 22, 21: 8x8 grid, G checks per side anchored within radius 2.0 (interaction radius at most 4.0 by construction), row weight at most 6, CSS commutation, nonzero syndrome for every weight <= 2 Pauli error. CaDiCaL 1.5.3 via python-sat, conflict cap 20,000,000 per solve, 40 models per instance. G=23: first SAT in 260.6 s, models with k = 18 (34), 19 (5), and 20 (1). G=22: first SAT in 107.1 s, 40 models all k = 20. G=21: first SAT in 96.9 s and 159,658 conflicts, 40 models in 16.9 min (2.76M conflicts), all k = 22 with d_ub = 3. The first G=21 model is the one packaged here.

Evidence trail

research/kit/submit.make_submission (20,000 RIS trials per side) embedded a weight-3 X-logical and a weight-3 Z-logical; with every weight <= 2 error detected, d = 3 exactly (labeled upper_bound by the kit). verify/validate_candidate.py: verifier ok (weight class weight-6, locality class local-2d-single, interaction radius 4.0), no lighter logical in 5,060 RIS trials, no exact or WL-equivalent board duplicate, label "advances the weight-6 x local-2d-single board". Check weights: X-rows three of weight 4, three of weight 5, fifteen of weight 6; Z-rows four of weight 4, two of weight 5, fifteen of weight 6. kd^2/n = 3.09, against 3.12 for codes/49-17-3.json and 3.0 for codes/36-12-3.json.

An exhaustive check after staging, plain GF(2) arithmetic outside the repo, enumerated every X-type and every Z-type error of weight at most 2 (2,080 supports per side) and found none with zero syndrome, so d >= 3 holds independently of the SAT encoding and its post-check; with the weight-3 witnesses, d = 3 exactly. The JSON keeps confidence upper_bound.

Dead ends

The G=23 and G=22 models (k <= 20) are dominated by this code. G=20 (k >= 24) and G=19 (the column-count minimum, k >= 26) were not run in the triage; at 7x7 the rung one above the bound (G=15) was SAT in 10 min and the rung at the bound (G=14) exhausted the 20M-conflict cap, so G=20 and 19 at 8x8 are the natural next solves.

Tools

research/local_sat.py, research/kit/submit.py, research/kit/surrogate.py, verify/validate_candidate.py. CaDiCaL 1.5.3 via python-sat 1.9.dev15, CPython 3.12, one core, 1.6 min to the first model, 17 min for the enumeration, RSS 0.3 GB.

Reproduction

from local_sat import enumerate_local_sat_codes
gen = enumerate_local_sat_codes(8, 21, 6, 2, 2.0, max_codes=1,
    solver="cadical", conf_budget=20_000_000, stream=True, shared_t3=True)
spec, HX, HZ, coords, ax, az = next(gen)

CaDiCaL is deterministic for a fixed clause order; the first model is the code in this file (fingerprint 6dbb6cf3139a1348).

Parity checks

X-checks 21 (max weight 6) · Z-checks 21 (max weight 6)
H_X (21 checks, sparse supports)
[4, 6, 7, 13, 15, 22] [16, 32, 34, 40, 41, 48] [39, 46, 47, 53, 54, 62] [47, 52, 55, 61, 62, 63] [26, 35, 40, 43, 44, 58] [1, 9, 10, 11, 16, 18] [1, 2, 8, 17, 26] [10, 19, 25, 26, 33, 35] [19, 26, 27, 28, 29, 44] [0, 17, 18, 24, 32] [24, 33, 41, 42, 49, 56] [23, 31, 38, 39, 47, 55] [7, 15, 21, 23, 30] [42, 50, 51, 58] [5, 6, 14, 15] [28, 36, 42, 46, 52, 60] [3, 5, 11, 20] [2, 4, 10, 12, 19, 20] [22, 29, 30, 37, 38, 45] [45, 52, 54, 59, 60, 63] [40, 48, 50, 56, 57, 58]
H_Z (21 checks, sparse supports)
[52, 53, 60, 62] [3, 4, 5, 12, 13, 14] [10, 17, 18, 19, 26, 35] [10, 11, 20, 25] [10, 16, 19, 27, 34] [7, 14, 15, 21, 23, 31] [40, 41, 51, 56, 57, 58] [43, 50, 52, 58, 60, 61] [4, 12, 22, 28, 29, 36] [23, 30, 37, 39, 47, 55] [24, 32, 48, 56] [1, 9, 17, 24, 25, 33] [0, 8, 16, 17, 18, 32] [2, 3, 8, 9, 11, 12] [28, 33, 35, 42, 44, 51] [21, 30, 36, 38, 39, 46] [6, 13, 15, 22, 30] [42, 49, 50, 57, 59, 60] [37, 45, 53, 54] [31, 38, 39, 45, 47, 63] [34, 41, 43, 49, 50, 58]
Code ID 64-22-3 · download JSON · raw on GitHub