← back to the board
[[225,104,3]] d =
n
225
k
104
d
3
kd²/n
4.16
w
19
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X = 3, d_Z = 3 · w_X = 18, w_Z = 19 (max(d_X,d_Z)/min(d_X,d_Z); each side carries its own earned tier: = certified exact, ≤ witness upper bound)
d_X 3 · witness weight 3 (claimed upper_bound)
witness found by @dorakingx · gf2_fast RIS ladder (verify/gf2_fast.cpp), both sides searched jointly · found at 2×104 trials · survived 2×107 trials · 2026-09-15
witness operator (support, 3 qubits)
[113, 116, 118]
d_Z 3 · witness weight 3 (claimed upper_bound)
witness found by @dorakingx · gf2_fast RIS in the packaging search; the ladder searched both sides jointly · found at 4000 trials · survived 2×107 trials · 2026-09-15
witness operator (support, 3 qubits)
[0, 203, 210]
certificate exact, d = 3 · scipy/HiGHS cutoff IP
X: no logical < 3 exists; Z: no logical < 3 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 16–18 (mean 16.914) · H_Z 5–19 (mean 11.849)
qubit degrees H_X 1–5 (mean 2.631) · H_Z 1–31 (mean 4.529)
trapping sets H_X (1,1)×35 (2,1)×525 (3,0)×1085 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 35 (1,2): 70 (1,3): 70 (1,4): 43 (1,5): 7 (2,1): 525 (2,2): 980 (2,3): 872 (2,4): 411 (2,5): 192 (2,6): 128 (2,7): 32 (3,0): 1085 (3,1): 4900 (3,2): 8868 (3,3): 8716 (3,4): 6754 (3,5): 6899 (3,6): 6056 (3,7): 3952 (3,8): 1816 (3,9): 454 (3,10): 48
trapping sets H_Z (1,1)×86 (2,1)×258 (3,0)×217 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,1): 86 (1,2): 79 (1,3): 24 (1,15): 6 (1,16): 15 (1,17): 6 (1,28): 1 (1,29): 2 (1,30): 1 (1,31): 5 (2,1): 258 (2,2): 158 (2,14): 93 (2,15): 441 (2,16): 671 (2,17): 400 (2,18): 85 (2,26): 6 (2,27): 47 (2,28): 126 (2,29): 211 (2,30): 330 (2,31): 272 (2,32): 62 (2,33): 1 (2,40): 1 (2,41): 4 (2,42): 8 (2,43): 10 (2,44): 11 (2,45): 12 (2,46): 11 (3,0): 217 (3,1): 344 (3,2): 630 (3,3): 1176 (3,4): 834 (3,5): 200 (3,13): 673 (3,14): 5016 (3,15): 13616 (3,16): 18070 (3,17): 13449 (3,18): 5808 (3,19): 1430 (3,20): 209 (3,21): 24 (3,24): 22 (3,25): 257 (3,26): 1350 (3,27): 4246 (3,28): 9311 (3,29): 15469 (3,30): 18005 (3,31): 12613 (3,32): 5539 (3,33): 1616 (3,34): 349 (3,35): 55 (3,36): 3 (3,37): 1 (3,38): 21 (3,39): 132 (3,40): 441 (3,41): 985 (3,42): 1570 (3,43): 1903 (3,44): 2025 (3,45): 1832 (3,46): 994 (3,47): 298 (3,48): 63 (3,49): 8

Construction & provenance

