Cell weight-6 x unrestricted, CSS board, n between 300 and 400. Before this filing the weight-6 frontier there held 310-10-22, 330-22-9, 330-68-6, 340-16-18, 360-12-24, 360-20-20, 360-38-8 and 382-36-10: every weight-6 entry with k >= 24 had d <= 10, and every one with d >= 12 had k <= 20. The hypothesis was that two-block group-algebra (2BGA) codes on non-abelian groups of order 150 to 200 could put a k >= 24, d >= 12 point into that gap at check weight 6. [[336,24,12]] does at the smaller end of the band: no board entry has n <= 336, k >= 24, d >= 12 and check weight <= 6, and the margins hold at k - 2 and d - 2 (neither [[336,22,12]] nor [[336,24,10]] is dominated). It is complementary to the [[378,24,16]] on C_63 ⋊ C_3 filed from the same campaign: that one has the larger distance, this one reaches k = 24, d = 12 with 42 fewer qubits.
Random-support two-block codes with a, b three group elements each, both containing the identity. This draw came from the kit's coset-code builder (research/kit/coset.py, Aydin-Tamo-Barg) with the trivial subgroup H = {e}, for which build_coset(mul, [0], a, b) is identical to group_algebra.build_2bga(mul, a, b) (the module's own self-test asserts this), so the code is a plain 2BGA on S4 x C7 (order 168, n = 336), and it is filed as one. The coset sweep drew groups from S5, A6, S5 x C2, S6, A5 x C3, A5 x C2, S4 x C5, S4 x C6, S4 x C7 with H a cyclic subgroup (or trivial) chosen so that 222 <= 2 [G:H] <= 400, a from G and b from the normaliser of H.
Random supports almost never give usable k (a generic weight-3 element is invertible on the higher-dimensional irreducible blocks of F_2[G]), so the sweep ran a parallel generate-and-rank prefilter: 60,000 draws (seed 54), of which 1,035 had k >= 12 and were connected. Those went through research/kit/search.screen with the gf2_fast backend at 400 trials; 3 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). The other two were a [[288,24,8]] on S4 x C6 (twice), which the [[240,24,8]] filed from the same campaign dominates. A serial sweep of 3,000 coset draws without the prefilter (seed 32) had 2,869 with k < 12 and nothing advancing; a second prefiltered sweep of the same generator at check weight 8 found nothing advancing either.
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 54 / 55 | 1,500 | X 12, Z 12 | | deep ladder, 3 fresh seeds (48762, 56681, 64600), gf2_fast | 10,000,000 each | 12, 12, 12 (X side) |
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). A [[336,20,12]] bivariate bicycle code on Z_42 x Z_4 from the same campaign (A = 1 + x^16 y + x^41 y^2, B = 1 + x^22 + x^38 y^2) also held d <= 12 through 3 x 10,000,000 fresh-seed trials; it is dominated by this code and was not filed.
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. Weight-4 multiples exist only for deg g <= 22, and 4,000 of those at 300 <= n <= 400 gave nothing advancing the weight-8 frontier even at 400 trials.
prefiltered draws (2,881 with k >= 18): every screen-depth survivor collapsed by 20,000 trials (dominated by 248-24-18, 252-26-18, 292-22-23, 336-24-24, 378-18-27 and similar).
(check weight 8), 5,000 draws, nothing advancing; weight-(2,2) entries (check weight 6) give k = |G| + 6 at d = 6, already dominated by the board's 258-88-6.
normaliser) in this sweep never passed the k prefilter at k >= 12 with a competitive distance; every survivor had H = {e}.
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, 40 forked processes for the generate + rank prefilter. Kit modules: research/kit/coset.py (build_coset), research/kit/group_algebra.py (sym, cyclic_product, direct_product, build_2bga), research/kit/search.py (screen), research/kit/surrogate.py (distance_rand_witness, lightest_logical), research/kit/prescreen.py, research/kit/submit.py, research/kit/coordination.py. About 0.3 CPU-hours on this code; about 10 CPU-hours on the sweeps above.
The group is direct_product(sym(4)[0], cyclic_product(7)[0])[0] from research/kit/group_algebra.py: S4 in the kit's BFS element order (generated by the transposition (0 1) and the 4-cycle) times C_7, element (s, c) at index 7 s + c, identity at 0. The supports are element indices in that table:
a = [0, 96, 143] (S4 elements 0, 13, 20 with C_7 parts 0, 5, 3), b = [0, 88, 166] (S4 elements 0, 12, 23 with C_7 parts 0, 4, 5).
import sys; sys.path[:0] = ["research/kit", "verify"] from group_algebra import sym, cyclic_product, direct_product, build_2bga from css import compute_k mul = direct_product(sym(4)[0], cyclic_product(7)[0])[0] HX, HZ = build_2bga(mul, [0, 96, 143], [0, 88, 166]) # n = 336, k = 24 assert compute_k(HX, HZ) == 24
Check sets match codes/336-24-12.json row for row in this order. Witness search: `surrogate.distance_rand_witness(HX, HZ, trials=2_000_000, seed=54000003 + 2_000_000, backend="fast", pair_depth=8)` returns a weight-12 logical; the numpy lightest_logical at 1,500 trials with seeds 54 (X) and 55 (Z) gives the two witnesses in the JSON.