← back to the board
[[98,12,12]] d =
n
98
k
12
d
12
kd²/n
17.633
w
9
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X = 12, d_Z = 12 · w_X = 9, w_Z = 9 (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)
[0, 5, 6, 19, 25, 27, 29, 31, 58, 82, 83, 94]
d_Z 12 · witness weight 12 (claimed upper_bound)
witness operator (support, 12 qubits)
[4, 10, 15, 24, 34, 41, 56, 68, 76, 79, 86, 90]
certificate exact, d = 12 · CryptoMiniSat 5.14 SAT
X: no logical < 12 exists; Z: no logical < 12 exists

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 9 · H_Z 9
qubit degrees H_X 3–6 (mean 4.5) · H_Z 3–6 (mean 4.5)
trapping sets H_X (1,3)×49 (2,4)×147 (3,3)×49 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,3): 49 (1,6): 49 (2,4): 147 (2,5): 49 (2,7): 784 (2,10): 735 (3,3): 49 (3,5): 441 (3,6): 1078 (3,7): 196 (3,8): 7350 (3,9): 2891 (3,10): 686 (3,11): 18375 (3,12): 3773 (3,13): 1715 (3,14): 7056 (3,16): 980
trapping sets H_Z (1,3)×49 (2,4)×147 (3,3)×49 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,3): 49 (1,6): 49 (2,4): 147 (2,5): 49 (2,7): 784 (2,10): 735 (3,3): 49 (3,5): 441 (3,6): 1078 (3,7): 196 (3,8): 7350 (3,9): 2891 (3,10): 686 (3,11): 18375 (3,12): 3773 (3,13): 1715 (3,14): 7056 (3,16): 980

Construction & provenance

