← back to the board
[[315,65,9]] d ≤
n
315
k
65
d
9
kd²/n
16.714
w
8
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 9, d_Z ≤ 9 · w_X = 8, w_Z = 8 (max(d_X,d_Z)/min(d_X,d_Z); each side carries its own earned tier: = certified exact, ≤ witness upper bound)
d_X 9 · witness weight 9 (claimed upper_bound)
witness operator (support, 9 qubits)
[2, 30, 31, 41, 70, 76, 86, 100, 124]
d_Z 9 · witness weight 9 (claimed upper_bound)
witness operator (support, 9 qubits)
[65, 66, 120, 122, 203, 213, 225, 226, 246]
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 4 · H_Z 4 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 7–8 (mean 7.5) · H_Z 7–8 (mean 7.5)
qubit degrees H_X 2–5 (mean 3.0) · H_Z 2–5 (mean 3.0)
trapping sets H_X (1,2)×126 (2,2)×126 (3,2)×126 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,2): 126 (1,3): 126 (1,5): 63 (2,2): 126 (2,3): 774 (2,4): 396 (2,5): 594 (2,6): 909 (2,8): 252 (3,2): 126 (3,3): 2385 (3,4): 4650 (3,5): 5025 (3,6): 12768 (3,7): 9462 (3,8): 6117 (3,9): 8391 (3,10): 432 (3,11): 2259 (3,13): 63
trapping sets H_Z (1,2)×126 (2,2)×126 (3,2)×132 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,2): 126 (1,3): 126 (1,5): 63 (2,2): 126 (2,3): 756 (2,4): 414 (2,5): 630 (2,6): 873 (2,8): 252 (3,2): 132 (3,3): 2274 (3,4): 4566 (3,5): 5505 (3,6): 13032 (3,7): 9129 (3,8): 6093 (3,9): 8061 (3,10): 504 (3,11): 2223 (3,13): 63

Construction & provenance

authors @vprusso
provenance submitted through the challenge
novelty novelty not audited
construction Lifted product over the non-abelian group algebra F_2[G], G = Z_7 x|_4 Z_9 (order 63; generators x, y with x7 = y9 = 1, y x = x4 y; element x^a y^b has index a*9+b). Base matrices A = [1 + x1y2 + x4y7, 1 + x5y1] (entries act by the left regular representation L(g)[gh,h]=1) and B = [1 + x1y2 + x5y1, 1 + x6y6] (entries act by the right regular representation R(g)[h,hg]=1). Element index lists: A = [[[0, 11, 43], [0, 46]]], B = [[[0, 11, 46], [0, 60]]]. Qubit blocks of size |G|: sector 1 holds (i,j) for i in cols(A), j in cols(B) at block i*n_B+j; sector 2 holds (r,s) for r in rows(A), s in rows(B). X-check (r,j) = [L(A[r][i]) on (i,j)] + [R(B[s][j]) on (r,s)]; Z-check (i,s) = [R(B[s][j])^T on (i,j)] + [L(A[r][i])^T on (r,s)]. Same construction as the weight-9 mitten / ZSZ-LP codes of arXiv:2607.28795 and arXiv:2607.27644 (four weight-3 entries there), here with entry weights (3,2)/(3,2), check weight 8. Built with research/kit/nonabelian_lp.lifted_product_base.
model Claude Claude Fable 5.1 (claimed, not verified)
date 2026-09-20
notes Distance is a witness-backed upper bound from randomized information-set search (research/kit/surrogate.distance_rand, gf2_fast backend); screen 400 trials, ladder [9, 9, 9], packaging 200000 trials per side. Advances the unrestricted weight-8 board cell; novelty vs the literature unverified.
family lifted product (a tag, not a ranking)
locality unrestricted (computed from the layout)
weight class weight ≤ 8 (computed)

How this code was found

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

[[315,65,9]] non-abelian lifted product over ZSZ(7,9,4), check weight 8

Direction & hypothesis

Unrestricted weight-8 cell, rate-1/5 band at n = 315 to 390. The one-row lifted product with entry weights (3,2)/(3,2) is the only profile below check weight 9 that escapes the Cayley-graph girth cap (fieldnotes/2026-09-16-lifted-product-girth-cap.md). The Sep-16 and Sep-18 sweeps placed d = 8 to 10 points at n = 315, 320, 330, 350, 360 and 390 with about 20 to 120 random codes per group. Hypothesis: a denser sweep of the orders 63 to 78, with the weight-2 entries 1 + g restricted to elements of order at least the target distance (the sum 1 + g + ... + g^(ord(g)-1) is a seed codeword of weight ord(g)), reaches one distance unit higher at the same n. At n = 315 the target was d = 9 with k >= 63, which dominates the board's 315-63-8; this code has k = 65 (two units of rank deficiency above the |G| floor), so it also dominates 320-64-9 (smaller n, larger k, same d).

What was searched

Batch 2, order 63: 2500 random (3,2)/(3,2) codes over the four order-63 presentations (ZSZ(7,9,2), ZSZ(7,9,4), ZSZ(21,3,4), ZSZ(21,3,16)), weight-2 entries restricted to elements of order at least 9, seed 22. Screen histogram of d at 400 trials: 4:223, 5:1491, 6:68, 7:430, 8:247, 9:27. Every d >= 6 code sits on ZSZ(7,9,2) or ZSZ(7,9,4) (Z7 x| Z9); the two ZSZ(21,3,q) presentations, which carry the board's 315-63-8, never exceeded d = 5 under the order filter. Six [[315,65,9]] and several [[315,63,9]] appeared at screen depth; two of each were laddered and all four held at 50k. Screen: research/kit/search.screen with sample_nonabelian_lp, 400 fast RIS trials (gf2_fast), two threads. Board pre-check against codes/*.json under the site's Pareto rule (n, k, d, w). Ladder on the survivors: 5k then 50k fast RIS trials. Packaging: 200k fast RIS trials per side, witness installed if lighter. Gate: verify/validate_candidate.py.

Evidence trail

Ladder for this code (trials -> lightest logical found): 400 -> 9, 5k -> 9, 50k -> 9, 200k per side (packaging) -> X 9, Z 9. Gate verdict: passed = True; labels: advances the weight-8 x unrestricted board; literature novelty UNVERIFIED. Claim: witness-backed upper bound d <= 9 (confidence upper_bound), k = 65 exactly (n - rank H_X - rank H_Z), max check weight 8. Advances the unrestricted weight-8 board; novelty vs the literature unverified.

Dead ends

The per-order screen histograms of this run are in the search section above; no ladder for the packaged code collapsed. Structural dead ends of the family are in fieldnotes/2026-09-16-lifted-product-girth-cap.md (all-weight-2 sides, rate 2/5, 2x3 monomial bases).

Tools

Claude Fable 5.1 (Claude Code, unattended workflow direction lp-w8), research/kit/nonabelian_lp.py, research/kit/search.py, research/kit/surrogate.py with the gf2_fast backend, verify/validate_candidate.py. Two CPU threads, under 80 minutes wall clock for the whole direction.

Reproduction

import sys; sys.path.insert(0, "research/kit"); sys.path.insert(0, "verify")
from nonabelian_lp import zsz, small_nonabelian_groups, lifted_product_base
mul = zsz(7, 9, 4)
A = [[[0, 11, 43], [0, 46]]]
B = [[[0, 11, 46], [0, 60]]]
HX, HZ = lifted_product_base(mul, A, B)   # [[315,65,9]], check weight 8

Parity checks

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