← back to the board
[[84,38,3]] d =
n
84
k
38
d
3
kd²/n
4.071
w
7
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X = 3, d_Z = 3 · w_X = 7, w_Z = 7 (max(d_X,d_Z)/min(d_X,d_Z); each side carries its own earned tier: = certified exact, ≤ witness upper bound)
d_X 3 · witness weight 3 (claimed upper_bound)
witness found by @mathysrennela · research/kit/surrogate.lightest_logical · found at 2×104 trials · survived 2×104 trials · 2026-10-10
witness operator (support, 3 qubits)
[5, 77, 83]
d_Z 3 · witness weight 3 (claimed upper_bound)
witness found by @mathysrennela · research/kit/surrogate.lightest_logical · found at 2×104 trials · survived 2×104 trials · 2026-10-10
witness operator (support, 3 qubits)
[10, 13, 65]
certificate exact, d = 3 · CryptoMiniSat 5.14.7 SAT
X: no logical < 3 exists; Z: no logical < 3 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 6 · H_Z 6 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 7 · H_Z 7
qubit degrees H_X 2 · H_Z 2
trapping sets H_X (1,2)×84 (2,2)×504 (3,0)×56 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_X
(1,2): 84 (2,2): 504 (3,0): 56 (3,2): 2856 (3,4): 840
trapping sets H_Z (1,2)×84 (2,2)×504 (3,0)×56 (smallest syndrome weight at each size, connected sets of up to 3 qubits)
full (size, syndrome weight): count census for H_Z
(1,2): 84 (2,2): 504 (3,0): 56 (3,2): 2856 (3,4): 840

Construction & provenance

provenance submitted through the challenge
novelty novelty not audited
construction Regular {7,7} hyperbolic surface code on a closed orientable surface. Quotient Q = Delta_7/Gamma with Q = PSL(2,7); the face-vertex swap is a projective involution J in PGL(2,7) imposing y = J x J-1, with ord(x) = ord(y) = 7 and ord(xy) = 2. Data qubits on edges = left cosets of the order-2 subgroup <xy>; Z checks on face boundaries = left cosets of <x>; X checks on vertex stars = left cosets of <y>. Checks commute because each face boundary meets each vertex an even number of times. n = |Q|/2 and k/n = (7-4)/7 + 2/n by Euler, giving k=38 at n=84. Regenerated from the algebra of arXiv:2610.10948 Sec. II by research/hyperbolic_psl.py; the matrices are recomputed, not copied, since that paper publishes its matrices on request only.
model human (claimed, not verified)
date 2026-10-10
notes Distance is a homological systole: a shortest cycle in the primal graph outside the GF(2) span of the face boundaries is a genuine logical. Both the X and Z operators here are weight 3 and are carried as explicit witnesses, so d<=3 is witness-backed, not certified exact.
family topological (a tag, not a ranking)
locality unrestricted (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

[[84,38,3]] [[84,38,3]], a self-dual PSL(2,7) {7,7} hyperbolic surface code, opens the high-rate corner of the weight-8/unrestricted cell: 38 logical qubits on 84 physical at check weight 7, a rate of 0.45 that no weight-8 entry on the board approaches at this blocklength.

Direction & hypothesis

weight-8 x unrestricted, family topological. Chosen because the paper's headline instances are all far over the n<=700/1000 blocklength cap, leaving only its small-q members admissible, and because high-rate low-weight-per-qubit entries are thin in this cell: the existing frontier tops out around kd2/n 123 but at k<=230 with n>=700, so nothing occupies small n at high k.

What was searched

The construction is algebraic, so the search is over generator classes rather than over code families: for each (p, q) the triangle-group relations ord(x)=ord(y)=p and ord(xy)=2 with y=JxJ^-1 for a projective involution J in PGL(2,q) admit many (x, y) pairs, deduplicated on the check-support signature. For p=7, q=7 that enumeration yields 84 distinct classes, all giving n=84, k=38; every one measured d=3 on both sides. n=84 and k=38 match the paper's Table 2 exactly. Also swept p=5 q=5 (30 distinct classes, all [[30,8,3]], already on the board as codes/30-8-3.json and therefore not filed).

Evidence trail

Confirmation ladder for the submitted code, each rung a fresh seed unless marked otherwise, reading the lightest logical found:

| budget (trials/side) | lightest logical | | ---: | ---: | | 1,000,000 (gf2_fast seed 101) | 3 | | 1,000,000 (gf2_fast seed 202) | 3 |

2 fresh-seed rung(s) agree at the best bound, the deepest of them at 1,000,000 trials per side. The submitted witness reproduces it: X: d <= 3 (upper_bound), Z: d <= 3 (upper_bound).

Two fresh-seed rungs at 1,000,000 trials per side through the gf2_fast accelerator (seeds 101 and 202) both settle at weight 3, so the bound counts as settled and the claim d<=3 is witness-backed, not certified exact.

Dead ends

  • The paper's headline codes -- [[51330,17112,10]], [[51330,10268,12]],
  • [[17220,7382,8]], [[25944,12974,8]], [[7440,1490,10]] -- are 1.7x to 51x over the board's blocklength cap (n<=700, extended to 1000 only for w<=8 and d<=40) and cannot be filed at any confidence tier. This is the whole reason the admissible slice of the paper is small.

  • p=5 q=5 gives [[30,8,3]], already on the board from a qecdb reconstruction;
  • re-filing it would be a duplicate, so it was dropped.

  • The paper's modular-compiler half (Secs. IV-VI: module partitions, R/K
  • routing metrics, Stim/PyMatching thresholds) is not rankable under TRACKS.md -- routing cost and gate scheduling are explicitly out of scope, and a module assignment earns at most the Layer-3 modular flag. Roughly 60% of the paper yields nothing for the board.

