← back to the board
[[252,12,14]] d ≤
n
252
k
12
d
14
kd²/n
9.333
w
6
X/Z
1
g
0.0039
r
7.0
layers
2
swaps
1307

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 14, d_Z ≤ 14 · 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 14 · witness weight 14 (claimed upper_bound)
witness operator (support, 14 qubits)
[14, 73, 117, 119, 142, 144, 148, 163, 167, 171, 182, 203, 226, 247]
d_Z 14 · witness weight 14 (claimed upper_bound)
witness operator (support, 14 qubits)
[18, 39, 54, 58, 73, 77, 79, 81, 96, 100, 121, 148, 211, 228]
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 6 · H_Z 6
qubit degrees H_X 3 · H_Z 3
trapping sets H_X (1,3)×252 (2,4)×1890 (3,3)×504 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,3): 252 (2,4): 1890 (3,3): 504 (3,5): 17388 (3,7): 2520
trapping sets H_Z (1,3)×252 (2,4)×1890 (3,3)×504 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,3): 252 (2,4): 1890 (3,3): 504 (3,5): 17388 (3,7): 2520
witness diameter X 9.1652 · Z 9.5394 (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 = 7
X checkZ checkqubit site (134)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 1307 nearest-neighbor SWAPs per round in total, at most 9 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 Periodic bivariate-bicycle code on Z_63 x Z_2 (n = 2*l*m = 252): x = S_63 tensor I_2, y = I_63 tensor S_2 (cyclic shifts), qubit index i*m + j in each block; A = x0y0 + x51y1 + x61y0, B = x0y0 + x15y1 + x55y1; H_X = [A|B], H_Z = [B^T|A^T] (research/kit/bb.py build_bb(63, 2, [(0, 0), (51, 1), (61, 0)], [(0, 0), (15, 1), (55, 1)])). Layout: simulated annealing of the qubit-to-site assignment on a unit-spaced triangular grid with two layers (at most two qubits per site, research/local2d/fold_layout.py anneal), measured interaction radius 7.0000.
model Claude Claude Fable 5.1 (claimed, not verified)
date 2026-09-22
notes Found by a random trinomial-pair sweep over tori Z_l x Z_m with 100 <= n <= 360 aimed at the weight-6 x local-2d-bilayer cell. Distance is a witness-backed upper bound; RIS ladder (verify/gf2_fast.cpp, pair depth 8): 200000 trials seed 101 -> 14, 1000000 trials seed 102 -> 14, 1000000 trials seed 103 -> 14. Advances the weight-6 x local-2d-bilayer board; novelty vs the literature unverified. GPU RIS pass (verify/ris_gpu.py, 300,000,000 trials per side, seed 2026): lightest logical X 14, Z 14.
family bivariate bicycle (a tag, not a ranking)
locality 2D-local bilayer (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

[[252,12,14]] weight-6 bivariate-bicycle code on Z_63 x Z_2 with an annealed two-layer layout

Direction & hypothesis

Target cell: weight-6 x local-2d-bilayer. Above k = 6 that cell is thin: its nondominated members at 100 <= n <= 360 are a few small two-block codes with hand or annealed layouts ([[72,12,6]], [[108,8,10]], [[112,16,6]], [[54,20,4]]), the planar k = 8 reductions, and the twisted-torus [[360,12,24]]. This code dominates [[259,12,14]] (w8), [[264,6,12]] (w6), [[265,8,12]] (w6), [[268,12,14]] (w8), [[270,5,13]] (w6), [[275,8,11]] (w6). Hypothesis: many periodic weight-6 bivariate-bicycle codes at n <= 360 admit an honest two-layer layout with interaction radius <= 7 (the board's [[72,12,6]] and [[360,12,24]] entries were laid out this way), so a sweep aimed at the bilayer need rather than the unrestricted frontier, followed by layout annealing, fills the cell.

What was searched

Random trinomial pairs (A, B) on every torus Z_l x Z_m with 100 <= 2lm <= 360, 400 draws per torus, both supports normalized to contain the identity, disconnected pairs (exponent differences not generating the group) discarded, k by GF(2) rank (research/kit/css.py). Candidates with d >= need(n, k) in the bilayer cell at 2,000 RIS trials were rescreened at 30,000 trials (232 candidates cleared the 2,000-trial screen and 232 of them still cleared the need at 30,000). Per (n, k) point the best two were laddered at 200,000 and 1,000,000 trials (two seeds), then a two-layer layout was annealed (research/local2d/fold_layout.py anneal on a unit-spaced triangular grid, at most two qubits per site, 150,000 to 400,000 iterations, up to six restarts) and accepted only at radius <= 7.

Evidence trail

RIS ladder for the submitted code:

| RIS trials per side | seed | lightest logical found | |---|---|---| | 2,000 | 1 | 14 | | 30,000 | 2 | 14 | | 200,000 | 101 | 14 | | 1,000,000 | 102 | 14 | | 1,000,000 | 103 | 14 | | 300,000,000 (GPU, verify/ris_gpu.py) | 2026 | X 14, Z 14 |

Layout: two layers, measured interaction radius 7.0000, 134 distinct sites, minimum site spacing 1. Claim: d <= 14, a witness-backed upper bound. Gate verdict (verify/validate_candidate.py): passed, labels: advances the weight-6 x local-2d-bilayer board, literature novelty unverified. Duplicate check: 252-12-14.json: 1 board entry at (n,k)=(252,12) 252-12-16.json: d=16 w=6 -> same coarse WL-1 hash as this script computes (expected for two vertex-transitive Tanner graphs with equal degrees; the gate signature says distinct)

Dead ends

Layout probes on board codes without a layout (not resubmittable, a feasibility check only): [[144,12,12]] and [[126,12,10]] anneal to radius 5.29, [[192,16,12]] to exactly 7.00, [[254,14,16]] to 7.55, [[252,12,16]] to 7.81, [[288,12,18]] to 8.19 at 150,000 iterations, so radius <= 7 is routine up to about n = 200 and marginal above 250. The finishing pipeline (1M-trial ladder on two seeds, then annealing, then the gate) was the bottleneck on a shared laptop, so most of the 232 recorded hits were not finished; the unfinished ones with the highest 30,000-trial readings ([[336,6,24]], [[294,6,22]], [[280,6,22]], [[264,8,18]], [[252,12,14]], [[280,12,12]], [[294,16,10]]) are listed in the campaign report, with the caveat that a 30,000-trial reading at n around 300 is not yet evidence (the finished hits all held their value through 1,000,000 trials, and the GPU pass is what backs the staged ones).

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 an hour of sweep over 83 tori, then a few minutes of laddering and annealing per candidate.

Reproduction

import sys; sys.path.insert(0, "research/kit")
from bb import build_bb
HX, HZ = build_bb(l=63, m=2, A_terms=[[0, 0], [51, 1], [61, 0]], B_terms=[[0, 0], [15, 1], [55, 1]])   # [[252,12]]

The layout is the coordinate list in the submission (annealing is randomized; the result is what is checked).

Parity checks

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