Cell: weight-8 x local-2d-single. Issue #2703 lists 8x8 weight-8 t=3 as a rung the 2D-local SAT campaign (issue #2024) never entered, pending an encoding change, since a model the post-check rejects there costs a full solve. For a full-rank model k = n - 2G, and the weight-6 cell at this grid has k = 12 from G = 26 (codes/64-12-4.json), so G = 25 at weight 8 asks for k >= 14, one more than the cell's [[49,13,4]] at n = 49.
research/local_sat.py `build_local_cnf(8, 25, 8, 3, 2.0, shared_t3=True, nonempty_rows=True)`: 8x8 grid, 25 checks per side anchored within radius 2.0 (interaction radius at most 4.0 by construction), row weight at most 8 and at least 1, CSS commutation, nonzero syndrome for every Pauli error of weight at most 3. Driven by research/sat_rungs.py with the lazy exact detection of enumerate_local_sat_codes(exact_on_reject=True): a model the post-check rejects adds the exact detection constraint for the error it missed rather than a blocking clause. No model was rejected; the first model returned passed the post-check with k = 14 and d_ub = 4 and is the code here. CaDiCaL 1.9.5 via python-sat, conflict cap 20,000,000 per solve, 3 h wall cap; first solve SAT after 4,780 s, peak RSS 19.4 GB with the streamed build.
Detection of every weight <= 3 error gives d >= 4; an exhaustive enumeration after staging of every X-type and every Z-type error of weight at most 3 (43,744 supports per side, plain GF(2) column sums) found none with zero syndrome, so d >= 4 holds independently of the SAT encoding. research/kit/submit.make_submission (20,000 RIS trials per side) embedded a weight-4 X-logical on qubits 6, 7, 13, 14 and a weight-4 Z-logical on qubits 6, 15, 29, 39, so d = 4 exactly; the file carries confidence upper_bound as the kit labels it. verify/validate_candidate.py: verifier ok (weight class weight-8, 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-8 x local-2d-single board". Check weights: X-rows four of weight 4, five of 5, five of 6, six of 7, five of 8; Z-rows five of weight 4, one of 5, seven of 6, six of 7, six of 8. kd^2/n = 3.5. In its cell it trades n for k against codes/49-13-4.json and both stay on the frontier; it has the same n and d as the weight-6 codes/64-12-4.json with two more logical qubits, at check weight 8 rather than 6.
The counting bound G >= 2n/(w+1) gives G >= 15 at weight 8 on 64 qubits, so it says nothing about G = 25. The same rung at G = 24 (k >= 16) has not been run. The other weight-8 rungs of #2703 at 5x5 (G = 7, k >= 11) walled at 20,000,000 conflicts on the same build without a model.
research/local_sat.py, research/sat_rungs.py, research/kit/submit.py, research/kit/surrogate.py, verify/validate_candidate.py. CaDiCaL 1.9.5 via python-sat 1.9.dev15 (Cadical195), CPython 3.13, one core, 1 h 20 min to the first model, RSS 19.4 GB.
python research/sat_rungs.py --side 8 --G 25 --w 8 --t 3 --k-min 14 \
--solver cadical195 --conflicts 20000000 --wall-hours 3 --out-dir models
CaDiCaL is deterministic for a fixed clause order; the first model is the code in this file (fingerprint 748fe3787f7009c4). The record of the run is the 8x8 G=25 w8 t=3 line of research/audits/sat-rungs.jsonl.