← back to the board
[[224,24,16]] d ≤
n
224
k
24
d
16
kd²/n
27.429
w
8
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 16, d_Z ≤ 16 · 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 16 · witness weight 16 (claimed upper_bound)
witness operator (support, 16 qubits)
[0, 8, 39, 41, 42, 55, 64, 69, 84, 90, 147, 156, 174, 176, 204, 212]
d_Z 16 · witness weight 16 (claimed upper_bound)
witness operator (support, 16 qubits)
[6, 18, 34, 38, 66, 102, 122, 130, 138, 142, 146, 158, 170, 174, 178, 222]
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 8 · H_Z 8
qubit degrees H_X 4 · H_Z 4
trapping sets H_X (1,4)×224 (2,4)×112 (3,6)×5376 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,4): 224 (2,4): 112 (2,6): 2912 (3,6): 5376 (3,8): 51296 (3,10): 4928
trapping sets H_Z (1,4)×224 (2,4)×112 (3,6)×5376 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,4): 224 (2,4): 112 (2,6): 2912 (3,6): 5376 (3,8): 51296 (3,10): 4928

Construction & provenance

authors @FarLab
provenance submitted through the challenge
novelty novelty not audited
construction bivariate bicycle on Z_28 x Z_4: A = 1 + x2y3 + x3 + x11y3, B = 1 + x9 + x9y3 + x21; H_X = [A | B], H_Z = [B^T | A^T]
model Claude Claude Fable 5.1 (claimed, not verified)
date 2026-10-17
family bivariate 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

[[224,24,16]] — weight-8 bivariate bicycle code on Z_28 x Z_4

Direction & hypothesis

Cell weight-8 x unrestricted, CSS board, n between 221 and 250. Before this filing the weight-8 frontier at the bottom of that range was 224-24-10 (weight 7), 224-22-16, 224-18-15, 224-12-19, 232-62-12 and 240-28-16: at n <= 224 no entry with k >= 24 had d above 10, and the k = 22, d = 16 point 224-22-16 was the best at d = 16. The hypothesis was that four-plus-four-term bivariate bicycle (BB) codes on tori with 2lm in 222..300 could add logicals at the same length and distance. [[224,24,16]] does: no board entry has n <= 224, k >= 24, d >= 16 and check weight <= 8. It dominates 224-22-16 by two logical qubits (same n, d and weight), so the gain is on k, not a d-only gain.

What was searched

Random-support BB codes H_X = [A | B], H_Z = [B^T | A^T] with A and B four monomials each, both containing 1 (no loss of generality), on every torus Z_l x Z_m with l >= m >= 3 and 222 <= 2lm <= 300, the torus drawn uniformly from that list and the other three monomials of each polynomial uniformly from the torus.

Random supports rarely give k >= 16, so the sweep ran a parallel generate-and-rank prefilter: 300,000 draws (seed 103), of which 1,286 had k >= 16 and a connected Tanner graph (research/kit/prescreen.block_structure). Those went through research/kit/search.screen with the gf2_fast backend at 400 trials; 4 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), dropping a candidate as soon as its running bound stopped advancing and skipping any already dominated by a point staged earlier in the campaign. This was the only one staged.

Evidence trail

Witness-backed upper bound d <= 16, not an exact distance. The bound was 16 at 400 trials and never moved; both sides have a weight-16 logical.

| stage | trials per candidate | lightest logical | |---|---|---| | screen (gf2_fast, seed from fingerprint) | 400 | 16 | | confirm | 20,000 | 16 | | confirm | 200,000 | 16 | | confirm | 2,000,000 | 16 | | numpy lightest_logical, both sides, seeds 103 / 104 | 1,500 | X 16, Z 16 | | deep ladder, 3 fresh seeds (54867, 62786, 70705), gf2_fast | 10,000,000 each | 16, 16, 16 |

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-8 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).

Dead ends

  • Whole-band 4 + 4 BB sweeps (222 <= n <= 400; 100,000 to 300,000
  • prefiltered draws each) spent most draws above n = 300; at n <= 250 they gave only [[240,20,18]] (filed separately).

  • A 2 + 6 split of the same check weight (200,000 draws, 1,711 with
  • k >= 16) produced nothing that advanced even at 400 screen trials.

  • Cyclic generalized-bicycle codes with a designed divisor g | x^m - 1,
  • weight-4 a and b (check weight 8): weight-4 multiples of g exist only for deg g <= ~22 at odd m from 111 to 200, and 4,000 such draws gave nothing advancing even at 400 trials.

  • Random-support 2BGA on non-abelian groups at check weight 8, 16,000
  • serial plus 150,000 prefiltered draws: every screen-depth survivor collapsed by 20,000 trials.

Tools

Model: Claude Fable 5.1 (Claude Code agent, contributor-driven workflow). Compute: one Brev n2d-highcpu-64 box; gf2_fast at 20 to 30 threads for the confirmation rungs and the ladder, 20 forked processes for the generate + rank prefilter. Kit modules: research/kit/bb.py (build_bb), 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 3 CPU-hours on this sweep.

Reproduction

Torus Z_28 x Z_4 (x of order 28, y of order 4), terms (i, j) = x^i y^j:

A = 1 + x^2 y^3 + x^3 + x^11 y^3, B = 1 + x^9 + x^9 y^3 + x^21.

import sys; sys.path[:0] = ["research/kit", "verify"]
from bb import build_bb
from css import compute_k
HX, HZ = build_bb(28, 4, [(0, 0), (2, 3), (3, 0), (11, 3)],
                  [(0, 0), (9, 0), (9, 3), (21, 0)])   # n = 224
assert compute_k(HX, HZ) == 24

Check sets match codes/224-24-16.json row for row in this order. The numpy surrogate.lightest_logical at 1,500 trials with seeds 103 (X side, pass (HX, HZ)) and 104 (Z side, pass (HZ, HX)) returns a weight-16 logical on each side.

Parity checks

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