Cell weight-6 x unrestricted, CSS board, n between 288 and 340. Before this campaign the weight-6 frontier there ran 288-16-16, 288-12-18, 294-10-20, 310-10-22, 330-22-9, 330-68-6 and 340-16-18: at n <= 310 every weight-6 entry with k >= 20 had d <= 10 (and k = 20..30 only appeared at d <= 10 below n = 300). The hypothesis was that two-block group-algebra (2BGA) codes on split metacyclic groups C_l1 ⋊ C_l2 of order 150 to 200 could reach k = 20 at d = 12 below the [[336,24,12]] filed from the same campaign. [[310,20,12]] does: no board entry has n <= 310, k >= 20, d >= 12 and check weight <= 6, and the d - 2 margin holds ([[310,20,10]] is not dominated either).
Random-support 2BGA codes H_X = [L(a) | R(b)], H_Z = [R(b)^T | L(a)^T] with a, b three group elements each, both containing the identity (no loss of generality). The group menu was every non-abelian group of order 150 to 200 the kit builds from Cayley-table constructors: dihedral D_n, metacyclic C_n ⋊_r C_k (up to two actions r per (n, k)), C_m x D_k, C_m x A4, C_m x S4, D_a x D_b, C_m x (C_n ⋊ C_k) for eight small metacyclic factors, and the split metacyclic presentations ZSZ(l1, l2, q), l2 <= 8, of research/kit/nonabelian_lp.py.
A generic weight-3 element is invertible on most irreducible blocks of F_2[G], so k >= 20 is rare: the sweep ran a parallel generate-and-rank prefilter over 400,000 draws (seed 62), of which 239 had k >= 20 and a connected Tanner graph. Those went through research/kit/search.screen with the gf2_fast backend at 400 trials; 31 advanced the board frontier at screen depth and were confirmed at 20,000 / 200,000 / 2,000,000 fast trials (research/kit/surrogate.distance_rand_witness, pair depth 8). This code was drawn twice (two different support pairs on ZSZ(31,5,2), both [[310,20,12]] through 2,000,000 trials). The other survivors were [[336,20,16]], [[336,24,12]] and [[378,24,16]], filed separately, and points those dominate ([[360,24,12]], [[378,24,12]]).
Witness-backed upper bound d <= 12, not an exact distance. The bound was 12 at 400 trials and never moved; both sides have a weight-12 logical.
| stage | trials per candidate | lightest logical | |---|---|---| | screen (gf2_fast, seed from fingerprint) | 400 | 12 | | confirm | 20,000 | 12 | | confirm | 200,000 | 12 | | confirm | 2,000,000 | 12 | | numpy lightest_logical, both sides, seeds 62 / 63 | 1,500 | X 12, Z 12 | | deep ladder, 3 fresh seeds (50423, 58342, 66261), gf2_fast | 10,000,000 each | 12, 12, 12 |
verify/validate_candidate.py (through research/kit/coordination.py's gate wrapper) returned passed: true, board_advancing: true, `d_only_gain: false`, label "advances the weight-6 x unrestricted board". Literature novelty is unverified; board-relative novelty comes from verify/validate_candidate.py (fingerprint and Weisfeiler-Leman dedup against every board entry found nothing).
check weight 6 (weight-3 a and b): at odd m from 111 to 200 and deg g >= 8 there are essentially no weight-3 multiples of g; the few that exist are lifts from a subring Z_{m/s} and give direct sums.
prefiltered draws (185 with k >= 12) gave only points dominated by the 2BGA finds of this campaign.
(check weight 6) give k = |G| + 6 at d = 6, already dominated by the board's 258-88-6.
advanced the frontier even at 400 screen trials.
Model: Claude Fable 5.1 (Claude Code agent, contributor-driven workflow). Compute: one Brev n2d-highcpu-64 box; gf2_fast at 30 threads for the confirmation rungs and the ladder, 30 forked processes for the generate + rank prefilter. Kit modules: research/kit/nonabelian_lp.py (zsz), research/kit/group_algebra.py (build_2bga), research/kit/search.py (screen), research/kit/surrogate.py (distance_rand_witness, lightest_logical), research/kit/prescreen.py (direct-sum and board dedup), research/kit/submit.py, research/kit/coordination.py. About 0.3 CPU-hours on this code; about 12 CPU-hours on the sweeps above.
The group is research/kit/nonabelian_lp.py's zsz(31, 5, 2): C_31 ⋊ C_5 with y x = x^2 y (2 has order 5 mod 31), element x^i y^j at index 5 i + j, identity at 0; order 155, n = 310. With x = (1, 0), y = (0, 1):
a = 1 + x^20 + x^28 (indices 0, 100, 140), b = 1 + x^12 y^2 + x^25 y (indices 0, 62, 126).
import sys; sys.path[:0] = ["research/kit", "verify"] from nonabelian_lp import zsz from group_algebra import build_2bga from css import compute_k mul = zsz(31, 5, 2) HX, HZ = build_2bga(mul, [0, 100, 140], [0, 62, 126]) # n = 310, k = 20 assert compute_k(HX, HZ) == 20
Check sets match codes/310-20-12.json row for row in this order. The numpy surrogate.lightest_logical at 1,500 trials with seeds 62 (X side, pass (HX, HZ)) and 63 (Z side, pass (HZ, HX)) returns a weight-12 logical on each side.