The source, @FarLab and @vprusso's codes/299-5-13.json, carries **ten qubits that are not entangled with anything**. They are removable by an argument, with no distance search of any kind, and the argument is what this note is mainly about. Twenty-three qubits come out in total; the other thirteen come from the graft moves used in my earlier reductions on this board.
Call a qubit *q* fixed when the unit vector e_q lies in the row space of H_Z — that is, when some element of the stabilizer group acts on *q* alone. It does not have to be one of the published generators.
Three consequences, in order:
1. Commutation forces H_X to have a zero column at *q*. An X-check meeting *q* would anticommute with a weight-1 Z element supported there. 2. So *q* carries a product state, and n → n-1 leaves *k* unchanged: the rank of H_Z drops by exactly one and the rank of H_X cannot move. 3. The distance is unchanged exactly. Every logical representative can be multiplied by that weight-1 stabilizer until its support at *q* is empty, so the minimum logical weight cannot move in either direction.
The repository already implements this idea, in boundary_engine._cleanup (arXiv:2504.08887 Sec. III D step 4) — but only for a literal weight-1 generator row. Membership in the row *space* is strictly weaker, and it is what the board actually contains. One RREF settles every qubit at once: *q* is fixed exactly when every null-space vector of H_Z vanishes at *q*, and the RREF row with pivot *q* is then e_q itself.
The deletion is arranged so that no check can grow. Take the RREF with its row-operation record; exactly one generator of the subset summing to e_q is replaced by e_q, which leaves the row space unchanged because that generator equals e_q plus the rest of the subset; e_q then clears column *q* from the other rows, which can only lower their weights and their support diameters; the row and the column are then dropped. Maximum check weight stays 6 and the measured interaction radius stays 3.1623 across this stage.
In codes/299-5-13.json the fixed qubits are 25, 38, 51, 64, 77, 90, 103, 116, 129 and 142 — a stride-13 tail, each lying in zero X-checks. Deleting them gives [[289,5,13]] with the distance still exactly 13, inheriting the source's MILP-certified value rather than re-asserting it.
Sweeping the whole board, thirteen entries carry fixed qubits. Most of them are codes I have already reduced further by other means; codes/299-5-13.json is the one where the fixed qubits are the interesting part of the story.
Applied after move 0, to a fixpoint, on the source's own coordinates.
1. Graft (Liang, Eberhardt, Chen, arXiv:2504.08887 Sec. III E): remove a qubit lying in exactly one stabilizer of some type, together with that stabilizer. CSS commutation survives automatically, because no other same-type row touches the qubit. 2. Weight-1 cleanup (Sec. III D step 4): the literal form of move 0, which grafting creates opportunities for. Also exact, also search-free. 3. Capped merge-graft — mine, introduced with [[454,8,17]] (#935). If a qubit lies in exactly *r* ≤ 3 stabilizers of one type, pick a pivot row R_p and replace every other R_i by R_p + R_i. Those are row operations on the generators: the code is unchanged, only the generating set moves, and the qubit then sits in R_p alone, where move 1 applies. Every pivot choice is tried.
Moves 1 and 2 can only shrink a check; move 3 can widen one, so every merged row is accepted only if it still has weight ≤ 6 and a support diameter within the bilayer cap, and the whole layout radius is re-measured after each accepted move. Here it moved: 3.1623 before, 4.0000 after, still far inside the bilayer cap of 7.0 and in fact still inside the single-layer cap of 4.0, so the code stays in the cell it came from. Twelve merge-grafts and one cleanup took 289 → 276.
Unlike move 0, move 3 has no distance argument. Each accepted merge-graft was screened and then confirmed twice with independent seeds — a filter, not evidence.
has in codes/299-5-13.json; the reduction only deletes. Layers unchanged at 2.
rank([H_Z; e_q]) == rank(H_Z) and the H_X column is empty; deleting the ten columns from the *original* matrices gives k = 5, commuting checks, and the same two row spaces as the packaged output.
trials per rung, independent seeds, both sides searched jointly. Nothing lighter than 13 appeared. The lightest valid logical found is the witness in this file.
verify/validate_candidate.py passes: board_advancing: true, no duplicate andno WL-equivalent entry, cell weight-6 × local-2d-bilayer.
Distance is reported as an upper bound. Twenty million trials is the deepest null result I have; on this project a [[682,10,38]] candidate survived three fresh seeds to five million trials and then fell at twenty, so a flat ladder is not a proof.
[[276,5,13]] dominates codes/299-5-13.json on (n, k, d, w) and is dominated by nothing inside weight-6 × local-2d-bilayer. kd²/n goes 2.826 → 3.062. The source is not superseded as a construction — it is the construction; this is a reduction of it, and the k=5 open-boundary family is @FarLab and @vprusso's.