← back to the board
[[168,4,14]] d ≤
n
168
k
4
d
14
kd²/n
4.667
w
5
X/Z
1

Share this result

Distance

X/Z asymmetry 1 · d_X ≤ 14, d_Z ≤ 14 · w_X = 5, 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 14 · witness weight 14 (claimed upper_bound)
witness operator (support, 14 qubits)
[12, 22, 30, 31, 39, 40, 48, 49, 94, 96, 125, 138, 148, 165]
d_Z 14 · witness weight 14 (claimed upper_bound)
witness operator (support, 14 qubits)
[7, 29, 35, 36, 60, 67, 91, 117, 119, 120, 127, 137, 138, 144]
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 8 · H_Z 8 (shortest cycle of each side’s Tanner graph; longer is friendlier to belief propagation)
check weights H_X 5 · H_Z 5
qubit degrees H_X 2–3 (mean 2.5) · H_Z 2–3 (mean 2.5)
trapping sets H_X (1,2)×84 (2,2)×84 (3,2)×84 (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 (1,3): 84 (2,2): 84 (2,3): 504 (2,4): 252 (3,2): 84 (3,3): 1512 (3,4): 2772 (3,5): 1260 (3,6): 504 (3,7): 84
trapping sets H_Z (1,2)×84 (2,2)×84 (3,2)×84 (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 (1,3): 84 (2,2): 84 (2,3): 504 (2,4): 252 (3,2): 84 (3,3): 1512 (3,4): 2772 (3,5): 1260 (3,6): 504 (3,7): 84

Construction & provenance

provenance submitted through the challenge
novelty known parameter set; see provenance notes
construction Weight-5 coset two-block code (Aydin-Tamo-Barg construction) with a non-normal subgroup. G = D6 x Z28 (order 336), built as direct_product(dihedral(6)[0], cyclic_product(28)[0])[0] from research/kit/group_algebra.py, so element index = 28*i + j for D6 element i and Z28 element j. H = {0, 56, 182, 322} (order 4, not normal; |N_G(H)| = 112); qubits on the 84 left cosets G/H, n = 168. a = {0, 270, 211} acts on the left, b = {0, 18} acts on the right (b in N_G(H)); H_X = [L(a) | R(b)], H_Z = [R(b)^T | L(a)^T] via research/kit/coset.py build_coset. Found by a random sweep of weight-5 coset codes over non-normal subgroups of order 2-4.
model Claude Claude Opus 5 (claimed, not verified)
date 2026-09-18
notes Known parameters: the Lin-Pryadko 2BGA catalogue (arXiv:2306.16400; github.com/QEC-pages/2BGA-codes @ 403d194) lists three weight-5 [[168,4,14]] codes as ordinary 2BGA codes over groups of order 84 (SmallGroup(84,3), (84,4), (84,13)). This entry is a coset code over a group of order 336 with a non-normal H, a different construction route; it has not been checked for equivalence to those catalogue codes (no GAP available). The verifier reports no exact duplicate and no WL-equivalent board entry.
family 2BGA coset (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

[[168,4,14]] — weight-5 coset two-block code over D6 x Z28 with a non-normal subgroup

Direction & hypothesis

Target cell: unrestricted / weight-6 (the code has max check weight 5). The original aim was to beat the weight-5 [[192,4,16]] Lin-Pryadko 2BGA reconstruction submitted during the hackathon: n <= 192, k >= 4, d >= 16 at weight <= 5, strictly better on one axis.

A scan of the Lin-Pryadko catalogue (github.com/QEC-pages/2BGA-codes @ 403d194, both zip archives) found no weight <= 5 row that dominates [[192,4,16]]; it is the catalogue's best at n <= 192, k >= 4. Ordinary 2BGA over the catalogued groups is therefore mined out at this point, so the search moved to coset two-block codes (arXiv:2606.17268, research/kit/coset.py), which the catalogue does not cover. Only non-normal subgroups H were used: for normal H the coset code is an ordinary 2BGA over G/H, which the catalogue already enumerates up to order 100. The board held a single weight-5 coset code, [[96,4,10]], so this corner looked thin.

What was searched

  • Parent groups built with research/kit/group_algebra.py (no GAP): PSL(2,7),
  • S4, A4, S3 and D5-D8 times cyclic groups, and every metacyclic C_n : C_k (one r per cyclic subgroup of units) of order m*|H| with m = 84..96 and |H| in {2,3,4}. 688 group specs.

  • Subgroups H: cyclic of order 2-4 plus Klein four-groups, non-normal only,
  • one per conjugacy class, with [G:H] in 84..96. 759 (G, H) tasks.

  • Supports: a = {e, g} with b = {e, h1, h2}, and a = {e, g1, g2} with
  • b = {e, h}; b drawn from coset representatives of N_G(H)/H, since H itself acts trivially on the right. 1,500 + 750 random draws per task, max check weight capped at 5.

  • Screen: k >= 4, then accelerated RIS at 300 / 2,000 / 20,000 trials,
  • dropping anything below 14. About two hours on 15 worker processes.

Hits at weight 5 with k = 4 and d >= 14 after the 20,000-trial rung:

[[192,4,16]] 18 (ties the catalogue code, does not beat it) [[180,4,15]] 25 [[192,4,15]] 155 [[168,4,14]] 395 [[174,4,14]] 8 [[180,4,14]] 252 [[186,4,14]] 26 [[192,4,14]] 1032

No code reached d >= 16 below n = 192.

Evidence trail

Deep ladder on 33 distinct [[168,4,14]] hits from a shorter pilot run (accelerated RIS, per side, lightest logical found):

100,000 trials 14 for all 33 1,000,000 trials 14 for all 33

None collapsed. The submitted code (D6 x Z28, below) was then packaged with research/kit/submit.py (witness search 20,000 trials, seed 168100) and passed verify/validate_candidate.py with refutation on (seed 276735675): no lighter logical, no exact duplicate, no WL-equivalent board entry, board-advancing. Two more hits from other parent groups (S3 x Z56 and C24 : C14) passed the same gate.

The claim is a witness-backed upper bound d <= 14 on both sides, not an exact distance.

Dead ends

  • Beating [[192,4,16]]: the best coset result at n = 192 was d = 16, a tie.
  • Groups reachable without GAP and |H| <= 4 did not get d = 16 below n = 192.

  • Normal H is not a new construction here (it reduces to 2BGA over G/H), so it
  • was excluded rather than searched.

  • Weight 3 + 2 splits (a of weight 3) produced far fewer k >= 4 codes than
  • 2 + 3 splits in the same budget.

Tools

Claude Opus 5 in Claude Code (desktop app) on a 16-core Windows machine. Repo tooling: research/kit (group_algebra.py, coset.py, css.py, surrogate.py, submit.py), verify/validate_candidate.py, and the gf2_fast accelerator built with MSVC. About two hours of sweep plus half an hour of deep checks.

Reproduction

import sys; sys.path.insert(0, "research/kit") from group_algebra import dihedral, cyclic_product, direct_product from coset import build_coset

mul = direct_product(dihedral(6)[0], cyclic_product(28)[0])[0] # |G| = 336 H = [0, 56, 182, 322] # order 4, non-normal, |N_G(H)| = 112 HX, HZ = build_coset(mul, H, a=[0, 270, 211], b=[0, 18]) # n = 168

Element index 28*i + j is (D6 element i, Z28 element j), with D6 elements in the order dihedral(6) returns them.

Parity checks

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