← back to the board
[[240,6,22]] d ≤
n
240
k
6
d
22
kd²/n
12.1
w
8
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 22, d_Z ≤ 22 · 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 22 · witness weight 22 (claimed upper_bound)
witness operator (support, 22 qubits)
[2, 5, 8, 16, 21, 29, 45, 48, 64, 72, 80, 88, 90, 93, 98, 104, 106, 117, 129, 161, 202, 210]
d_Z 22 · witness weight 22 (claimed upper_bound)
witness operator (support, 22 qubits)
[5, 28, 116, 117, 124, 126, 129, 134, 137, 150, 153, 156, 161, 166, 180, 185, 188, 190, 209, 222, 230, 238]
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 8 · H_Z 8
qubit degrees H_X 4 · H_Z 4
trapping sets H_X (1,4)×240 (2,6)×3360 (3,6)×1528 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,4): 240 (2,6): 3360 (3,6): 1528 (3,8): 65976 (3,10): 6720
trapping sets H_Z (1,4)×240 (2,6)×3360 (3,6)×1528 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,4): 240 (2,6): 3360 (3,6): 1528 (3,8): 65976 (3,10): 6720

Construction & provenance

authors @simsaidan
provenance submitted through the challenge
novelty novelty not audited
construction 2BGA on metacyclic Z_15 x| Z_8 with r=4; supports a=[83, 21, 107, 116], b=[17, 20, 105, 97]. Found by sample_metacyclic sweep (order_range 40-150, weight 4, seed 44); see notes/240-6-22.md.
model Cursor Composer 2.5 (claimed, not verified)
date 2026-09-05
notes Witness-backed upper bound d<=22 (not exact-certified). Initial package claimed 24; CI refutation (seed 1806566679) found weight-22 X-logicals. Retightened both sides to weight-22 witnesses. Checked: not an exact/WL board duplicate.
family generalized bicycle (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

[[240,6,22]] — metacyclic 2BGA on Z_15 ⋊ Z_8 (r=4)

Direction & hypothesis

Aim: the unrestricted × weight-8 cell, via non-abelian 2BGA on metacyclic groups — the family line that historically produced board codes such as [[294,8,19]]. Random abelian BB is largely mined; metacyclic groups still leave moderate-n openings for weight-8 supports.

What was searched

Random metacyclic 2BGA sweep with the kit sampler research/kit/search.py:sample_metacyclic (order 40–150, weight-4 supports per block → check weight 8), 1200 draws, seed 44. Parallel screens also ran dihedral weight-4 and bivariate-bicycle weight-3. Screening used the fast RIS backend (make fast) at 400 trials/candidate; packaging re-searched witnesses at 12k trials/side before the trusted gate.

Winning draw: metacyclic Z_15 ⋊ Z_8 with r=4 (group order 120, n=240), supports

a = [83, 21, 107, 116]
b = [17, 20, 105, 97]

Evidence trail

  • Rebuild: group_algebra.metacyclic(15, 8, 4) + build_2bga → n=240, k=6,
  • CSS ok, max check weight 8.

  • Screen (400 fast RIS trials): d ≤ 26.
  • Packaging (12k RIS trials/side): initially claimed d ≤ 24.
  • CI refutation on PR #898 (seed 1806566679): found weight-22 X-logicals,
  • so the 24 claim was inflated. Retightened to d ≤ 22 on both sides.

  • Local re-check: qldpc_verify with refute seeds including 1806566679,
  • 42, 99, 12345, 7 — all clean. Trusted gate: advances weight-8 × unrestricted.

Tier: d ≤ 22 (witness-backed upper bound; not exact-certified).

Dead ends

  • The d ≤ 24 packaging claim failed independent CI search — classic
  • distance inflation at moderate trial depth (see fieldnotes/2026-07-01-trial-depth-floors.md).

  • Weight-4 BB screen: many codes at kd²/n = 2.0 only.
  • Most other metacyclic shortlist members passed the gate but were
  • dominated on the weight-8 × unrestricted cell.

Tools

  • Model: Cursor Composer 2.5 (self-reported).
  • Repo tooling: research/kit/group_algebra.py, research/kit/search.py,
  • research/kit/surrogate.py, research/kit/submit.py, verify/validate_candidate.py; optional gf2_fast via make fast.

Reproduction

from group_algebra import metacyclic, build_2bga
from css import compute_k, verify_css
mul, _ = metacyclic(15, 8, 4)
HX, HZ = build_2bga(mul, [83, 21, 107, 116], [17, 20, 105, 97])
assert verify_css(HX, HZ) and compute_k(HX, HZ) == 6

Parity checks

X-checks 120 (max weight 8) · Z-checks 120 (max weight 8)
H_X (120 checks, sparse supports)
[12, 45, 59, 69, 183, 191, 223, 228] [13, 46, 60, 70, 136, 144, 181, 224] [14, 47, 61, 71, 177, 185, 217, 230] [15, 40, 62, 64, 138, 146, 183, 226] [8, 41, 63, 65, 179, 187, 219, 224] [9, 42, 56, 66, 140, 148, 177, 228] [10, 43, 57, 67, 181, 189, 221, 226] [11, 44, 58, 68, 142, 150, 179, 230] [20, 77, 91, 101, 191, 199, 231, 236] [21, 78, 92, 102, 144, 152, 189, 232] [22, 79, 93, 103, 185, 193, 225, 238] [23, 72, 94, 96, 146, 154, 191, 234] [16, 73, 95, 97, 187, 195, 227, 232] [17, 74, 88, 98, 148, 156, 185, 236] [18, 75, 89, 99, 189, 197, 229, 234] [19, 76, 90, 100, 150, 158, 187, 238] [3, 13, 28, 109, 124, 199, 207, 239] [4, 14, 29, 110, 120, 152, 160, 197] [5, 15, 30, 111, 126, 193, 201, 233] [6, 8, 31, 104, 122, 154, 162, 199] [7, 9, 24, 105, 120, 195, 203, 235] [0, 10, 25, 106, 124, 156, 164, 193] [1, 11, 26, 107, 122, 197, 205, 237] [2, 12, 27, 108, 126, 158, 166, 195] [21, 35, 36, 45, 127, 132, 207, 215] [22, 36, 37, 46, 128, 160, 168, 205] [23, 37, 38, 47, 121, 134, 201, 209] [16, 38, 39, 40, 130, 162, 170, 207] [17, 32, 39, 41, 123, 128, 203, 211] [18, 32, 33, 42, 132, 164, 172, 201] [19, 33, 34, 43, 125, 130, 205, 213] [20, 34, 35, 44, 134, 166, 174, 203] [44, 53, 67, 77, 135, 140, 215, 223] [45, 54, 68, 78, 136, 168, 176, 213] [46, 55, 69, 79, 129, 142, 209, 217] [47, 48, 70, 72, 138, 170, 178, 215] [40, 49, 71, 73, 131, 136, 211, 219] [41, 50, 64, 74, 140, 172, 180, 209] [42, 51, 65, 75, 133, 138, 213, 221] [43, 52, 66, 76, 142, 174, 182, 211] [52, 85, 99, 109, 143, 148, 223, 231] [53, 86, 100, 110, 144, 176, 184, 221] [54, 87, 101, 111, 137, 150, 217, 225] [55, 80, 102, 104, 146, 178, 186, 223] [48, 81, 103, 105, 139, 144, 219, 227] [49, 82, 96, 106, 148, 180, 188, 217] [50, 83, 97, 107, 141, 146, 221, 229] [51, 84, 98, 108, 150, 182, 190, 219] [11, 21, 60, 117, 151, 156, 231, 239] [12, 22, 61, 118, 152, 184, 192, 229] [13, 23, 62, 119, 145, 158, 225, 233] [14, 16, 63, 112, 154, 186, 194, 231] [15, 17, 56, 113, 147, 152, 227, 235] [8, 18, 57, 114, 156, 188, 196, 225] [9, 19, 58, 115, 149, 154, 229, 237] [10, 20, 59, 116, 158, 190, 198, 227] [29, 43, 53, 68, 127, 159, 164, 239] [30, 44, 54, 69, 160, 192, 200, 237] [31, 45, 55, 70, 121, 153, 166, 233] [24, 46, 48, 71, 162, 194, 202, 239] [25, 47, 49, 64, 123, 155, 160, 235] [26, 40, 50, 65, 164, 196, 204, 233] [27, 41, 51, 66, 125, 157, 162, 237] [28, 42, 52, 67, 166, 198, 206, 235] [61, 75, 76, 85, 127, 135, 167, 172] [62, 76, 77, 86, 125, 168, 200, 208] [63, 77, 78, 87, 121, 129, 161, 174] [56, 78, 79, 80, 127, 170, 202, 210] [57, 72, 79, 81, 123, 131, 163, 168] [58, 72, 73, 82, 121, 172, 204, 212] [59, 73, 74, 83, 125, 133, 165, 170] [60, 74, 75, 84, 123, 174, 206, 214] [84, 93, 107, 117, 135, 143, 175, 180] [85, 94, 108, 118, 133, 176, 208, 216] [86, 95, 109, 119, 129, 137, 169, 182] [87, 88, 110, 112, 135, 178, 210, 218] [80, 89, 111, 113, 131, 139, 171, 176] [81, 90, 104, 114, 129, 180, 212, 220] [82, 91, 105, 115, 133, 141, 173, 178] [83, 92, 106, 116, 131, 182, 214, 222] [5, 19, 29, 92, 143, 151, 183, 188] [6, 20, 30, 93, 141, 184, 216, 224] [7, 21, 31, 94, 137, 145, 177, 190] [0, 22, 24, 95, 143, 186, 218, 226] [1, 23, 25, 88, 139, 147, 179, 184] [2, 16, 26, 89, 137, 188, 220, 228] [3, 17, 27, 90, 141, 149, 181, 186] [4, 18, 28, 91, 139, 190, 222, 230] [37, 51, 61, 100, 151, 159, 191, 196] [38, 52, 62, 101, 149, 192, 224, 232] [39, 53, 63, 102, 145, 153, 185, 198] [32, 54, 56, 103, 151, 194, 226, 234] [33, 55, 57, 96, 147, 155, 187, 192] [34, 48, 58, 97, 145, 196, 228, 236] [35, 49, 59, 98, 149, 157, 189, 194] [36, 50, 60, 99, 147, 198, 230, 238] [69, 83, 93, 108, 159, 167, 199, 204] [70, 84, 94, 109, 120, 157, 200, 232] [71, 85, 95, 110, 153, 161, 193, 206] [64, 86, 88, 111, 122, 159, 202, 234] [65, 87, 89, 104, 155, 163, 195, 200] [66, 80, 90, 105, 124, 153, 204, 236] [67, 81, 91, 106, 157, 165, 197, 202] [68, 82, 92, 107, 126, 155, 206, 238] [5, 101, 115, 116, 167, 175, 207, 212] [6, 102, 116, 117, 120, 128, 165, 208] [7, 103, 117, 118, 161, 169, 201, 214] [0, 96, 118, 119, 122, 130, 167, 210] [1, 97, 112, 119, 163, 171, 203, 208] [2, 98, 112, 113, 124, 132, 161, 212] [3, 99, 113, 114, 165, 173, 205, 210] [4, 100, 114, 115, 126, 134, 163, 214] [4, 13, 27, 37, 175, 183, 215, 220] [5, 14, 28, 38, 128, 136, 173, 216] [6, 15, 29, 39, 169, 177, 209, 222] [7, 8, 30, 32, 130, 138, 175, 218] [0, 9, 31, 33, 171, 179, 211, 216] [1, 10, 24, 34, 132, 140, 169, 220] [2, 11, 25, 35, 173, 181, 213, 218] [3, 12, 26, 36, 134, 142, 171, 222]
H_Z (120 checks, sparse supports)
[17, 20, 97, 105, 141, 203, 227, 236] [26, 58, 66, 69, 142, 204, 228, 237] [19, 22, 99, 107, 143, 205, 229, 238] [28, 60, 68, 71, 136, 206, 230, 239] [16, 21, 101, 109, 137, 207, 231, 232] [30, 62, 65, 70, 138, 200, 224, 233] [18, 23, 103, 111, 139, 201, 225, 234] [24, 56, 64, 67, 140, 202, 226, 235] [25, 28, 105, 113, 124, 139, 173, 235] [34, 66, 74, 77, 125, 140, 174, 236] [27, 30, 107, 115, 126, 141, 175, 237] [36, 68, 76, 79, 127, 142, 168, 238] [24, 29, 109, 117, 120, 143, 169, 239] [38, 70, 73, 78, 121, 136, 170, 232] [26, 31, 111, 119, 122, 137, 171, 233] [32, 64, 72, 75, 123, 138, 172, 234] [1, 33, 36, 113, 132, 147, 171, 205] [42, 74, 82, 85, 133, 148, 172, 206] [3, 35, 38, 115, 134, 149, 173, 207] [44, 76, 84, 87, 135, 150, 174, 200] [5, 32, 37, 117, 128, 151, 175, 201] [46, 78, 81, 86, 129, 144, 168, 202] [7, 34, 39, 119, 130, 145, 169, 203] [40, 72, 80, 83, 131, 146, 170, 204] [1, 9, 41, 44, 140, 179, 203, 237] [50, 82, 90, 93, 141, 180, 204, 238] [3, 11, 43, 46, 142, 181, 205, 239] [52, 84, 92, 95, 143, 182, 206, 232] [5, 13, 40, 45, 136, 183, 207, 233] [54, 86, 89, 94, 137, 176, 200, 234] [7, 15, 42, 47, 138, 177, 201, 235] [48, 80, 88, 91, 139, 178, 202, 236] [9, 17, 49, 52, 148, 149, 211, 235] [58, 90, 98, 101, 149, 150, 212, 236] [11, 19, 51, 54, 150, 151, 213, 237] [60, 92, 100, 103, 144, 151, 214, 238] [13, 21, 48, 53, 144, 145, 215, 239] [62, 94, 97, 102, 145, 146, 208, 232] [15, 23, 50, 55, 146, 147, 209, 233] [56, 88, 96, 99, 147, 148, 210, 234] [17, 25, 57, 60, 123, 147, 156, 181] [66, 98, 106, 109, 124, 148, 157, 182] [19, 27, 59, 62, 125, 149, 158, 183] [68, 100, 108, 111, 126, 150, 159, 176] [21, 29, 56, 61, 127, 151, 152, 177] [70, 102, 105, 110, 120, 144, 153, 178] [23, 31, 58, 63, 121, 145, 154, 179] [64, 96, 104, 107, 122, 146, 155, 180] [25, 33, 65, 68, 155, 164, 179, 213] [74, 106, 114, 117, 156, 165, 180, 214] [27, 35, 67, 70, 157, 166, 181, 215] [76, 108, 116, 119, 158, 167, 182, 208] [29, 37, 64, 69, 159, 160, 183, 209] [78, 110, 113, 118, 152, 161, 176, 210] [31, 39, 66, 71, 153, 162, 177, 211] [72, 104, 112, 115, 154, 163, 178, 212] [33, 41, 73, 76, 125, 172, 187, 211] [2, 5, 82, 114, 126, 173, 188, 212] [35, 43, 75, 78, 127, 174, 189, 213] [4, 7, 84, 116, 120, 175, 190, 214] [37, 45, 72, 77, 121, 168, 191, 215] [1, 6, 86, 118, 122, 169, 184, 208] [39, 47, 74, 79, 123, 170, 185, 209] [0, 3, 80, 112, 124, 171, 186, 210] [41, 49, 81, 84, 123, 157, 180, 219] [2, 10, 13, 90, 124, 158, 181, 220] [43, 51, 83, 86, 125, 159, 182, 221] [4, 12, 15, 92, 126, 152, 183, 222] [45, 53, 80, 85, 127, 153, 176, 223] [6, 9, 14, 94, 120, 154, 177, 216] [47, 55, 82, 87, 121, 155, 178, 217] [0, 8, 11, 88, 122, 156, 179, 218] [49, 57, 89, 92, 131, 155, 188, 189] [10, 18, 21, 98, 132, 156, 189, 190] [51, 59, 91, 94, 133, 157, 190, 191] [12, 20, 23, 100, 134, 158, 184, 191] [53, 61, 88, 93, 135, 159, 184, 185] [14, 17, 22, 102, 128, 152, 185, 186] [55, 63, 90, 95, 129, 153, 186, 187] [8, 16, 19, 96, 130, 154, 187, 188] [57, 65, 97, 100, 163, 187, 196, 221] [18, 26, 29, 106, 164, 188, 197, 222] [59, 67, 99, 102, 165, 189, 198, 223] [20, 28, 31, 108, 166, 190, 199, 216] [61, 69, 96, 101, 167, 191, 192, 217] [22, 25, 30, 110, 160, 184, 193, 218] [63, 71, 98, 103, 161, 185, 194, 219] [16, 24, 27, 104, 162, 186, 195, 220] [65, 73, 105, 108, 133, 195, 204, 219] [26, 34, 37, 114, 134, 196, 205, 220] [67, 75, 107, 110, 135, 197, 206, 221] [28, 36, 39, 116, 128, 198, 207, 222] [69, 77, 104, 109, 129, 199, 200, 223] [30, 33, 38, 118, 130, 192, 201, 216] [71, 79, 106, 111, 131, 193, 202, 217] [24, 32, 35, 112, 132, 194, 203, 218] [73, 81, 113, 116, 131, 165, 212, 227] [2, 34, 42, 45, 132, 166, 213, 228] [75, 83, 115, 118, 133, 167, 214, 229] [4, 36, 44, 47, 134, 160, 215, 230] [77, 85, 112, 117, 135, 161, 208, 231] [6, 38, 41, 46, 128, 162, 209, 224] [79, 87, 114, 119, 129, 163, 210, 225] [0, 32, 40, 43, 130, 164, 211, 226] [1, 4, 81, 89, 139, 163, 197, 220] [10, 42, 50, 53, 140, 164, 198, 221] [3, 6, 83, 91, 141, 165, 199, 222] [12, 44, 52, 55, 142, 166, 192, 223] [0, 5, 85, 93, 143, 167, 193, 216] [14, 46, 49, 54, 136, 160, 194, 217] [2, 7, 87, 95, 137, 161, 195, 218] [8, 40, 48, 51, 138, 162, 196, 219] [9, 12, 89, 97, 171, 195, 228, 229] [18, 50, 58, 61, 172, 196, 229, 230] [11, 14, 91, 99, 173, 197, 230, 231] [20, 52, 60, 63, 174, 198, 224, 231] [8, 13, 93, 101, 175, 199, 224, 225] [22, 54, 57, 62, 168, 192, 225, 226] [10, 15, 95, 103, 169, 193, 226, 227] [16, 48, 56, 59, 170, 194, 227, 228]
Code ID 240-6-22 · download JSON · raw on GitHub