← back to the board
[[236,16,12]] d =
n
236
k
16
d
12
kd²/n
9.763
w
8
X/Z
1
g
0.0075
r
6.0
layers
2
swaps
724

Share this result

Distance

X/Z asymmetry 1 · d_X = 12, d_Z = 12 · 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 12 · witness weight 12 (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, 12 qubits)
[2, 6, 24, 25, 56, 64, 93, 96, 160, 171, 180, 220]
d_Z 12 · witness weight 12 (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, 12 qubits)
[6, 9, 11, 20, 32, 42, 43, 46, 54, 74, 134, 160]
certificate exact, d = 12 · CryptoMiniSat 5.14.7 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 2–8 (mean 6.313) · H_Z 2–8 (mean 6.561)
qubit degrees H_X 1–6 (mean 3.076) · H_Z 1–6 (mean 2.975)
trapping sets H_X (1,1)×19 (2,0)×2 (3,0)×6 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 19 (1,2): 59 (1,3): 51 (1,4): 101 (1,5): 4 (1,6): 2 (2,0): 2 (2,1): 36 (2,2): 112 (2,3): 227 (2,4): 410 (2,5): 499 (2,6): 790 (2,7): 50 (2,8): 38 (2,9): 2 (2,10): 1 (3,0): 6 (3,1): 54 (3,2): 249 (3,3): 784 (3,4): 1771 (3,5): 3955 (3,6): 7002 (3,7): 7608 (3,8): 8803 (3,9): 1569 (3,10): 1612 (3,11): 118 (3,12): 83 (3,13): 13 (3,14): 1
trapping sets H_Z (1,1)×31 (2,0)×8 (3,0)×9 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,1): 31 (1,2): 58 (1,3): 41 (1,4): 101 (1,5): 2 (1,6): 3 (2,0): 8 (2,1): 47 (2,2): 102 (2,3): 235 (2,4): 422 (2,5): 405 (2,6): 812 (2,7): 31 (2,8): 44 (2,10): 3 (3,0): 9 (3,1): 61 (3,2): 269 (3,3): 912 (3,4): 1849 (3,5): 3800 (3,6): 7047 (3,7): 6483 (3,8): 9270 (3,9): 1175 (3,10): 1702 (3,11): 55 (3,12): 121 (3,14): 7
witness diameter X 12.2066 · Z 10.6301 (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
X checkZ checkqubit site (129)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 724 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/261-16-12.json ([[261,16,12]]) by 25 qubits at unchanged k and check-weight class, using three moves. (1) Restricted r=1 lattice grafting (Liang, Eberhardt, Chen, arXiv:2504.08887, Sec. III E): a qubit lying in exactly one stabilizer of some type is removed together with that stabilizer, which preserves CSS commutation automatically because no other same-type row touches it. (2) Weight-1 stabilizer cleanup (Sec. III D step 4, research/local2d/boundary_engine.py _cleanup), which runs no distance search because it needs none: a qubit carrying a weight-1 stabilizer cannot appear in any opposite-type check, so multiplying that row into the same-type rows containing it and deleting the qubit preserves k and the distance exactly. (3) Capped merge-graft, new here: when a qubit lies in exactly r <= 3 stabilizers of one type, pick a pivot row R_p and replace every other R_i by R_p + R_i -- row operations on the stabilizer generators, so the code is unchanged and only the generating set moves -- after which the qubit sits in R_p alone and move (1) applies. Every choice of pivot is tried, since each gives a different resulting code. Unlike the first two moves this one can enlarge a check, so every merged row is accepted only if it still has weight at most 8 and, in the source's own layout, a support diameter within the locality class's cap; the whole layout radius is re-measured after every accepted move. Acceptance also requires k unchanged and a bit-packed RIS search finding nothing lighter than 12, screened then confirmed at a deeper rung. Those in-loop rungs are a filter, not the evidence: the claim below rests on the separate fresh-seed ladder. QUBIT POSITIONS ARE THE SOURCE'S: every surviving qubit keeps the coordinate it has in codes/261-16-12.json, so the layout is inherited rather than re-derived, and the reduction only deletes. The surviving qubits' indices into the source numbering are [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]... (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/261-16-12.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 [[240,12,12]], [[242,12,12]], [[261,16,12]], [[263,16,12]] on (n, k, d, w), which therefore leave the frontier of every cell they share with it. The measured interaction radius is 6, against 5 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

[[236,16,12]] — reduction of the board's [[261,16,12]]

Direction & hypothesis

@mathysrennela established on this board that reducing an existing entry is a contribution in its own right: codes/261-16-12.json is theirs and merged. This code is that entry with 25 qubits removed, by a move set their tool does not have.

The hypothesis is narrow and structural. graft_r1_safe removes a qubit that sits in exactly one stabilizer of a Pauli type. A qubit sitting in two or three is untouchable by it — but it need not stay that way, because which stabilizers a qubit sits in is a property of the *generating set*, not of the code.

The move set

Three moves, applied to a fixpoint, on the source's own coordinates:

1. Graft (Liang, Eberhardt, Chen, arXiv:2504.08887 Sec. III E): remove a qubit in exactly one stabilizer of some type, together with that stabilizer. CSS commutation survives automatically, because no other same-type row touches the qubit, so truncating the opposite-type rows keeps every overlap even. 2. Weight-1 cleanup (Sec. III D step 4, the repository's boundary_engine._cleanup): a qubit carrying a weight-1 stabilizer cannot appear in any opposite-type check, every same-type row can be multiplied by that row to drop it, and every logical class has a representative avoiding it. So k and d are preserved *exactly*, by argument, and it runs no distance search because it needs none. Grafting is what creates weight-1 stabilizers, so the two moves feed each other. 3. Capped merge-graft — mine, introduced with [[454,8,17]] (#935). If a qubit lies in exactly r ≤ 3 stabilizers of one type, pick a pivot row R_p and replace every other R_i by R_p + R_i. Those are row operations on the stabilizer generators: the code is unchanged, only the generating set moves, and afterwards the qubit sits in R_p alone, where move 1 applies. Every choice of pivot is tried, since each gives a different resulting code.

Moves 1 and 2 can only shrink a check. Move 3 genuinely can widen one, so every merged row is accepted only if it still has weight ≤ 8 and, in the source's own layout, a support diameter within the bilayer cap; the whole layout radius is re-measured after every accepted move. Here it did move: the source's interaction radius is 5.0000 and this code's is 6.0000. That is still inside the bilayer cap of 7, so the cell is unchanged and the (n, k, d, w) domination stands, but the reduced code is genuinely less local than its source and the note says so rather than leaving it to be discovered.

Qubits keep the positions they have in codes/261-16-12.json. The reduction only deletes, so the layout is inherited rather than re-derived.

What it displaces

It dominates four board entries on all four axes — [[261,16,12]] (@mathysrennela), [[263,16,12]] (@FarLab), [[240,12,12]] and [[242,12,12]] (@mathysrennela) — so all four leave the frontier of every cell they share with it. Inside local-2d-bilayer × weight-8 nothing dominates this code. kd²/n rises from 8.828 to 9.763. It is not the cell leader: [[360,12,24]] holds that at 19.200.

Evidence trail

The in-loop screen and confirm rungs are a filter, not evidence. Each accepted removal was screened at 20,000 trials with a fixed seed and confirmed at 200,000 with a rotating one, against the source's claimed d as the floor — a conservative choice, since a claimed distance is an upper bound, so a loose claim costs removals rather than soundness. What the claim rests on is the final code's own fresh-seed ladder:

12 @20k → 12 @200k → 12 @1M → 12 @5M → 12 @20M, seeds 777001, 777138, 777275, 777412, 777549 (one base seed plus a stride of 137), no drop at any rung, every rung searching both sides jointly. Both weight-12 witnesses are re-verified by the GF(2) stack — in the kernel of the opposite-type checks, not in the row space of the same-type ones. Claim: d ≤ 12, an upper bound.

The ladder goes to 20M because 5M is demonstrably not enough in my work. A generalized-bicycle candidate of mine held its distance under three independent fresh seeds through 5M and then fell at 20M; the correction that followed is #981. All of my merged entries have since been re-measured at that depth.

Gate verdict (verify/validate_candidate.py): passed; not refuted; no exact duplicate and no WL-equivalent entry; "advances the weight-8 × local-2d-bilayer board".

Caveats:

  • This is not an independent construction. It is @mathysrennela's code with
  • qubits removed. The credit for the code is theirs; the reduction is mine.

  • Distance is an upper bound, and it is *inherited* as a floor from the source's
  • claim. If [[261,16,12]] were ever shown to have d < 12, this code would need re-measuring — though its own 20M ladder found nothing lighter than 12 either.

  • It is not the cell leader, and it does not enter the single-layer cells.

Dead ends

  • The cell leaders do not reduce. [[360,12,24]] (bilayer weight-6 leader),
  • [[672,20,32]] (unrestricted weight-6 leader) and [[16,6,4]] (single-layer weight-8 leader) each accept zero moves.

  • Small codes do not reduce. [[54,20,4]], [[15,7,3]], [[40,10,4]], [[16,4,4]],
  • [[54,6,7]], [[25,5,4]], [[84,6,10]] and [[80,9,8]] all gave zero.

  • Across fifteen board codes the rule is clean: a code reduces if and only if it
  • is a larger open-boundary construction with a truncated edge. The move set removes boundary qubits, and a code without a truncated boundary has none.

  • The convergence is not a seed artifact. Re-attacking the converged states
  • with fresh candidate orders (seeds 91, 92, 93) accepted zero further moves in every case tried.

Tools

Claude Opus 5 (Claude Code) as the agent. The cleanup is the repository's own boundary_engine._cleanup; the graft and merge-graft driver is mine, because graft_r1 and graft_r1_safe return (H_X, H_Z, n_removed) — a count, with no map from surviving columns back to original qubit indices, which is what an inherited layout needs. Every distance search used gf2_fast (make fast); verify/validate_candidate.py was the only gate.

Reproduction

import json, numpy as np, sys
sys.path.insert(0, "research/local2d")
from boundary_engine import _cleanup
d = json.load(open("codes/261-16-12.json"))
n = d["n"]
HX = np.zeros((len(d["checks"]["X"]), n), np.int8)
for r, s in enumerate(d["checks"]["X"]): HX[r, s] = 1
HZ = np.zeros((len(d["checks"]["Z"]), n), np.int8)
for r, s in enumerate(d["checks"]["Z"]): HZ[r, s] = 1
C = np.array(d["locality"]["coordinates"], float)      # positions are inherited

Carry orig = list(range(n)) alongside and repeat until nothing fires: pick a qubit q of column weight r ≤ 3 in H_X or H_Z; pick a pivot row R_p among the r rows containing it and replace every other R_i by R_p + R_i, rejecting the move unless every merged row still has weight ≤ 8 and support diameter ≤ 7 under C; then delete R_p, column q and that entry of orig, keeping the removal only if compute_k is still 16, a RIS search finds nothing lighter than 12, and the recomputed layout radius is still within 7. Call _cleanup(HX, HZ) between rounds and compose its index array into orig. The reduction is a randomised search, so the surviving qubit set is recorded by the coordinates in the submitted JSON rather than re-derived. Then measure with fresh seeds to 20M — the in-loop rungs are not evidence.

Parity checks

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