← back to the board
[[48,16,5]] d =
n
48
k
16
d
5
kd²/n
8.333
w
18
X/Z
1
g
0.0099
r
5.3852
layers
2
swaps
48

Share this result

Distance

X/Z asymmetry 1 · d_X = 5, d_Z = 5 · w_X = 17, w_Z = 18 (max(d_X,d_Z)/min(d_X,d_Z); each side carries its own earned tier: = certified exact, ≤ witness upper bound)
d_X 5 · witness weight 5 (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-12
witness operator (support, 5 qubits)
[4, 7, 24, 29, 35]
d_Z 5 · witness weight 5 (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-12
witness operator (support, 5 qubits)
[18, 21, 33, 43, 44]
certificate exact, d = 5 · CryptoMiniSat 5.14.7 SAT
X: no logical < 5 exists; Z: no logical < 5 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–17 (mean 11.438) · H_Z 16–18 (mean 17.0)
qubit degrees H_X 1–8 (mean 3.812) · H_Z 1–10 (mean 5.667)
trapping sets H_X (1,1)×7 (2,1)×5 (3,1)×20 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 7 (1,2): 7 (1,3): 12 (1,4): 5 (1,5): 4 (1,6): 6 (1,7): 6 (1,8): 1 (2,1): 5 (2,2): 29 (2,3): 39 (2,4): 89 (2,5): 102 (2,6): 136 (2,7): 109 (2,8): 79 (2,9): 38 (2,10): 10 (2,11): 2 (2,12): 1 (2,13): 1 (3,1): 20 (3,2): 100 (3,3): 316 (3,4): 736 (3,5): 1401 (3,6): 1775 (3,7): 1934 (3,8): 1626 (3,9): 1011 (3,10): 476 (3,11): 211 (3,12): 71 (3,13): 16 (3,14): 2
trapping sets H_Z (1,1)×5 (2,1)×2 (3,1)×6 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,1): 5 (1,2): 3 (1,3): 3 (1,4): 4 (1,5): 4 (1,6): 8 (1,7): 10 (1,8): 4 (1,9): 4 (1,10): 3 (2,1): 2 (2,2): 9 (2,3): 17 (2,4): 31 (2,5): 90 (2,6): 125 (2,7): 145 (2,8): 170 (2,9): 151 (2,10): 80 (2,11): 35 (2,12): 12 (2,13): 4 (2,14): 3 (3,1): 6 (3,2): 42 (3,3): 127 (3,4): 446 (3,5): 1009 (3,6): 1858 (3,7): 2588 (3,8): 2727 (3,9): 2252 (3,10): 1555 (3,11): 862 (3,12): 352 (3,13): 105 (3,14): 21
witness diameter X 3.6056 · Z 4.4721 (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
layout contributed by @mathysrennela · simulated annealing over integer grid sites (research/local2d/fold_layout.py) · 2026-09-19
r = 5.385
X checkZ checkqubit site (24)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 48 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/51-16-5.json ([[51,16,5]]) by 3 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| = 9: 1, |S| = 14: 1, |S| = 16: 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 5, 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/51-16-5.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, 10, 11, 12]... (full list implied by the coordinates in this file).
model Claude Claude Opus 5 (Claude Code) (claimed, not verified)
date 2026-09-12
notes Derived from codes/51-16-5.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 [[51,16,5]] 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 other (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

[[48,16,5]] — reduction of the board's [[51,16,5]]

Where the qubits came from

codes/51-16-5.json is @mathysrennela's construction; this is a reduction of it, following the precedent @mathysrennela set with [[240,12,12]] (since re-filed as codes/239-12-12-graft.json in #1066). 3 qubits come out under the general form of the move below, and the accepted grafts were |S| = 9 once, |S| = 14 once, |S| = 16 once.

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: 5 at 20k → 200k → 1M → 5M → 20M trials per rung, independent seeds, both sides searched jointly. Nothing lighter than 5 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-any × unrestricted.

Numbers

Max check weight 18 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/51-16-5.json, and the reduction only deletes. kd²/n 7.843 → 8.333.

It dominates 51-16-5 on (n, k, d, w).

Parity checks

X-checks 16 (max weight 17) · Z-checks 16 (max weight 18)
H_X (16 checks, sparse supports)
[0, 2, 6, 10, 13, 23, 28, 46, 47] [1, 5, 9, 12, 22, 27, 45, 46, 47] [3, 4, 6, 7, 14, 18, 21, 26, 29, 41, 42, 43, 44, 46, 47] [3, 8, 10, 20, 25, 43, 44, 45, 47] [0, 3, 6, 7, 8, 9, 12, 13, 21, 30, 37, 38, 40, 43] [0, 1, 3, 7, 11, 14, 24, 29, 47] [0, 1, 4, 5, 8, 13, 17, 19, 23, 37, 38, 39, 41, 42] [1, 7, 13, 16, 19, 22, 37, 38, 39, 40, 41, 43, 44, 47] [1, 3, 4, 6, 13, 15, 19, 21, 37, 38, 40, 42, 44, 46] [2, 5, 14, 20, 38, 39, 40, 41, 45] [0, 3, 12, 18, 36, 37, 38, 40, 43] [2, 11, 17, 35, 36, 37, 39, 42, 47] [1, 10, 16, 34, 35, 36, 38, 41, 46] [0, 1, 4, 9, 13, 15, 19, 33, 34, 35, 38, 39, 44, 45] [0, 3, 6, 7, 11, 18, 29, 32, 33, 34, 36, 40, 41, 42, 43, 44, 45] [8, 13, 31, 32, 33, 35, 39, 43, 46]
H_Z (16 checks, sparse supports)
[0, 4, 5, 7, 8, 11, 12, 13, 14, 17, 24, 25, 29, 30, 32, 33] [3, 4, 6, 7, 8, 10, 11, 12, 13, 16, 23, 24, 28, 29, 31, 32, 47] [2, 3, 5, 6, 7, 9, 10, 11, 12, 15, 22, 23, 24, 27, 28, 30, 31, 46] [1, 2, 4, 5, 6, 9, 10, 11, 14, 21, 22, 23, 26, 27, 29, 30, 45] [0, 1, 3, 4, 5, 8, 9, 10, 13, 20, 21, 22, 25, 26, 28, 29, 44] [0, 2, 3, 4, 7, 8, 9, 12, 19, 20, 21, 25, 27, 28, 43, 47] [1, 2, 3, 6, 7, 8, 11, 18, 19, 20, 24, 26, 27, 42, 46, 47] [0, 1, 2, 5, 6, 7, 8, 10, 17, 18, 19, 23, 24, 25, 26, 41, 45, 46] [0, 1, 4, 5, 6, 7, 9, 16, 17, 18, 22, 23, 25, 44, 45, 47] [0, 3, 4, 5, 6, 15, 16, 17, 21, 22, 24, 40, 43, 44, 46, 47] [2, 3, 4, 5, 8, 14, 15, 16, 20, 21, 23, 24, 39, 42, 43, 45, 46, 47] [1, 2, 3, 4, 7, 13, 14, 15, 19, 20, 22, 23, 38, 41, 42, 44, 45, 46] [0, 1, 2, 3, 6, 12, 13, 14, 18, 19, 21, 22, 37, 41, 43, 44, 45] [0, 1, 2, 5, 11, 12, 13, 17, 18, 20, 21, 36, 40, 42, 43, 44, 47] [0, 1, 4, 10, 11, 12, 16, 17, 19, 20, 35, 39, 40, 41, 42, 43, 46, 47] [0, 3, 9, 10, 11, 15, 16, 18, 19, 34, 38, 39, 41, 42, 45, 46, 47]
Code ID 48-16-5 · download JSON · raw on GitHub