One move, applied to a fixpoint, replaces the whole reduction move set I have been using on this board. It takes @FarLab and @vprusso's codes/299-5-13.json down by 29 qubits, and the distance of the result is proved, not bounded.
Let S be any element of the row space of H_X — an element of the stabilizer group, not necessarily one of the published generators — with support T, and let a ∈ T.
1. Replace one generator of the subset summing to S by S itself. The span is unchanged: that generator equals S plus the rest of the subset. 2. Add S into every other X row meeting a, so a survives only in S. 3. Apply the CNOT fan-out from a to T \ {a}. On check matrices that is H_X[:, b] ^= H_X[:, a] and H_Z[:, a] ^= H_Z[:, b] for each b ∈ T \ {a}.
After step 2 only S meets a, so the first substitution turns S into the weight-1 stabilizer X_a and leaves every other X row alone. The second zeroes column a of H_Z, because commutation forces every Z row to meet T an even number of times, so the XOR of its entries over T is 0. Qubit a is then disentangled and is deleted:
> n → n-1, k unchanged, and the Z rows only lose an index, so their weights > and their support diameters cannot rise.
The weight of S separates three regimes, and the whole difference is in step 2, R ^= S:
| \|S\| | what step 2 does to a row R meeting a | cost | |---|---|---| | 1 | nothing is added anywhere | weight, radius and distance exactly preserved; no search | | 2 | R loses a, toggles one other index | weight changes by 0 or −2, never rises; distance must be measured | | ≥ 3 | R can grow | checked against the weight class and the locality radius; distance must be measured |
|S| = 1 is the row-space form of the weight-1 stabilizer cleanup of Liang, Eberhardt and Chen (arXiv:2504.08887 Sec. III D step 4). The implementation in research/local2d/boundary_engine.py fires only on a literal weight-1 generator row; membership in the row *space* is strictly weaker, and it is what the board actually contains. Sweeping every entry, thirteen carry such qubits; codes/299-5-13.json carries ten of them, a stride-13 tail at originals 25, 38, 51, 64, 77, 90, 103, 116, 129, 142, each lying in zero X-checks.
|S| ≥ 3 generalises the capped merge-graft I introduced with [[454,8,17]] (#935), which only ever built S from the generators a *single qubit* happens to lie in. Low-weight row-space elements are enumerated here as sums of at most three checks with a connected overlap pattern.
Accepted grafts on this code, by stabilizer weight: |S|=1: 5, |S|=2: 8, |S|=3: 5, |S|=5: 5, |S|=6: 6.
The distance is certified exact. scipy.optimize.milp (HiGHS) on the repository's own formulation, one subproblem per logical basis element per side: a vector of ker(H_opp) is a non-trivial logical exactly when it anticommutes with at least one basis element, so the minimum over the basis is the minimum over all 2^k − 1 classes, and k subproblems suffice. All 10 subproblems proved optimal at weight 13. No subproblem hit its time limit, so this is a proof and not a timeout — a distinction this project has had to enforce the hard way, having watched a [[682,10,38]] candidate survive three fresh seeds to five million RIS trials and then fall at twenty million.
Corroboration, run before the MILP finished: a fresh-seed RIS ladder at 20k → 200k → 1M → 5M → 20M trials per rung, independent seeds, both sides searched jointly, found nothing lighter than 13.
The |S| = 1 stage was also checked independently of the reducer: for each of the ten fixed qubits, rank([H_Z; e_q]) == rank(H_Z) and the H_X column is empty, and deleting the ten columns from the *original* matrices gives k = 5, commuting checks, and the same two row spaces as the tool produces. The intermediate [[289,5,13]] was MILP-certified exact at 13 on its own — which is what the argument predicts, since the source's distance is itself MILP-certified and disentangled qubits cannot carry any of it.
Max check weight 6 throughout. Interaction radius 3.1623 → 4.0000: inside the bilayer cap of 7.0, and in fact inside the single-layer cap of 4.0, though the code needs two layers so it stays local-2d-bilayer. Layers unchanged at 2. Qubit positions are the source's — every surviving qubit keeps the coordinate it has in codes/299-5-13.json, and the reduction only deletes. kd²/n 2.826 → 3.148.
verify/validate_candidate.py passes: board_advancing: true, dominated_by: [], no duplicate and no WL-equivalent entry, cell weight-6 × local-2d-bilayer.
The k = 5 open-boundary family is @FarLab and @vprusso's; codes/299-5-13.json is the construction and this is a reduction of it. The reduction move and the tooling are mine. A single-layer layout was attempted and failed: single_layer_retrofit.py, seeded from the code's own positions, ten restarts of 600k anneal steps on a spacing-1 triangular lattice, reaches radius 4.3589 against a cap of 4.0.