← back to the board
[[249,8,11]] d ≤
n
249
k
8
d
11
kd²/n
3.888
w
6
X/Z
1
g
0.0607
r
4.0
layers
1
swaps
1568

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 11, d_Z ≤ 11 · w_X = 6, w_Z = 6 (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 operator (support, 11 qubits)
[15, 16, 62, 86, 87, 111, 149, 160, 226, 234, 246]
d_Z 11 · witness weight 11 (claimed upper_bound)
witness operator (support, 11 qubits)
[88, 90, 93, 99, 105, 108, 209, 210, 214, 225, 232]
certificate none yet · distance stands as a self-certified upper bound (d ≤)

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 6 · H_Z 6 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 2–6 (mean 5.042) · H_Z 2–6 (mean 5.025)
qubit degrees H_X 1–3 (mean 2.43) · H_Z 1–3 (mean 2.442)
trapping sets H_X (1,1)×46 (2,0)×17 (3,0)×19 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,1): 46 (1,2): 50 (1,3): 153 (2,0): 17 (2,1): 62 (2,2): 168 (2,3): 261 (2,4): 841 (3,0): 19 (3,1): 124 (3,2): 470 (3,3): 1336 (3,4): 2267 (3,5): 6287 (3,6): 278 (3,7): 928
trapping sets H_Z (1,1)×42 (2,0)×16 (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): 42 (1,2): 55 (1,3): 152 (2,0): 16 (2,1): 57 (2,2): 169 (2,3): 287 (2,4): 826 (3,0): 9 (3,1): 130 (3,2): 494 (3,3): 1331 (3,4): 2473 (3,5): 6129 (3,6): 309 (3,7): 903
witness diameter X 15.5242 · Z 14.8661 (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 = 4
X checkZ checkqubit site (249)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 1568 nearest-neighbor SWAPs per round in total, at most 8 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 @vprusso
provenance submitted through the challenge
novelty novelty not audited
construction Open-boundary planar bivariate-bicycle code (arXiv:2504.08887) with f = x + x2 + y2 and g = 1 + x2 y + x2 y2 on a 12 x 12 grid (research/local2d/planar.py build_open_directional(12, 12), n = 288, k = 8, d <= 12), reduced to n = 249 by 39 restricted r=1 lattice grafts: a qubit lying in exactly one stabilizer of some type is removed together with that stabilizer, accepted only if k stays 8 and a bit-packed random information set search (verify/gf2_fast.cpp, pair depth 8) screened at 3000 fixed-seed trials and confirmed at 20000 fresh-seed trials finds nothing lighter than 11; then the weight-1 stabilizer cleanup of research/local2d/boundary_engine.py. Layout: a surviving qubit of unreduced index q = c*144 + i*12 + j sits at (i + j, j - i + c), one layer, spacing 1.
model Claude Claude Fable 5.1 (claimed, not verified)
date 2026-09-22
notes Derived from the flagship planar family at L = (12,12) by r=1 grafting at distance floor 11; not an independent construction. Claim: d <= 11, a witness-backed upper bound (RIS ladder in the research note). Advances the weight-6 x local-2d-single board; novelty vs the literature unverified. GPU RIS pass (verify/ris_gpu.py, 300,000,000 trials per side, seed 2026): lightest logical X 11, Z 11.
family bivariate bicycle (a tag, not a ranking)
locality 2D-local single (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

[[249,8,11]] reduced single-layer planar bivariate-bicycle code, L = (12,12), r=1 grafts at floor 11

Direction & hypothesis

Target cell: weight-6 x local-2d-single. Every k = 8 entry of that cell is an open- boundary planar bivariate-bicycle code of the flagship family f = x + x^2 + y^2, g = 1 + x^2 y + x^2 y^2 (arXiv:2504.08887), either an unreduced L x L lattice or an r=1 graft reduction of one. This code dominates [[275,8,11]] (w6). The hypothesis was that grafting the L = (12,12) lattice ([[288,8,12]] at 20,000 RIS trials) against a distance floor of 11 rather than its own distance removes many more qubits than a same-distance chain, landing at an n where a d = 11 point is nondominated.

What was searched

Base code research/local2d/planar.py build_open_directional(12, 12), [[288,8]]. Restricted r=1 grafting: a candidate is a qubit lying in exactly one X-stabilizer or exactly one Z-stabilizer; it is removed together with that stabilizer, so every surviving check is a subset of an original one and the single-layer layout (i + j, j - i + c) keeps interaction radius 4 exactly. Candidate order randomized with seed 3. A removal is kept iff k stays 8, a fixed-seed bit-packed RIS screen at 3,000 trials (verify/gf2_fast.cpp distance_rand_witness, pair depth 8) finds nothing lighter than 11, and a fresh-seed confirmation at 20,000 trials agrees. 39 qubits were removed in total (including the weight-1 stabilizer cleanup of research/local2d/boundary_engine.py), wall time 328 s.

Evidence trail

Fresh-seed RIS ladder on the saved code:

| RIS trials per side | seed | lightest logical found | |---|---|---| | 20,000 | rotating, per accepted graft | 11 | | 80,000 | 424242 | 11 | | 20,000,000 | 7001 | 11 | | 20,000,000 | 7002 | 11 | | 300,000,000 (GPU, verify/ris_gpu.py) | 2026 | X 11, Z 11 |

The witnesses in the submission are weight-11 X and Z logicals, re-verified by the GF(2) stack. Claim: d <= 11, a witness-backed upper bound. Gate verdict (verify/validate_candidate.py): passed, labels: advances the weight-6 x local-2d-single board, literature novelty unverified. Interaction radius 4.0, one layer, one qubit per site, max check weight 6. Duplicate check: 249-8-11.json: 0 board entries at (n,k)=(249,8)

Dead ends

Rectangular bases do not open new distances: (9,10), (10,9), and (9,11) read d <= 7 at 20,000 RIS trials like L = 9, and (13,14) reads 13 like L = 13, so every new distance value comes from grafting a square lattice one below its own distance. A first (14,14) floor-14 chain with only a 12,000-trial per-step confirmation reached n = 356 and then lost a weight-13 logical to a 48,000-trial check; the periodic 200,000-trial block check with rollback fixed that (the surviving chains report their rollback counts). Same- distance chains (floor equal to the base distance) remove only about 5 percent of the qubits and do not beat the existing reductions on the board, so they were not rerun.

Tools

Claude (Claude Code, model Fable 5.1) as the agent in an unattended autoresearch run. Repo tooling: research/kit/bb.py, research/kit/css.py, research/kit/submit.py, research/local2d/planar.py and research/local2d/boundary_engine.py (planar codes), research/local2d/fold_layout.py (layouts), frontier bookkeeping recomputed from codes/*.json with the Pareto rule of site/build.py, the bit-packed RIS extension verify/gf2_fast.cpp (distance_rand_witness, pair depth 8), verify/ris_gpu.py on an NVIDIA A40 for the deep rung, and verify/validate_candidate.py as the only gate. Search scripts ran on a laptop with at most 8 threads; about 5 minutes for the graft chain, plus the RIS ladder in the evidence table.

Reproduction

The graft order is randomized, so the surviving qubit set is recorded by the coordinates in the submission: a qubit at (x, y) has c = (x + y) mod 2, j = (x + y - c) / 2, i = x - j, unreduced index c*144 + i*12 + j. Rebuild the base with

import sys; sys.path.insert(0, "research/local2d")
from planar import build_open_directional
HX, HZ = build_open_directional(12, 12)   # [[288,8]]

then delete the qubits absent from the layout together with the stabilizers that become the unique owner of a deleted qubit, and run the weight-1 cleanup of research/local2d/boundary_engine.py.

Parity checks

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