← back to the board
[[196,15,11]] d =
n
196
k
15
d
11
kd²/n
9.26
w
8
X/Z
1
g
0.0068
r
6.0828
layers
2
swaps
476

Share this result

Distance

X/Z asymmetry 1 · d_X = 11, d_Z = 11 · 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 11 · witness weight 11 (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-11
witness operator (support, 11 qubits)
[13, 15, 22, 24, 31, 33, 61, 90, 106, 107, 178]
d_Z 11 · witness weight 11 (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-11
witness operator (support, 11 qubits)
[0, 12, 24, 27, 38, 52, 56, 103, 115, 140, 152]
certificate exact, d = 11 · CryptoMiniSat 5.14.7 SAT
X: no logical < 11 exists; Z: no logical < 11 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 3–8 (mean 6.409) · H_Z 2–8 (mean 6.727)
qubit degrees H_X 1–6 (mean 3.041) · H_Z 1–6 (mean 3.02)
trapping sets H_X (1,1)×21 (2,0)×3 (3,0)×3 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 21 (1,2): 48 (1,3): 31 (1,4): 95 (1,6): 1 (2,0): 3 (2,1): 33 (2,2): 98 (2,3): 184 (2,4): 354 (2,5): 299 (2,6): 731 (2,7): 5 (2,8): 12 (3,0): 3 (3,1): 56 (3,2): 215 (3,3): 689 (3,4): 1688 (3,5): 3066 (3,6): 5578 (3,7): 4437 (3,8): 7898 (3,9): 533 (3,10): 993 (3,11): 7 (3,12): 11
trapping sets H_Z (1,1)×16 (2,1)×42 (3,0)×11 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,1): 16 (1,2): 68 (1,3): 20 (1,4): 85 (1,5): 2 (1,6): 5 (2,1): 42 (2,2): 143 (2,3): 136 (2,4): 481 (2,5): 197 (2,6): 665 (2,7): 18 (2,8): 62 (2,10): 4 (3,0): 11 (3,1): 79 (3,2): 320 (3,3): 672 (3,4): 2146 (3,5): 2398 (3,6): 7626 (3,7): 2969 (3,8): 7194 (3,9): 551 (3,10): 1559 (3,11): 23 (3,12): 128 (3,14): 5
witness diameter X 9.2195 · Z 11.1803 (Euclidean support diameter of the stored distance witnesses in the layout; an upper bound on the exhibited logicals’ spread, not a minimum over all logicals)

Verified 2D layout

as measured by the verifier: every check drawn over the submitted coordinates; the interaction radius is the longest dashed pair
r = 6.083
X checkZ checkqubit site (106)2 qubits stacked (2 layers)dashed: the pair setting the interaction radiushover a check to isolate its qubits; click to pin — repeated clicks cycle through overlapping checks; click empty space to release
routing cost 476 nearest-neighbor SWAPs per round in total, at most 5 for one check (heuristic: MST lower bound on the layout, with one lattice step = the minimum qubit spacing 1; not a rank)

Construction & provenance

authors @dorakingx
provenance submitted through the challenge
novelty novelty not audited
construction Reduction of the board's codes/201-15-11.json ([[201,15,11]]) by 5 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| = 2: 1, |S| = 3: 1, |S| = 4: 2, |S| = 6: 1. 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 11, 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/201-15-11.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-11
notes Derived from codes/201-15-11.json, not an independent construction; that entry is my own earlier reduction, and this one goes further with a larger move set. The gate reports no exact duplicate and no WL-equivalent entry. It dominates [[201,15,11]], [[214,15,11]], [[216,15,11]] on (n, k, d, w), which therefore leave the frontier of every cell they share with it. The measured interaction radius is 6.08276, against 5.38516 for the source: unlike the graft and the cleanup, the merge-graft can widen a check, and it is capped by the locality class rather than by the source's own radius, so the reduced code is less local even though it stays in the same cell. Distance is a witness-backed upper bound: the deepest null result is 20000000 fresh-seed RIS trials. Literature novelty is unverified.
family bivariate bicycle (a tag, not a ranking)
locality 2D-local bilayer (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

[[196,15,11]] — a further reduction of my own [[201,15,11]]

Why there was anything left

codes/201-15-11.json (#996) was my reduction of @vprusso's codes/216-15-11.json (that entry has since been removed from the board as disconnected legacy in 14095599; the original file is pinned at github.com/unitaryfoundation/qldpc-challenge @ f55706ac, codes/216-15-11.json), made with a move set framed around a single qubit: remove a qubit lying in exactly one stabilizer of a type, or merge the two or three it lies in until it lies in one. The framing, not the code, was the limit. Five more qubits come out under the general form of the same move, and **every one of them needed a stabilizer that no single qubit selects**.

One move

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

1. Replace one generator of the subset summing to S by S itself; the span is unchanged, since 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}: H_X[:, b] ^= H_X[:, a] and H_Z[:, a] ^= H_Z[:, b].

Only S still meets a, so step 3 turns it 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.

|S| selects the regime, entirely through the clearing step R ^= S:

  • |S| = 1 — nothing is added anywhere: weight, radius and distance exactly
  • preserved, no search 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.

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

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

Accepted on this code: |S| = 2 once, |S| = 3 once, |S| = 4 twice, |S| = 6 once. Low-weight row-space elements are enumerated as sums of at most three checks with a connected overlap pattern.

Verification

Fresh-seed RIS ladder: 11 at 20k → 200k → 1M → 5M → 20M trials per rung, independent seeds, both sides searched jointly. Nothing lighter than 11 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 an 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-8 × local-2d-bilayer.

Numbers

Max check weight 8 throughout. Interaction radius 5.3852 → 6.0828, inside the bilayer cap of 7.0; layers unchanged at 2. Unlike the |S| ≤ 2 grafts, an |S| ≥ 3 graft can widen a check, and it is capped by the locality class rather than by the source's own radius, so the reduced code is less local while staying in the same cell. Qubit positions are the source's — every surviving qubit keeps the coordinate it has in codes/201-15-11.json, and the reduction only deletes. kd²/n 9.030 → 9.260.

It dominates three current board entries on (n, k, d, w): 201-15-11 (mine), 216-15-11 and 214-15-11 (@vprusso's).

Credit

The construction is @vprusso's [[216,15,11]] (original file pinned as described above); codes/201-15-11.json is my earlier reduction of it and this goes five qubits further. @mathysrennela established on this board that a reduction is a contribution in its own right, with [[240,12,12]] (since re-filed as codes/239-12-12-graft.json in #1066).

Parity checks

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