Cell: weight-6 x local-2d-single. The d=4 point at n=25 was codes/25-5-4.json (G=10 checks per side, k=5), and the fieldnotes list t=3 at n=25 as budget-walled at interactive budgets and as "cell closed" after a night run at G=10, 11, and 12. Those G values cannot raise k: for a full-rank model k = n - 2G, so k >= 7 needs G <= 9. G=9 (k >= 7) had not been run, and the column-count bound for weight 6 at n=25 (G >= 2n/7 = 7.1) leaves it open.
research/local_sat.py build_local_cnf(5, 9, 6, 3, 2.0, shared_t3=True): 5x5 grid, 9 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. CaDiCaL 1.5.3 via python-sat, conflict cap 20,000,000 per solve. The first solve returned SAT after 4,588.7 s and 11,717,328 conflicts; the model passed the post-check (no weight <= 3 stabilizer) with k = 7 and d_ub = 4. This is the hardest SAT instance of the triage by conflicts and the only one where the first solve used more than half of the conflict cap.
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 3,500 RIS trials, no exact or WL-equivalent board duplicate, label "advances the weight-6 x local-2d-single board". Check weights: all nine X-rows weight 6; Z-rows 4, 5, and seven of weight 6. kd^2/n = 4.48, against 3.2 for codes/25-5-4.json. A weight-8 code with the same parameters came out of the weight-8 instance at the same grid and G in 134 s; this weight-6 code dominates it.
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 (2,625 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.
At the same grid and weight, G=10, 11, and 12 refind or are dominated by codes/25-5-4.json (recorded in the fieldnotes' night run). G=8 (k >= 9) was not run. The 4x4 analog (G=5, weight 6, t=3, k >= 6) is UNSAT, proved by CaDiCaL in 47.5 s and 771,877 conflicts, so codes/16-4-4.json cannot be raised to k=6 on the 4x4 grid at this radius.
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, 76 min to the first model, RSS about 0.5 GB.
from local_sat import enumerate_local_sat_codes
gen = enumerate_local_sat_codes(5, 9, 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 5248856fb9c9732f).