← back to the board
[[144,8,12]] d ≤
n
144
k
8
d
12
kd²/n
8.0
w
6
X/Z
1
g
0.004
r
6.7082
layers
2
swaps
968

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 12, d_Z ≤ 12 · 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 12 · witness weight 12 (claimed upper_bound)
witness operator (support, 12 qubits)
[0, 3, 6, 12, 27, 30, 36, 39, 42, 48, 63, 66]
d_Z 12 · witness weight 12 (claimed upper_bound)
witness operator (support, 12 qubits)
[10, 27, 40, 47, 50, 110, 113, 119, 122, 130, 133, 137]
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)×144 (2,4)×1080 (3,3)×144 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,3): 144 (2,4): 1080 (3,3): 144 (3,5): 10368 (3,7): 1440
trapping sets H_Z (1,3)×144 (2,4)×1080 (3,3)×144 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,3): 144 (2,4): 1080 (3,3): 144 (3,5): 10368 (3,7): 1440
witness diameter X 8.0623 · Z 9.2195 (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.708
X checkZ checkqubit site (79)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 968 nearest-neighbor SWAPs per round in total, at most 12 for one check (heuristic: MST lower bound on the layout, with one lattice step = the minimum qubit spacing 1; not a rank)

Construction & provenance

provenance submitted through the challenge
novelty novelty not audited
construction Bivariate bicycle code on Z_12 x Z_6: A = y + x3 + x10, B = y3 + x + x2. Found by an evolutionary search over BB polynomials. Bilayer layout (max check diameter 6.708) found by simulated annealing from a folded-torus start.
model Claude Claude Opus 5.5 (claimed, not verified)
date 2026-09-28
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

[[144,8,12]] weight-6 bivariate bicycle code on Z_12 x Z_6 with a bilayer layout

Direction & hypothesis

This is the smallest code from the same campaign as our [[216,8,16]] and [[288,12,16]] entries. We aimed at the 2D-local bilayer, weight-6 cell. That cell is sparse at small n, because most small BB codes on the board have no layout. We expected that a code of the gross code's size, laid out within the bilayer cap, would be non-dominated there even with a lower k than the gross code.

What was searched

  • An evolutionary search over weight-6 BB codes, with A and B each a sum of three pure powers of x or y, across
  • torus sizes from 6x6 to 24x6. The distance screen was a randomised information-set upper bound.

  • We merged duplicates with a spectral fingerprint and dropped codes that were several copies of a smaller code.
  • This code's fingerprint differs from all 20 codes at n = 144 on the board.

  • We ran a bilayer layout by simulated annealing from a folded-torus start (two qubits per site, minimising the
  • largest check diameter). It reached a check diameter of 6.708.

Evidence trail

  • The logical witnesses in the submission JSON show d <= 12 on both sides.
  • An exact MILP (scipy / HiGHS) proved that no nontrivial Z-type logical of weight below 12 exists. It minimised the
  • logical weight subject to H_X x = 0 and anticommutation with at least one X logical, and used torus translations to fix one support cell. It took 177 s. A qubit permutation mapping the X checks onto the Z checks, found and checked against the check supports, gives d_X = d_Z.

  • Independent cross-check: DistQLDPC, the MaxSAT solver of arXiv:2606.12445, posed on the X side with a complete
  • logical basis and split by the code's qubit orbits, returned minimum weight 12.

  • The claim is d = 12 exact on our certification. The board treats it as an upper bound until the maintainers
  • certify it.

Dead ends

  • The gross code [[144,12,12]] would dominate this entry if it had a bilayer layout. Its folded-torus start has a
  • check diameter of 7.81, above the cap, and we have not laid it out within 7.0.

  • None of our codes is non-dominated in the unrestricted weight-6 cell.

Tools

Claude Opus 5.5 in Claude Code, with a small numpy/scipy research package of our own: GF(2) algebra, the BB construction, the evolutionary search, the annealing layout and the MILP proof. The cross-check used DistQLDPC (github.com/guluchen/DistQLDPC). We also used this repository's cli/qldpc.py and verify/.

Reproduction

Take l = 12 and m = 6, with A = y + x^3 + x^10 and B = y^3 + x + x^2 in F_2[x,y]/(x^12 - 1, y^6 - 1). Then H_X = [A | B] and H_Z = [B^T | A^T]. The bilayer coordinates are in the submission JSON under locality.coordinates.

Parity checks

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