authors Lee, Gideon
provenance literature baseline
construction Two-block group-algebra code C(a,b) of arXiv:2610.13880 (Table 3) over the abelian group C7 x C7 (GAP SmallGroup(49,2)): H_X = (L(a) | R(b)), H_Z = (R(b)^T | L(a)^T) with L and R the left and right regular representations, a = 1 + x + x y4 + x y6 + x2 y2 + x3 y3, b = 1 + x2 y + x4 y5 in generators x (order 7) and y (order 7), i.e. the bivariate bicycle code with A = a(x,y), B = b(x,y). The stored matrices use the qubit ordering of the paper's database (record 027c819eebe76a02, github.com/gideonlsx/bicycle-race @ aed705a, data/codes.jsonl, CC BY 4.0): qubits 0..48 are the left block and 49..97 the right block, group elements numbered as GAP's Elements(SmallGroup(49,2)) with e0 the identity, x = e1, y = e2, so a = e0 + e1 + e12 + e19 + e24 + e33, b = e0 + e7 + e41. Rebuilt from the database's group data; CSS commutation, k, check weight and both of the paper's witnesses were re-checked on the rebuilt matrices.
model Claude Claude Fable 5.1 (Claude Code) (claimed, not verified)
date 2026-10-12
notes Literature reconstruction. The paper states d = 12 exactly (d_X: equal to d_Z by a checked X/Z-exchange automorphism; d_Z: ladder (cluster engine, symmetry roots), from the screen's lower bound 12, no target; verification record: one engine). Readings here: qldpc submit's RIS (20,000 NumPy trials per side) and its 2,000,000-trial accelerator pass, plus the verifier's refutation search; witnessed upper bound, see notes/98-12-12.md.
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

[[98,12,12]] two-block code over C7 x C7 from the Bicycle Race census (arXiv:2610.13880), rebuilt from the paper's database

Direction & hypothesis

arXiv:2610.13880 (Gideon Lee, "Bicycle Race: small two-block codes on the Pareto frontier", 9 October 2026) enumerates about 10^8 two-block group-algebra codes C(a,b) of check weight five to nine over groups of order at most 160 (n <= 320), with exact distances, and publishes a database of 12,448 of them (github.com/gideonlsx/bicycle-race @ aed705a, file data/codes.jsonl, CC BY 4.0), each with a witness logical. The question here is narrow: which of the codes the paper tabulates (Tables 2, 3, 9 and 11, and the ones named in Sec. 3) advance the board's four-axis frontier (n, k, d, check weight) and are not already on it? This entry is one of the 28 that do.

What was searched

  • Screen: the 45 distinct parameter triples in those tables were compared
  • with every CSS entry on main under the site's Pareto rule (an entry dominates when n <=, k >=, d >=, w <= with at least one strict), at the paper's check weight. Thirteen are already on the board at the same or a lower weight ([[60,4,8]], [[64,18,8]], [[84,14,10]], [[90,8,10]], [[90,12,9]], [[102,20,10]], [[144,12,12]], [[180,8,16]], [[182,6,18]], [[186,10,14]], [[192,8,16]], [[288,12,18]] and [[288,16,16]]); four are dominated by board entries ([[168,12,12]] by [[144,12,12]], [[198,8,16]] by [[180,8,16]], [[200,16,12]] by [[192,16,12]], and [[216,4,16]] by [[192,4,16]]); Table 9's [[192,12,14]] and [[192,16,12]] are Lin-Pryadko archive codes, not in the paper's database, and already on the board. The remaining 28 are new nondominated points and are filed one per PR.

  • This code: record 027c819eebe76a02 of the database (Table 3 of the paper;
  • database labels anchor-beater, front, front-2D), over the abelian group C7 x C7 (GAP SmallGroup(49,2)), check weight 9 (block weights 6 + 3): a = 1 + x + x y^4 + x y^6 + x^2 y^2 + x^3 y^3, b = 1 + x^2 y + x^4 y^5 in generators x (order 7) and y (order 7), i.e. the bivariate bicycle code with A = a(x,y), B = b(x,y). The stored matrices use the qubit ordering of the paper's database (record 027c819eebe76a02, github.com/gideonlsx/bicycle-race @ aed705a, data/codes.jsonl, CC BY 4.0): qubits 0..48 are the left block and 49..97 the right block, group elements numbered as GAP's Elements(SmallGroup(49,2)) with e0 the identity, x = e1, y = e2, so a = e0 + e1 + e12 + e19 + e24 + e33, b = e0 + e7 + e41.

  • Rebuild: the generators' right-multiplication permutations in the
  • database's data/groups.jsonl give the multiplication table; then H_X = (L(a) | R(b)), H_Z = (R(b)^T | L(a)^T) with qubits 0..|G|-1 the left block. A short standalone NumPy script did this and checked CSS commutation, k = n - rank H_X - rank H_Z = 12, max check weight 9, and both of the paper's witnesses (weight 12 X, weight 12 Z, in the kernel of the other side's checks and outside its own stabilizer row space) before anything was submitted.

  • Distance: the paper states d = 12 exactly. Its record: d_X "equal to d_Z by a checked X/Z-exchange automorphism";
  • d_Z "ladder (cluster engine, symmetry roots), from the screen's lower bound 12, no target"; verification "one engine". Here, qldpc submit's own search (20,000 NumPy RIS trials per side, then a 2,000,000-trial accelerator pass) read d_X <= 12 and d_Z <= 12, and the verifier's refutation search found nothing lighter than 12.

Evidence trail

| instrument | trials | lightest logical | |---|---:|---:| | paper: exact search (record above) | exact | 12 on both sides, witnesses shipped with the record | | qldpc submit RIS (NumPy) + accelerator pass, per side | 20,000 + 2,000,000 | X 12, Z 12 | | the verifier's refutation gate (qldpc_verify, refute=True) | gate | nothing below 12 |

Claim: d <= 12 on both sides, a witnessed upper bound agreeing with the paper's exact distance. An exact certificate (verify/certify.py) is the maintainer-side tier and is not asserted here.

Dead ends

  • The 17 tabulated codes listed above add nothing to the board and were not
  • filed.

  • Only the tabulated codes were screened. The database's 2,435 codes labelled
  • as lying on the paper's own front are a larger pool a later pass could screen against the board the same way.

Tools

Claude Fable 5.1 (Claude Code): a standalone NumPy rebuild script (the construction above, from the database's group data), cli/qldpc.py submit for the witness search, the verifier and the PR draft, and verify/qldpc_verify.py on the final JSON.

Reproduction

Clone github.com/gideonlsx/bicycle-race @ aed705a and run its scripts/codes.py on record 027c819eebe76a02: it rebuilds the code from data/groups.jsonl and data/codes.jsonl and checks the witnesses in pure Python. Or build it from the construction above. The JSON here carries both check matrices and both witnesses, so the entry verifies without the download.

Parity checks

X-checks 49 (max weight 9) · Z-checks 49 (max weight 9)
H_X (49 checks, sparse supports)
[0, 21, 28, 36, 39, 44, 49, 66, 96] [0, 1, 2, 9, 40, 46, 50, 72, 97] [2, 28, 34, 41, 43, 47, 51, 64, 73] [1, 3, 4, 13, 20, 43, 52, 76, 78] [2, 4, 5, 14, 44, 48, 53, 70, 79] [5, 15, 34, 39, 45, 46, 54, 71, 80] [3, 6, 7, 14, 18, 26, 55, 82, 83] [4, 7, 8, 19, 27, 46, 49, 56, 84] [5, 8, 9, 20, 21, 47, 57, 77, 85] [9, 10, 22, 39, 43, 48, 58, 78, 86] [6, 10, 11, 19, 24, 32, 54, 59, 87] [7, 11, 12, 20, 25, 33, 50, 60, 88] [0, 8, 12, 13, 26, 48, 51, 61, 89] [9, 13, 14, 15, 27, 28, 62, 83, 90] [14, 16, 21, 29, 43, 46, 63, 84, 91] [10, 15, 16, 25, 30, 37, 57, 64, 91] [11, 16, 17, 26, 31, 38, 52, 58, 65] [1, 12, 17, 18, 27, 32, 53, 66, 92] [2, 13, 18, 19, 21, 33, 54, 67, 93] [0, 14, 19, 20, 22, 34, 68, 88, 94] [20, 23, 28, 35, 46, 48, 55, 69, 89] [15, 21, 22, 31, 35, 41, 61, 70, 94] [16, 22, 23, 32, 36, 42, 55, 62, 71] [3, 17, 23, 24, 33, 37, 56, 63, 72] [0, 4, 18, 24, 25, 38, 57, 73, 95] [1, 5, 19, 25, 26, 28, 58, 74, 96] [2, 20, 26, 27, 29, 39, 59, 75, 92] [21, 27, 30, 34, 40, 48, 60, 76, 93] [22, 28, 29, 37, 40, 45, 59, 67, 77] [6, 23, 29, 30, 38, 41, 60, 68, 78] [1, 7, 24, 30, 31, 42, 61, 69, 79] [2, 3, 8, 25, 31, 32, 62, 80, 97] [4, 9, 26, 32, 33, 34, 63, 64, 81] [0, 5, 27, 33, 35, 43, 65, 82, 95] [10, 29, 34, 35, 42, 44, 65, 74, 83] [3, 11, 30, 35, 36, 45, 66, 75, 84] [4, 6, 12, 31, 36, 37, 67, 76, 85] [5, 7, 13, 32, 37, 38, 68, 70, 86] [1, 8, 14, 33, 38, 39, 69, 71, 87] [6, 16, 35, 39, 40, 47, 72, 81, 88] [7, 10, 17, 36, 40, 41, 73, 82, 89] [8, 11, 18, 37, 41, 42, 49, 74, 90] [3, 9, 12, 19, 38, 42, 75, 77, 91] [11, 15, 23, 40, 43, 44, 79, 87, 92] [12, 16, 24, 41, 44, 45, 50, 80, 93] [6, 13, 17, 25, 42, 45, 51, 81, 94] [17, 22, 30, 44, 46, 47, 52, 85, 95] [10, 18, 23, 31, 45, 47, 53, 86, 96] [15, 24, 29, 36, 47, 48, 56, 90, 97]
H_Z (49 checks, sparse supports)
[0, 7, 41, 49, 50, 61, 68, 73, 82] [1, 11, 44, 50, 52, 66, 74, 79, 87] [2, 12, 45, 50, 51, 53, 67, 75, 80] [3, 16, 46, 52, 55, 72, 80, 84, 91] [4, 17, 47, 52, 53, 56, 73, 81, 85] [5, 10, 18, 53, 54, 57, 74, 82, 86] [6, 20, 22, 55, 59, 78, 85, 88, 94] [7, 23, 48, 55, 56, 60, 79, 86, 89] [8, 15, 24, 56, 57, 61, 80, 87, 90] [9, 16, 25, 50, 57, 58, 62, 81, 91] [10, 26, 28, 58, 59, 64, 83, 89, 96] [11, 27, 29, 59, 60, 65, 84, 90, 92] [12, 21, 30, 60, 61, 66, 85, 91, 93] [13, 22, 31, 52, 61, 62, 67, 86, 94] [14, 23, 32, 53, 55, 62, 63, 68, 87] [2, 15, 32, 54, 62, 64, 70, 92, 97] [16, 33, 34, 63, 64, 65, 71, 88, 93] [0, 17, 35, 65, 66, 72, 89, 94, 95] [18, 28, 36, 55, 66, 67, 73, 90, 96] [19, 29, 37, 56, 59, 67, 68, 74, 91] [20, 30, 38, 52, 57, 60, 68, 69, 75] [4, 21, 37, 49, 57, 63, 67, 70, 76] [5, 22, 38, 58, 68, 70, 71, 77, 95] [1, 23, 39, 69, 71, 72, 78, 92, 96] [2, 24, 40, 59, 72, 73, 79, 93, 97] [25, 34, 41, 60, 64, 73, 74, 80, 94] [26, 35, 42, 55, 61, 65, 74, 75, 81] [3, 27, 36, 56, 62, 66, 75, 76, 82] [8, 28, 42, 49, 51, 62, 69, 74, 77] [3, 9, 29, 63, 75, 77, 78, 83, 97] [4, 30, 43, 64, 76, 78, 79, 84, 95] [5, 31, 44, 65, 70, 79, 80, 85, 96] [32, 39, 45, 59, 66, 71, 80, 81, 86] [6, 33, 40, 60, 67, 72, 81, 82, 87] [6, 13, 34, 51, 54, 68, 76, 81, 83] [7, 14, 35, 69, 70, 82, 83, 84, 88] [8, 36, 46, 49, 71, 84, 85, 89, 97] [9, 37, 47, 64, 72, 77, 85, 86, 90] [10, 38, 43, 65, 73, 78, 86, 87, 91] [11, 19, 39, 49, 54, 58, 75, 87, 88] [12, 20, 40, 50, 76, 77, 88, 89, 92] [13, 41, 48, 51, 70, 78, 89, 90, 93] [14, 15, 42, 71, 79, 83, 90, 91, 94] [17, 26, 43, 51, 52, 58, 63, 82, 92] [18, 27, 44, 49, 53, 83, 92, 93, 95] [19, 21, 45, 54, 77, 84, 93, 94, 96] [24, 33, 46, 50, 54, 56, 63, 69, 95] [0, 25, 47, 51, 57, 88, 95, 96, 97] [1, 31, 48, 53, 58, 61, 69, 76, 97]
Code ID 98-12-12 · download JSON · raw on GitHub