← back to the board
[[64,10,4]] d ≤
n
64
k
10
d
4
kd²/n
2.5
w
6
X/Z
1
g
0.0391
r
4.0
layers
1
swaps
90

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 4, d_Z ≤ 4 · 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 4 · witness weight 4 (claimed upper_bound)
witness operator (support, 4 qubits)
[4, 5, 7, 14]
d_Z 4 · witness weight 4 (claimed upper_bound)
witness operator (support, 4 qubits)
[41, 50, 51, 56]
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.148) · H_Z 4–6 (mean 5.185)
qubit degrees H_X 1–4 (mean 2.172) · H_Z 1–4 (mean 2.188)
trapping sets H_X (1,1)×10 (2,1)×32 (3,1)×107 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 10 (1,2): 37 (1,3): 13 (1,4): 4 (2,1): 32 (2,2): 99 (2,3): 92 (2,4): 47 (2,5): 9 (2,6): 1 (3,1): 107 (3,2): 334 (3,3): 470 (3,4): 404 (3,5): 231 (3,6): 71 (3,7): 18 (3,8): 4
trapping sets H_Z (1,1)×14 (2,1)×30 (3,1)×131 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,1): 14 (1,2): 29 (1,3): 16 (1,4): 5 (2,1): 30 (2,2): 92 (2,3): 88 (2,4): 54 (2,5): 11 (2,6): 1 (3,1): 131 (3,2): 292 (3,3): 407 (3,4): 436 (3,5): 228 (3,6): 83 (3,7): 26 (3,8): 4
witness diameter X 3.0 · Z 3.1623 (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 90 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=27, max_weight=6, t=3 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_G27_w6_t3. 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,10,4]]: 2D-local weight-6 CSS code with d=4 from a t=3 SAT search on an 8x8 grid

Direction & hypothesis

Cell: weight-6 x local-2d-single. The d=4 points in this cell stop at n=36 (codes/36-8-4.json, k=8); the fieldnotes record 8x8 t=3 at G=16 and G=12 as budget-exhausted after about 9 h at 500k and 5M conflict budgets. Those G values are below the column-count bound for weight 6 at n=64 (G >= 2n/7 = 18.3), so they were UNSAT by construction and the 8x8 t=3 cell had in fact never been probed at a G that can hold a code. With k = n - 2G for a full-rank model, k >= 9 (one above the incumbent) needs G <= 27; G=27 was run as the first rung.

What was searched

research/local_sat.py build_local_cnf(8, 27, 6, 3, 2.0, shared_t3=True): 8x8 grid, 27 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 Pauli error of weight at most 3 (about 7M variables and 27M clauses, 74 s to build, 4.7 GB RSS). CaDiCaL 1.5.3 via python-sat, conflict cap 20,000,000 per solve. First solve SAT after 8,609.1 s and 872,192 conflicts (about 100 conflicts per second on this formula); the model passed the post-check (no weight <= 3 stabilizer) with k = 10 and d_ub = 4. The second model came 1,597 s later. The first model is the one packaged here. The same instance in an earlier launch returned the same first model at the same conflict count.

Evidence trail

Detection of every weight <= 3 error with no weight <= 3 stabilizer gives d >= 4. research/kit/submit.make_submission (20,000 RIS trials per side) embedded a weight-4 X-logical and a weight-4 Z-logical, so d = 4 exactly; the file carries confidence upper_bound as the kit labels it. 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 eleven of weight 4, one of weight 5, fifteen of weight 6; Z-rows eight of weight 4, six of weight 5, thirteen of weight 6. kd^2/n = 2.5, below codes/36-8-4.json (3.56) on that metric; the code is a new Pareto point on (n, k, d) because no code with n <= 64 has k >= 10 at d >= 4 in the cell.

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 3 (43,744 supports per side) and found none with zero syndrome, so d >= 4 holds independently of the SAT encoding and its post-check; with the weight-4 witnesses, d = 4 exactly. The JSON keeps confidence upper_bound.

Dead ends

G=26 (k >= 12) at the same grid and weight ran for the full 3 h wall cap without a solve returning (about 1M conflicts), a budget wall. The weight-8 instance at G=27 returned six models in six SAT solves, all rejected by the post-check for a weight <= 3 stabilizer, and hit the 3 h wall cap during the seventh solve with no model kept. G=16 and G=12, the fieldnotes' instances, are UNSAT by the column-count bound and were not closed by CaDiCaL within the 1 h cap they were given.

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, 2 h 24 min to the first model, RSS 4.7 GB.

Reproduction

from local_sat import enumerate_local_sat_codes
gen = enumerate_local_sat_codes(8, 27, 6, 3, 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 3fd74db24101665c). Expect about 2.5 h on one core and 5 GB of memory.

Parity checks

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