← back to the board
[[119,34,5]] d =
n
119
k
34
d
5
kd²/n
7.143
w
6
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X = 5, d_Z = 5 · w_X = 6, w_Z = 5 (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)
[0, 4, 9, 14, 34]
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)
[22, 24, 36, 91, 92]
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 10 · H_Z 12 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 5–6 (mean 5.949) · H_Z 5
qubit degrees H_X 1–2 (mean 1.95) · H_Z 1–2 (mean 1.933)
trapping sets H_X (1,1)×6 (2,1)×30 (3,1)×148 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 6 (1,2): 113 (2,1): 30 (2,2): 545 (3,1): 148 (3,2): 2627 (3,3): 60 (3,4): 700
trapping sets H_Z (1,1)×8 (2,1)×32 (3,1)×128 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,1): 8 (1,2): 111 (2,1): 32 (2,2): 428 (3,1): 128 (3,2): 1648 (3,3): 48 (3,4): 412

Construction & provenance

authors @dorakingx
provenance submitted through the challenge
novelty novelty not audited
construction Reduction of the board's codes/120-34-5.json ([[120,34,5]]) by 1 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| = 5: 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/120-34-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, 9, 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/120-34-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 [[120,22,4]], [[120,34,5]], [[125,25,4]], [[146,18,4]] on (n, k, d, w), which therefore leave the frontier of every cell they share with it. Distance is a witness-backed upper bound: the deepest null result is 20000000 fresh-seed RIS trials. Literature novelty is unverified.
family topological (a tag, not a ranking)
locality unrestricted (computed from the layout)
weight class weight ≤ 6 (computed)

How this code was found

the research note submitted with this code · raw markdown · all notes

[[119,34,5]] — reduction of the board's [[120,34,5]]

Where the qubits came from

codes/120-34-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). 1 qubits come out under the general form of the move below, and the accepted grafts were |S| = 5 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-6 × unrestricted.

Numbers

Max check weight 6 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/120-34-5.json, and the reduction only deletes. kd²/n 7.083 → 7.143.

It dominates 120-22-4, 120-34-5, 125-25-4, 146-18-4 on (n, k, d, w).

Parity checks

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