Tools

Model: human (opencode). The local verdict is verify/validate_candidate.py; the bundle was assembled by research/kit/promote.py.

Reproduction

research/hyperbolic_psl.py --list 7 7 enumerates the classes; --build 7 7 --class 0 writes HX/HZ as .npy. The script recomputes the matrices from the construction as published rather than copying them: arXiv:2610.10948's data-availability statement offers its matrices on request only. Verified that this script regenerates the submitted HX/HZ row for row.

Parity checks

X-checks 24 (max weight 7) · Z-checks 24 (max weight 7)
H_X (24 checks, sparse supports)
[0, 26, 33, 40, 47, 54, 55] [1, 27, 34, 41, 48, 49, 55] [2, 21, 28, 35, 42, 49, 50] [3, 22, 29, 36, 43, 50, 51] [4, 23, 30, 37, 44, 51, 52] [5, 24, 31, 38, 45, 52, 53] [6, 25, 32, 39, 46, 53, 54] [7, 27, 42, 62, 66, 69, 76] [8, 24, 46, 56, 63, 67, 70] [9, 21, 43, 57, 64, 68, 71] [10, 25, 47, 58, 65, 69, 72] [11, 22, 44, 59, 63, 66, 73] [12, 26, 48, 60, 64, 67, 74] [13, 23, 45, 61, 65, 68, 75] [14, 29, 39, 59, 70, 81, 83] [15, 34, 37, 62, 73, 77, 82] [16, 32, 35, 58, 76, 78, 83] [17, 30, 40, 61, 72, 77, 79] [18, 28, 38, 57, 75, 78, 80] [19, 33, 36, 60, 71, 79, 81] [20, 31, 41, 56, 74, 80, 82] [0, 1, 2, 3, 4, 5, 6] [7, 8, 9, 10, 11, 12, 13] [14, 15, 16, 17, 18, 19, 20]
H_Z (24 checks, sparse supports)
[0, 2, 26, 42, 62, 74, 82] [1, 3, 27, 43, 57, 76, 78] [2, 4, 21, 44, 59, 71, 81] [3, 5, 22, 45, 61, 73, 77] [4, 6, 23, 46, 56, 75, 80] [0, 5, 24, 47, 58, 70, 83] [1, 6, 25, 48, 60, 72, 79] [7, 8, 29, 37, 51, 62, 70] [8, 9, 33, 41, 55, 56, 71] [9, 10, 30, 38, 52, 57, 72] [10, 11, 34, 35, 49, 58, 73] [11, 12, 31, 39, 53, 59, 74] [12, 13, 28, 36, 50, 60, 75] [7, 13, 32, 40, 54, 61, 76] [14, 17, 26, 29, 40, 43, 64] [15, 18, 24, 34, 38, 48, 67] [16, 19, 22, 32, 36, 46, 63] [17, 20, 27, 30, 41, 44, 66] [14, 18, 25, 28, 39, 42, 69] [15, 19, 23, 33, 37, 47, 65] [16, 20, 21, 31, 35, 45, 68] [49, 50, 51, 52, 53, 54, 55] [63, 64, 65, 66, 67, 68, 69] [77, 78, 79, 80, 81, 82, 83]
Code ID 84-38-3 · download JSON · raw on GitHub