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.
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.
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.
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.
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.
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).