Cell: weight-8 x local-2d-bilayer. At n <= 50 and d >= 4 the weight-8 bilayer cell was led by codes/50-18-4.json (k = 18, two layers) beside codes/24-10-4.json and codes/32-8-4.json. For a full-rank model k = n - 2G, so G=14 forces k >= 22; the column-count bound G >= 2n/(w+1) = 11.1 leaves G = 13 down to 12 as rungs that could still hold a code.
research/local_sat.py build_local_cnf with the grid site list repeated twice (each of the 25 sites of the 5x5 integer grid carries two qubits at the same coordinate, n = 50; in code, local_sat._grid_sites is replaced by a version that yields every site twice, the one-line layers extension of the single-layer encoder), G=14 checks per side anchored at a grid site and acting within anchor radius 3.5 of it (check diameter at most 7.0, the bilayer cap; on the 5x5 grid the farthest sites are 5.66 apart), row weight at most 8, CSS commutation, nonzero syndrome for every Pauli error of weight at most 3. CaDiCaL 1.9.5 via python-sat, conflict cap 20,000,000 per solve, 6 h wall cap per solve, CNF streamed into the solver (1,843,830 variables). First solve SAT after 10,609 s and 2,917,692 conflicts; ten distinct models in 31,700 s (9,382,404 conflicts), all k = 22 with d_ub = 4. Model 0 is the code here.
Detection of every weight <= 3 error with no weight <= 3 stabilizer gives d >= 4; an exhaustive enumeration after staging of every X-type and every Z-type error of weight at most 3 (20,875 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, the duplicated coordinates and layers = 2) 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 against the current board: verifier ok (weight class weight-8, locality class local-2d-bilayer, two qubits per site, measured interaction radius 5.66), no lighter logical in 4,500 RIS trials, no exact or WL-equivalent board duplicate, label "advances the weight-8 x local-2d-bilayer board". Check weights: X-rows fourteen of weight 8; Z-rows fourteen of weight 8. kd^2/n = 7.04. It raises k at (n <= 50, d = 4) in the weight-8 bilayer cell from 18 to 22; every check has weight exactly 8.
G=15 at the same grid and weight yields only k = 20 (dominated). The rung below, G=13 (k >= 24), ran for its full 6 h wall cap without a solve returning, so k = 24 at d = 4 on this grid is open rather than excluded.
research/local_sat.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.12, one core.
import local_sat
from pysat.solvers import Cadical195
local_sat._grid_sites = lambda side: [(float(x), float(y))
for y in range(side) for x in range(side) for _ in range(2)]
s = Cadical195(bootstrap_with=[])
cnf = local_sat.build_local_cnf(5, 14, 8, 3, 3.5, sink=s, shared_t3=True)
s.conf_budget(20_000_000); assert s.solve_limited()
model = {abs(m) for m in s.get_model() if m > 0}
# HX[g, q] = cnf["xr"][(g, q)] in model; HZ likewise from cnf["zr"];
# coordinates = cnf["sites"] (each grid point twice), layers = 2.
CaDiCaL is deterministic for a fixed clause order; the first model is the code in this file (fingerprint 27572b82b05ac5ae).