← back to the board
[[336,24,12]] d ≤
n
336
k
24
d
12
kd²/n
10.286
w
6
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 12, d_Z ≤ 12 · w_X = 6, w_Z = 6 (max(d_X,d_Z)/min(d_X,d_Z); each side carries its own earned tier: = certified exact, ≤ witness upper bound)
d_X 12 · witness weight 12 (claimed upper_bound)
witness operator (support, 12 qubits)
[1, 35, 43, 89, 114, 139, 218, 241, 242, 251, 256, 273]
d_Z 12 · witness weight 12 (claimed upper_bound)
witness operator (support, 12 qubits)
[6, 94, 95, 113, 119, 143, 175, 197, 223, 250, 310, 328]
certificate none yet · distance stands as a self-certified upper bound (d ≤)

Diagnostics

computed by the verifier from the parity checks, the layout, and the stored witnesses; shown as evidence, not used for ranking
girth H_X 6 · H_Z 6 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 6 · H_Z 6
qubit degrees H_X 3 · H_Z 3
trapping sets H_X (1,3)×336 (2,4)×2520 (3,3)×168 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,3): 336 (2,4): 2520 (3,3): 168 (3,5): 24696 (3,7): 3360
trapping sets H_Z (1,3)×336 (2,4)×2520 (3,3)×168 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,3): 336 (2,4): 2520 (3,3): 168 (3,5): 24696 (3,7): 3360

Construction & provenance

authors @FarLab
provenance submitted through the challenge
novelty novelty not audited
construction two-block group algebra code on S4 x C7 (kit group_algebra Cayley-table indices, direct_product(sym(4), cyclic_product(7))): a = [0, 96, 143], b = [0, 88, 166]; H_X = [L(a) | R(b)], H_Z = [R(b)^T | L(a)^T]
model Claude Claude Fable 5.1 (claimed, not verified)
date 2026-10-17
family generalized bicycle (a tag, not a ranking)
locality unrestricted (computed from the layout)
weight class weight ≤ 6 (computed)

How this code was found

the research note submitted with this code · raw markdown · all notes

[[336,24,12]] — two-block group-algebra code over S4 x C7

Direction & hypothesis

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.

What was searched

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.

Evidence trail

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.