authors @dorakingx
provenance submitted through the challenge
novelty novelty not audited
construction Reduction of the board's codes/232-104-3.json ([[232,104,3]]) by 7 qubits at unchanged k, unchanged check-weight class and unchanged locality class, by one move applied to a fixpoint: graft a qubit away using a low-weight element of the stabilizer ROW SPACE. Let S be an element of the row space of H_X with support T and let a be in T. Replace one generator of the subset summing to S by S itself -- the span is unchanged, that generator being S plus the rest of the subset -- and add S into every other X row meeting a, so that a survives only in S. Then apply the CNOT fan-out from a to T\{a}, which acts on the check matrices as H_X[:, b] ^= H_X[:, a] and H_Z[:, a] ^= H_Z[:, b] for each b in T\{a}. Only S still meets a, so the first substitution turns S into the weight-1 stabilizer X_a and leaves every other X row alone; the second zeroes column a of H_Z, because commutation forces every Z row to meet T an even number of times. Qubit a is then disentangled and is deleted: n -> n-1, k unchanged, and the Z rows only LOSE an index, so their weights and support diameters cannot rise. The weight of S separates three regimes, and the difference is entirely in the clearing step R ^= S. |S| = 1: nothing is added anywhere, so the weights, the radius AND THE DISTANCE are all preserved exactly, and no distance search is needed -- this is the row-space form of the weight-1 stabilizer cleanup of Liang, Eberhardt and Chen (arXiv:2504.08887 Sec. III D step 4), which the implementation in research/local2d/boundary_engine.py applies only to literal weight-1 generator ROWS. |S| = 2: R loses a and toggles one other index, so its weight changes by 0 or -2 and can never rise. |S| >= 3: R can grow, so every touched row is checked against the code's weight class and its locality radius, measured in the source's own layout. This generalises the capped merge-graft I introduced with [[454,8,17]], which only ever built S from the generators a single qubit happens to lie in. Here the accepted grafts were |S| = 6: 1, |S| = 7: 2, |S| = 8: 4. Low-weight row-space elements are enumerated as sums of at most three checks with a connected overlap pattern. Every graft with |S| >= 2 was accepted only if k was unchanged and a bit-packed RIS search found nothing lighter than 3, screened once and confirmed twice with independent seeds; those in-loop rungs are a filter, not the evidence. QUBIT POSITIONS ARE THE SOURCE'S: every surviving qubit keeps the coordinate it has in codes/232-104-3.json, so the layout is inherited rather than re-derived, and the reduction only deletes. The surviving qubits' indices into the source numbering are [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]... (full list implied by the coordinates in this file).
model Claude Claude Opus 5 (Claude Code) (claimed, not verified)
date 2026-09-15
notes Derived from codes/232-104-3.json, not an independent construction; the source's authors are @mathysrennela and the reduction is mine. The gate reports no exact duplicate and no WL-equivalent entry. It dominates [[232,104,3]] on (n, k, d, w), which therefore leaves the frontier of every cell the two share. Distance is a witness-backed upper bound: the deepest null result is 20000000 fresh-seed RIS trials. Literature novelty is unverified.
family hypergraph 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

[[225,104,3]] — reduction of the board's [[232,104,3]]

Where the qubits came from

codes/232-104-3.json is @mathysrennela's construction; this is a reduction of it, following the precedent @mathysrennela set with codes/240-12-12-graft.json. 7 qubits come out under the general form of the move below, and the accepted grafts were |S| = 6 once, |S| = 7 twice, |S| = 8 four times.

The move

Let S be any element of the row space of H_X — an element of the stabilizer group, not necessarily one of the published generators — with support T, and let a ∈ T.

1. Replace one generator of the subset summing to S by S itself. The span is unchanged: that generator equals S plus the rest of the subset. 2. Add S into every other X row meeting a, so a survives only in S. 3. Apply the CNOT fan-out from a to T \ {a}, which acts on the check matrices as H_X[:, b] ^= H_X[:, a] and H_Z[:, a] ^= H_Z[:, b].

After step 2 only S meets a, so step 3 turns S into the weight-1 stabilizer X_a and leaves every other X row alone; and column a of H_Z becomes the XOR of its entries over T, which commutation forces to be 0. Qubit a is disentangled and is deleted: n → n-1, k unchanged, and the Z rows only lose an index, so their weights and support diameters cannot rise.

The weight of S selects the regime, entirely through the clearing step R ^= S:

  • |S| = 1 — nothing is added anywhere, so weight, radius and distance are all
  • preserved exactly and no distance search is needed. This is the row-space form of the weight-1 stabilizer cleanup of Liang, Eberhardt and Chen (arXiv:2504.08887 Sec. III D step 4); research/local2d/boundary_engine.py fires only on a *literal* weight-1 generator ROW, and row-space membership is strictly weaker.

  • |S| = 2 — the row loses a and toggles one other index, so its weight changes by 0
  • or −2 and can never rise.

  • |S| ≥ 3 — the row can grow, so every touched row is checked against the code's weight
  • class and its locality radius, measured in the source's own layout.

Low-weight row-space elements are enumerated as sums of at most three checks with a connected overlap pattern.

Verification

Fresh-seed RIS ladder: 3 at 20k → 200k → 1M → 5M → 20M trials per rung, independent seeds, both sides searched jointly. Nothing lighter than 3 appeared. Each graft was also screened and confirmed twice in the loop with independent seeds; those rungs are a filter, not the evidence. The distance is a witness-backed upper bound — on this project a [[682,10,38]] candidate survived three fresh seeds to five million trials and then fell at twenty million, so a flat ladder is not a proof.

verify/validate_candidate.py passes: board_advancing: true, dominated_by: [], no duplicate and no WL-equivalent entry, cell weight-9plus × unrestricted.

Numbers

Max check weight 19 throughout. Interaction radius unchanged at 0, so the reduced code is no less local than the source; layers unchanged. Qubit positions are the source's — every surviving qubit keeps the coordinate it has in codes/232-104-3.json, and the reduction only deletes. kd²/n 4.034 → 4.160.

It dominates 232-104-3 on (n, k, d, w).

Parity checks

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