← back to the board
[[49,19,3]] d ≤
n
49
k
19
d
3
kd²/n
3.49
w
6
X/Z
1
g
0.0545
r
4.0
layers
1
swaps
62

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)
[4, 12, 13]
d_Z 3 · witness weight 3 (claimed upper_bound)
witness operator (support, 3 qubits)
[18, 30, 45]
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 5–6 (mean 5.933) · H_Z 5–6 (mean 5.867)
qubit degrees H_X 1–4 (mean 1.816) · H_Z 1–3 (mean 1.796)
trapping sets H_X (1,1)×15 (2,1)×65 (3,0)×51 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 15 (1,2): 29 (1,3): 4 (1,4): 1 (2,1): 65 (2,2): 105 (2,3): 28 (2,4): 9 (2,5): 2 (3,0): 51 (3,1): 224 (3,2): 361 (3,3): 265 (3,4): 168 (3,5): 42 (3,6): 10 (3,7): 1
trapping sets H_Z (1,1)×15 (2,1)×65 (3,0)×45 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,1): 15 (1,2): 29 (1,3): 5 (2,1): 65 (2,2): 103 (2,3): 37 (2,4): 2 (3,0): 45 (3,1): 221 (3,2): 371 (3,3): 313 (3,4): 128 (3,5): 34 (3,6): 5
witness diameter X 2.2361 · Z 4.1231 (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 (49)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 62 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=7, G=15, 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 7x7 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 s7_G15_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

[[49,19,3]]: 2D-local weight-6 CSS code from a t=2 SAT search on a 7x7 grid

Direction & hypothesis

Cell: weight-6 x local-2d-single. codes/49-17-3.json came from the same encoding at G=16, and the fieldnotes list G=13 to 15 at n=49 as budget-walled at interactive budgets. G=15 forces k >= 49 - 30 = 19, and the column-count bound (G >= 2n/7 = 14) leaves it open, so it was the natural next rung.

What was searched

research/local_sat.py build_local_cnf(7, 15, 6, 2, 2.0, shared_t3=True): 7x7 grid, 15 checks per side anchored within radius 2.0 (interaction radius at most 4.0), row weight at most 6, CSS commutation, nonzero syndrome for every weight <= 2 Pauli error. CaDiCaL 1.5.3, conflict cap 20,000,000 per solve. First solve SAT after 579 s and 3,018,551 conflicts; the model passed the post-check with k = 19. Continued enumeration returned 40 distinct models in 66 min, all k = 19 with d_ub = 3.

Evidence trail

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-6, local-2d-single, interaction radius 4.0), no lighter logical in 4,460 RIS trials, no board duplicate, label "advances the weight-6 x local-2d-single board". Check weights: fourteen X-rows of weight 6 and one of weight 5; thirteen Z-rows of weight 6 and two of weight 5.

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 (1,225 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

G=14 (k >= 21) at the same grid and weight exhausted the 20,000,000-conflict cap in 47 min with neither a model nor an UNSAT proof: a live budget wall. G=13 (k >= 23) is below the column-count bound and is UNSAT without solving.

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, one core, about 10 min to the first model, RSS 0.4 GB.

Reproduction

from local_sat import enumerate_local_sat_codes
gen = enumerate_local_sat_codes(7, 15, 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)

The first model is the code in this file (fingerprint fb1599af6e9c089c); the conflict count 3,018,551 was reproduced in two independent runs.

Parity checks

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