Dead ends

  • Cyclic generalized-bicycle codes with a designed divisor g | x^m - 1 at
  • 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.

  • Random-support 2BGA at check weight 8, 16,000 serial plus 150,000
  • 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).

  • Non-abelian lifted products with 1 x 2 bases: weight-(3,2) entries
  • (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.

  • Proper coset codes (H non-trivial and non-normal, b restricted to the
  • normaliser) in this sweep never passed the k prefilter at k >= 12 with a competitive distance; every survivor had H = {e}.

Tools

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.

Reproduction

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.

Parity checks

X-checks 168 (max weight 6) · Z-checks 168 (max weight 6)
H_X (168 checks, sparse supports)
[0, 30, 144, 168, 255, 331] [1, 31, 145, 169, 256, 332] [2, 32, 146, 170, 257, 333] [3, 33, 140, 171, 258, 334] [4, 34, 141, 172, 252, 335] [5, 28, 142, 173, 253, 329] [6, 29, 143, 174, 254, 330] [7, 16, 165, 175, 234, 310] [8, 17, 166, 176, 235, 311] [9, 18, 167, 177, 236, 312] [10, 19, 161, 178, 237, 313] [11, 20, 162, 179, 231, 314] [12, 14, 163, 180, 232, 308] [13, 15, 164, 181, 233, 309] [14, 58, 151, 182, 289, 297] [15, 59, 152, 183, 290, 298] [16, 60, 153, 184, 291, 299] [17, 61, 147, 185, 292, 300] [18, 62, 148, 186, 293, 294] [19, 56, 149, 187, 287, 295] [20, 57, 150, 188, 288, 296] [21, 37, 130, 189, 275, 318] [22, 38, 131, 190, 276, 319] [23, 39, 132, 191, 277, 320] [24, 40, 126, 192, 278, 321] [25, 41, 127, 193, 279, 315] [26, 35, 128, 194, 273, 316] [27, 36, 129, 195, 274, 317] [28, 93, 116, 196, 248, 324] [29, 94, 117, 197, 249, 325] [30, 95, 118, 198, 250, 326] [31, 96, 112, 199, 251, 327] [32, 97, 113, 200, 245, 328] [33, 91, 114, 201, 246, 322] [34, 92, 115, 202, 247, 323] [35, 67, 100, 203, 254, 332] [36, 68, 101, 204, 255, 333] [37, 69, 102, 205, 256, 334] [38, 63, 103, 206, 257, 335] [39, 64, 104, 207, 258, 329] [40, 65, 98, 208, 252, 330] [41, 66, 99, 209, 253, 331] [42, 65, 102, 210, 227, 303] [43, 66, 103, 211, 228, 304] [44, 67, 104, 212, 229, 305] [45, 68, 98, 213, 230, 306] [46, 69, 99, 214, 224, 307] [47, 63, 100, 215, 225, 301] [48, 64, 101, 216, 226, 302] [49, 72, 88, 217, 233, 311] [50, 73, 89, 218, 234, 312] [51, 74, 90, 219, 235, 313] [52, 75, 84, 220, 236, 314] [53, 76, 85, 221, 237, 308] [54, 70, 86, 222, 231, 309] [55, 71, 87, 223, 232, 310] [9, 56, 158, 213, 224, 282] [10, 57, 159, 214, 225, 283] [11, 58, 160, 215, 226, 284] [12, 59, 154, 216, 227, 285] [13, 60, 155, 210, 228, 286] [7, 61, 156, 211, 229, 280] [8, 62, 157, 212, 230, 281] [39, 63, 128, 178, 219, 231] [40, 64, 129, 179, 220, 232] [41, 65, 130, 180, 221, 233] [35, 66, 131, 181, 222, 234] [36, 67, 132, 175, 223, 235] [37, 68, 126, 176, 217, 236] [38, 69, 127, 177, 218, 237] [70, 109, 135, 238, 290, 296] [71, 110, 136, 239, 291, 297] [72, 111, 137, 240, 292, 298] [73, 105, 138, 241, 293, 299] [74, 106, 139, 242, 287, 300] [75, 107, 133, 243, 288, 294] [76, 108, 134, 244, 289, 295] [77, 107, 137, 199, 245, 268] [78, 108, 138, 200, 246, 269] [79, 109, 139, 201, 247, 270] [80, 110, 133, 202, 248, 271] [81, 111, 134, 196, 249, 272] [82, 105, 135, 197, 250, 266] [83, 106, 136, 198, 251, 267] [53, 79, 84, 171, 205, 252] [54, 80, 85, 172, 206, 253] [55, 81, 86, 173, 207, 254] [49, 82, 87, 174, 208, 255] [50, 83, 88, 168, 209, 256] [51, 77, 89, 169, 203, 257] [52, 78, 90, 170, 204, 258] [2, 91, 123, 259, 276, 317] [3, 92, 124, 260, 277, 318] [4, 93, 125, 261, 278, 319] [5, 94, 119, 262, 279, 320] [6, 95, 120, 263, 273, 321] [0, 96, 121, 264, 274, 315] [1, 97, 122, 265, 275, 316] [23, 46, 98, 247, 266, 325] [24, 47, 99, 248, 267, 326] [25, 48, 100, 249, 268, 327] [26, 42, 101, 250, 269, 328] [27, 43, 102, 251, 270, 322] [21, 44, 103, 245, 271, 323] [22, 45, 104, 246, 272, 324] [74, 86, 105, 191, 262, 273] [75, 87, 106, 192, 263, 274] [76, 88, 107, 193, 264, 275] [70, 89, 108, 194, 265, 276] [71, 90, 109, 195, 259, 277] [72, 84, 110, 189, 260, 278] [73, 85, 111, 190, 261, 279] [32, 112, 142, 226, 280, 304] [33, 113, 143, 227, 281, 305] [34, 114, 144, 228, 282, 306] [28, 115, 145, 229, 283, 307] [29, 116, 146, 230, 284, 301] [30, 117, 140, 224, 285, 302] [31, 118, 141, 225, 286, 303] [95, 114, 119, 184, 241, 287] [96, 115, 120, 185, 242, 288] [97, 116, 121, 186, 243, 289] [91, 117, 122, 187, 244, 290] [92, 118, 123, 188, 238, 291] [93, 112, 124, 182, 239, 292] [94, 113, 125, 183, 240, 293] [25, 44, 126, 185, 240, 294] [26, 45, 127, 186, 241, 295] [27, 46, 128, 187, 242, 296] [21, 47, 129, 188, 243, 297] [22, 48, 130, 182, 244, 298] [23, 42, 131, 183, 238, 299] [24, 43, 132, 184, 239, 300] [51, 81, 133, 212, 283, 301] [52, 82, 134, 213, 284, 302] [53, 83, 135, 214, 285, 303] [54, 77, 136, 215, 286, 304] [55, 78, 137, 216, 280, 305] [49, 79, 138, 210, 281, 306] [50, 80, 139, 211, 282, 307] [4, 121, 140, 177, 220, 308] [5, 122, 141, 178, 221, 309] [6, 123, 142, 179, 222, 310] [0, 124, 143, 180, 223, 311] [1, 125, 144, 181, 217, 312] [2, 119, 145, 175, 218, 313] [3, 120, 146, 176, 219, 314] [18, 147, 163, 192, 261, 315] [19, 148, 164, 193, 262, 316] [20, 149, 165, 194, 263, 317] [14, 150, 166, 195, 264, 318] [15, 151, 167, 189, 265, 319] [16, 152, 161, 190, 259, 320] [17, 153, 162, 191, 260, 321] [60, 149, 154, 198, 269, 322] [61, 150, 155, 199, 270, 323] [62, 151, 156, 200, 271, 324] [56, 152, 157, 201, 272, 325] [57, 153, 158, 202, 266, 326] [58, 147, 159, 196, 267, 327] [59, 148, 160, 197, 268, 328] [11, 156, 161, 170, 206, 329] [12, 157, 162, 171, 207, 330] [13, 158, 163, 172, 208, 331] [7, 159, 164, 173, 209, 332] [8, 160, 165, 174, 203, 333] [9, 154, 166, 168, 204, 334] [10, 155, 167, 169, 205, 335]
H_Z (168 checks, sparse supports)
[0, 88, 166, 168, 264, 311] [1, 89, 167, 169, 265, 312] [2, 90, 161, 170, 259, 313] [3, 84, 162, 171, 260, 314] [4, 85, 163, 172, 261, 308] [5, 86, 164, 173, 262, 309] [6, 87, 165, 174, 263, 310] [7, 67, 145, 175, 229, 332] [8, 68, 146, 176, 230, 333] [9, 69, 140, 177, 224, 334] [10, 63, 141, 178, 225, 335] [11, 64, 142, 179, 226, 329] [12, 65, 143, 180, 227, 330] [13, 66, 144, 181, 228, 331] [14, 124, 130, 180, 182, 318] [15, 125, 131, 181, 183, 319] [16, 119, 132, 175, 184, 320] [17, 120, 126, 176, 185, 321] [18, 121, 127, 177, 186, 315] [19, 122, 128, 178, 187, 316] [20, 123, 129, 179, 188, 317] [21, 110, 151, 189, 271, 297] [22, 111, 152, 190, 272, 298] [23, 105, 153, 191, 266, 299] [24, 106, 147, 192, 267, 300] [25, 107, 148, 193, 268, 294] [26, 108, 149, 194, 269, 295] [27, 109, 150, 195, 270, 296] [28, 81, 159, 173, 196, 283] [29, 82, 160, 174, 197, 284] [30, 83, 154, 168, 198, 285] [31, 77, 155, 169, 199, 286] [32, 78, 156, 170, 200, 280] [33, 79, 157, 171, 201, 281] [34, 80, 158, 172, 202, 282] [35, 89, 165, 194, 203, 234] [36, 90, 166, 195, 204, 235] [37, 84, 167, 189, 205, 236] [38, 85, 161, 190, 206, 237] [39, 86, 162, 191, 207, 231] [40, 87, 163, 192, 208, 232] [41, 88, 164, 193, 209, 233] [42, 60, 138, 210, 269, 299] [43, 61, 139, 211, 270, 300] [44, 62, 133, 212, 271, 294] [45, 56, 134, 213, 272, 295] [46, 57, 135, 214, 266, 296] [47, 58, 136, 215, 267, 297] [48, 59, 137, 216, 268, 298] [49, 68, 144, 217, 255, 306] [50, 69, 145, 218, 256, 307] [51, 63, 146, 219, 257, 301] [52, 64, 140, 220, 258, 302] [53, 65, 141, 221, 252, 303] [54, 66, 142, 222, 253, 304] [55, 67, 143, 223, 254, 305] [46, 56, 117, 187, 224, 325] [47, 57, 118, 188, 225, 326] [48, 58, 112, 182, 226, 327] [42, 59, 113, 183, 227, 328] [43, 60, 114, 184, 228, 322] [44, 61, 115, 185, 229, 323] [45, 62, 116, 186, 230, 324] [11, 54, 63, 206, 215, 231] [12, 55, 64, 207, 216, 232] [13, 49, 65, 208, 210, 233] [7, 50, 66, 209, 211, 234] [8, 51, 67, 203, 212, 235] [9, 52, 68, 204, 213, 236] [10, 53, 69, 205, 214, 237] [70, 123, 131, 222, 238, 276] [71, 124, 132, 223, 239, 277] [72, 125, 126, 217, 240, 278] [73, 119, 127, 218, 241, 279] [74, 120, 128, 219, 242, 273] [75, 121, 129, 220, 243, 274] [76, 122, 130, 221, 244, 275] [32, 77, 103, 245, 257, 304] [33, 78, 104, 246, 258, 305] [34, 79, 98, 247, 252, 306] [28, 80, 99, 248, 253, 307] [29, 81, 100, 249, 254, 301] [30, 82, 101, 250, 255, 302] [31, 83, 102, 251, 256, 303] [4, 40, 84, 220, 252, 278] [5, 41, 85, 221, 253, 279] [6, 35, 86, 222, 254, 273] [0, 36, 87, 223, 255, 274] [1, 37, 88, 217, 256, 275] [2, 38, 89, 218, 257, 276] [3, 39, 90, 219, 258, 277] [91, 109, 152, 201, 259, 290] [92, 110, 153, 202, 260, 291] [93, 111, 147, 196, 261, 292] [94, 105, 148, 197, 262, 293] [95, 106, 149, 198, 263, 287] [96, 107, 150, 199, 264, 288] [97, 108, 151, 200, 265, 289] [82, 98, 158, 208, 213, 266] [83, 99, 159, 209, 214, 267] [77, 100, 160, 203, 215, 268] [78, 101, 154, 204, 216, 269] [79, 102, 155, 205, 210, 270] [80, 103, 156, 206, 211, 271] [81, 104, 157, 207, 212, 272] [26, 95, 105, 241, 250, 273] [27, 96, 106, 242, 251, 274] [21, 97, 107, 243, 245, 275] [22, 91, 108, 244, 246, 276] [23, 92, 109, 238, 247, 277] [24, 93, 110, 239, 248, 278] [25, 94, 111, 240, 249, 279] [61, 112, 137, 199, 280, 292] [62, 113, 138, 200, 281, 293] [56, 114, 139, 201, 282, 287] [57, 115, 133, 202, 283, 288] [58, 116, 134, 196, 284, 289] [59, 117, 135, 197, 285, 290] [60, 118, 136, 198, 286, 291] [19, 74, 119, 262, 287, 313] [20, 75, 120, 263, 288, 314] [14, 76, 121, 264, 289, 308] [15, 70, 122, 265, 290, 309] [16, 71, 123, 259, 291, 310] [17, 72, 124, 260, 292, 311] [18, 73, 125, 261, 293, 312] [18, 75, 126, 192, 236, 294] [19, 76, 127, 193, 237, 295] [20, 70, 128, 194, 231, 296] [14, 71, 129, 195, 232, 297] [15, 72, 130, 189, 233, 298] [16, 73, 131, 190, 234, 299] [17, 74, 132, 191, 235, 300] [47, 116, 133, 243, 248, 301] [48, 117, 134, 244, 249, 302] [42, 118, 135, 238, 250, 303] [43, 112, 136, 239, 251, 304] [44, 113, 137, 240, 245, 305] [45, 114, 138, 241, 246, 306] [46, 115, 139, 242, 247, 307] [12, 53, 140, 171, 285, 308] [13, 54, 141, 172, 286, 309] [7, 55, 142, 173, 280, 310] [8, 49, 143, 174, 281, 311] [9, 50, 144, 168, 282, 312] [10, 51, 145, 169, 283, 313] [11, 52, 146, 170, 284, 314] [25, 96, 147, 185, 315, 327] [26, 97, 148, 186, 316, 328] [27, 91, 149, 187, 317, 322] [21, 92, 150, 188, 318, 323] [22, 93, 151, 182, 319, 324] [23, 94, 152, 183, 320, 325] [24, 95, 153, 184, 321, 326] [33, 102, 154, 227, 322, 334] [34, 103, 155, 228, 323, 335] [28, 104, 156, 229, 324, 329] [29, 98, 157, 230, 325, 330] [30, 99, 158, 224, 326, 331] [31, 100, 159, 225, 327, 332] [32, 101, 160, 226, 328, 333] [5, 39, 161, 178, 320, 329] [6, 40, 162, 179, 321, 330] [0, 41, 163, 180, 315, 331] [1, 35, 164, 181, 316, 332] [2, 36, 165, 175, 317, 333] [3, 37, 166, 176, 318, 334] [4, 38, 167, 177, 319, 335]
Code ID 336-24-12 · download JSON · raw on GitHub