Attack log — Linear covering codes of radius two
2026-08-16 — q1 (recovered from Codex session 01a009f7-5a24-71e1-bf4c-9667f4d2cbc4)
- Targets tried: (documented 26) — best anneal missed 3 of 256 syndromes; CP-SAT/Z3 no model. (documented 39) — CP-SAT UNKNOWN; Gabidulin 39-set deletions missed 8.
- Click: seed from the 51-column Kaikkonen–Rosendahl matrix at . Fixed-cardinality targeted simulated annealing, xorshift64 run 0, hit 0 uncovered at proposal 3,600,281.
- Witness: 50 distinct nonzero 10-bit columns. F-rank 10. Exhaustive pair-XOR: 1024/1024. Density .
- Commit remembered in Math-agent memory as
5b93f34. Watcher (Grok, 03:32 PT) independently rebuilt columns fromH_r10_n50.txt(LSB = row 1) and confirmed 1024/1024. - stochastic run left 7 uncovered syndromes — not a lower bound.
2026-08-16 — q2 (recovered from Codex session 01a00a33-832e-7d13-bf0e-59aeab97ec82)
- Push 50→49 using
H_r10_n50.txtas seed. Search residue still 7 uncovered. Files:search_n49.c,search_n49_lifted.c,build_q2_residue.py,verify_q2_residue.py. - Do not claim . Holes and remain secondary.
2026-08-16 afternoon — q3 (Claude, covering-result branch)
- Built
result/as a self-contained, independently reproducible artifact for the whole result. Run it withcd problems/covering/result && ./run_all.sh— 74 checks, exit 0, byte-identical output across runs. - Two verifiers from scratch, two languages, opposite algorithms:
result/verify/verify.pyis pair-driven,result/verify/verify.rsis syndrome-driven.run_all.shdiffs their fact dumps. Both re-derive everything from the matrix text; neither reads a stored certificate. A third, quarantined oracle was run only afterwards and agreed on every value; it is not in the tree. - The missing piece the overnight run never computed: a valid -partition of into 10 blocks, against the paper's computer-searched (arXiv:2511.02542 Thm 5.2). All 973 syndromes that need a pair have a cross-block one; 821 of them have a unique pair, so the partition is tightly forced.
- Minimality: deleting any single column leaves uncovered syndromes (best deletions 381, 479, 927 leave exactly 9). So the 50-set is a minimal 1-saturating set in — an LO code. Not padded.
- , exactly 10 dependent triples; exactly one, , spans three distinct blocks (6/4/9). Analogue of Thm 5.2(ii), which is what QM needs at .
- Propagation: Construction QM (Thm 4.1, eq. (4.2), (4.4)) implemented from the paper. permits exactly , asserted not assumed. Results exhaustively verified: , , 262144/262144; , , 1048576/1048576. Published values 831 and 1663.
- These matrices differ from the alternate allocations in
result/data/alt/(the indicator allocation is a free choice) and both verify — two distinct witnesses at each , not one. - Family: , , against the paper's and the pre-2025 . Even reachable by QM from this seed: 10, 18, 20, 30–40, 46–64. Not reachable: 12, 14, 16, 22, 24, 26, 28, 42, 44 — the QM/QM analogues are not implemented and nothing is claimed there.
- Soft spot, stated in the note: only are exhaustively verified. The rest of the family inherits the paper's instead of computing partitions. That is the first thing a referee will push on.
- One number in the brief lost to the code: is , not . Fraction right, decimal wrong; no bound changes.
- Priority unresolved — Table 5.1 is "best as far as the authors know". Checklist and a drafted email to Davydov/Marcugini/Pambianco in
result/PRIORITY.md. Nothing goes out before a human works that list.
2026-08-18 — q4 (Claude, cursor/covering-n49-attack-48dc branch): push 50 → 49
Target: — 49 distinct nonzero 10-bit columns, rank 10, singletons + pair-XORs covering all 1024 syndromes. Budget check: , slack 202, density would be . Everything new lives in compute/q4/; the certified n=50 matrix and result/ are untouched.
Angle 1 — symmetry: 49 = 7×7 (new this quest)
If a 49-covering is invariant under a subgroup , it is a union of -orbits, and coverage collapses to orbit-class space (the pair-sum multiset of two orbits is -invariant). For the orbit classes number ~147 and a selection is just 7 orbits of size 7 — small enough to exhaust completely. Tools:
compute/q4/gen_groups.py— deterministic generator of subgroup representatives: every cyclic order- class for as block-diagonal companion matrices (deduped by cyclotomic-coset relabeling under ), plus two-generator groups (orbit sizes 1/7/49). One conjugacy representative suffices: conjugation maps invariant coverings to invariant coverings.compute/q4/orbit_dfs.c— exhaustive DFS over orbit selections with exact weight 49. Safe prunes only: subset-sum budget DP, an optimistic class-count bound, and suffix reachability masks (a class no remaining single/pair mask can cover kills the branch). Witnesses are re-verified in-process by flat pair enumeration and must still pass the Python verifier.- Validation: planted-witness tests (direct-sum coverings are invariant and found at n=62/78),
--no-prunenode-count comparisons, andcompute/q4/naive_enum.c, an independent dumb enumerator, agreeing on small cases.
Sweep driver: compute/q4/run_all_groups.sh → compute/q4/orbit_runs.log. Results so far (each line is an exhaustive claim for that subgroup class):
- order-7, trivial part dim 1, blocks : no invariant 49-covering (4.36e9 nodes, 44 s).
- order-7, trivial part dim 1, blocks : no invariant 49-covering (8.94e9 nodes).
- (sweep continuing: order-7 dim-4/dim-7 fixed spaces, order-9, order-15/21/35/45/105, — updated below as they land.)
Angle 2 — exhaustive k-swap prover from 7-hole residues
compute/q4/kswap.c: given a 49-column configuration, decide exactly whether any swap of ≤ K columns reaches zero holes. Re-add search branches on the first live hole (fresh column = hole, hole^kept, hole^placed), with an explicit defer branch for holes covered by two future columns, resolved in an exact endgame (anchored chain closure + floating-pair components, which are always placeable by translation), plus a top-s coverage-count bound that prunes ~300×. Planted controls: corrupting k columns of the certified 50-set (compiled at -DN_COLS=50) is caught at exactly j=k for all k = 1, 2, 3, 4.
Baseline stochastic runs (q2 binaries, fresh deterministic seeds) re-hit the 7-hole floor quickly; two 7-hole configs harvested:
best_sa_config.cols: holes {68, 95, 106, 214, 248, 679, 760}best_lifted_config.cols: holes {52, 471, 483, 544, 706, 833, 931}
Results. best_sa_config admits no swap of ≤ 5 columns reaching zero holes (exhaustive: C(49,5) = 1,906,884 removal sets, 94.6M re-add nodes). best_lifted_config admits no swap of ≤ 4 (j=5 running). These local optima are deep.
Finding: two inequivalent canonical near-misses. Both hole sets have rank 5 and exactly one zero-sum quadruple (an affine parallelogram) among the 7 holes; both configs have identical GL-invariants (multiplicity histogram, unique-coverage distribution per column, dependent-triple count). Yet compute/q4/find_equivalence.py — color-guided backtracking over basis images, self-tested on identity and random GL(10,2) transforms — proves there is no linear map sending one 49-set to the other. The 7-hole floor is not one canonical configuration; the landscape has at least two distinct deep basins with the same signature.
Angle 3 — SAT with a frame reduction
compute/q4/sat_n49.py: full CNF (pair auxiliaries + coverage clauses + seqcounter cardinality ≤ 49) with the WLOG reduction that a rank-10 covering can be assumed to contain all ten unit vectors (GL(10,2) frame normalization). Cadical, long timeout, background. A long shot; UNSAT would be a theorem but is not expected to terminate.
Wrap (stopped on request, 06:09 UTC)
No 49-covering found. No dent. Everything below is certified residue / certified exclusion, all replayable.
- Symmetry exhaustions (
compute/q4/orbit_runs.log): 79 subgroup classes exhausted at n=49, zero invariant coverings in every one: all 50 classes (orbit sizes 1/7/49 — the "49 = 7×7" resonance is dead for two-generator symmetry), 12 order-15 classes, 10 order-21 classes, 7 order-105 classes, and the two order-7 classes with 1-dimensional fixed space (4.4e9 and 8.9e9 node exhaustions). 11 of the 79 are instant budget infeasibilities (orbit sizes cannot sum to 49, e.g. pure order-3/5/11 actions). Not settled: order-7 with fixed-space dim 4 (two classes) and dim 7, plus two order-15 stragglers — timed out at 300–1800 s, no witness seen; and the order-9/-35/-45/-63/-3/-5 files the sweep never reached. Rerun:CASE_TIMEOUT=big ./compute/q4/run_all_groups.sh(skips completed cases). - k-swap exhaustion:
best_sa_config(7 holes) has no ≤5-swap to zero holes — exhaustive over all C(49,j) removals, j ≤ 5 (1.9M removal sets, 94.6M re-add nodes,compute/q4/kswap5_sa.log).best_lifted_config(7 holes): no ≤4-swap (j=5 was mid-run when stopped). Prover validated by 4/4 planted controls. - Inequivalence: the two 7-hole optima are not GL(10,2)-equivalent despite identical invariant profiles (see Angle 2). At least two distinct deep basins at 7 holes.
- SAT: instance built (1.14M clauses), no verdict before stop.
compute/q4/harvest_optima.sh+compute/q4/dedupe_optima.pyare ready but unrun. - Best hole count this quest: 7 (matching q2), now with teeth: provably ≥6-swap-deep (SA config) and two inequivalent basins.
- Certified n=50 matrix and
result/untouched. Replay:python3 compute/q4/verify_config.py compute/q4/best_sa_config.cols(prints the 7 holes);gcc -O3 ... compute/q4/kswap.c && ./compute/q4/kswap --input compute/q4/best_sa_config.cols --prove 5;./compute/q4/orbit_dfs --group compute/q4/groups/<case>.grp --n 49.
2026-08-19 — q5 (Codex, QM/QM propagation)
- The direct and lifted 49-column searchers ran concurrently for 1228.66 seconds each (7 and 8 threads, all documented modes, master seeds
0x49A202608190001and0x49B202608190002). A new guided add-then-delete/breakout search incompute/search_n49_guided.cran 637.74 seconds on 4 threads. All three best checkpoints independently recount to rank 10, 49 distinct nonzero columns, and 1017/1024 covered: 7 uncovered remains a search residue, not a lower bound. Checkpoints:compute/q2_direct_20260819_a.json,compute/q2_lifted_20260819_a.json,compute/q2_guided_20260819_a.json. - Construction QM (arXiv:2511.02542 Thm. 5.1) was implemented deterministically in
compute/build_qm3.py. The seed's 10-block partition is rechecked, the field polynomials are checked for irreducibility, and the matrices are independently checked from text bycompute/verify_radius2_matrix.c. Certified new bounds: (paper: 3389), (paper: 6781), and (paper: 13565). Exhaustive coverage was 4194304/4194304, 16777216/16777216, and 67108864/67108864, respectively; all matrices have full rank and distinct nonzero columns. - For QM,
compute/build_qm5.pyrefines the seed partition to 16 blocks and isolates the already-certified cross-block triple . Its alternative lift has an explicit, exhaustively checked 33-block partition; this is an intermediate tailored to QM, not a re-claim of the existing bound. The resultingcompute/H_r28_n26111.txthas rank 28, 26111 distinct nonzero columns, and exhaustive coverage 268435456/268435456. Its explicit 66-block partition also covers 268435456/268435456 syndromes using only cross-block pairs. Thus , improving the paper's 26623 by 512. - The verified at satisfies the QM hypothesis for . The theorem therefore gives and , improving 3407871 and 6815743. These two large continuations are theorem-propagated from the exhaustively checked matrix/partition; no claim is made that their or syndrome spaces were enumerated.
- Reproduction: run
compute/run_qm3_checks.shandcompute/run_qm5_checks.shfrom this problem directory. The builders also reproduced every matrix and partition byte-for-byte in a fresh directory. No optimality or claim is made.
2026-08-19 — q6b (Codex, exact 3-sums, QM, and )
- The requested Lemma 7.5 analogue holds in a stronger exact form: every one of the 1024 vectors of is the sum of exactly three distinct columns of
compute/H_r10_n50.txt. The standalonecompute/verify_three_sum.creparses the matrix and independently obtains rank 10, 50 distinct nonzero columns,exact3=1024/1024, andtwo_or_three=1024/1024after enumerating all triples. compute/build_qm35.pyimplements Construction QM of arXiv:2511.02542, Thm. 7.3 (called QM in the q6b brief). It constructs a parity check matrix of the cyclic perfect Golay radius-3 code from generator polynomial0xAE3, exhausts its 4095 nonzero codewords and 2048 syndromes, and glues the certified 50-column radius-2 matrix as with . The explicit outputcompute/H_R3_r26_n817.txthas rank 26 and 817 distinct nonzero columns. The independent matrix-onlycompute/verify_radius3_matrix.cenumerates 333336 pairs and 90556280 triples from the text: 321719/67108864 syndromes are covered at radius 2 and 67108864/67108864 at radius 3. Therefore , improving the paper's 818 by one.- The constructive 66-block partition of the already-certified radius-2 matrix can be coarsened.
compute/search_partition_merges.cexhaustively classifies each of all syndromes as having one, two, or at least three distinct block-pair representations (with zero and singleton syndromes protected). It proves that the disjoint merges of original blocks0+3and1+4are jointly safe and writescompute/partition_r28_n26111_p64.txt. The older independentcompute/verify_radius2_matrix.cthen reparses the matrix and new labels and confirms rank 28, 26111 distinct nonzero columns, and 268435456/268435456 cross-block-covered syndromes with 64 blocks. Thus ; no minimality of 64 is claimed. - The verified unlocks QM at : , so the theorem gives , improving the paper's 1703935 by 32768. This continuation is theorem-propagated from the exhaustively checked matrix and partition; its syndrome space was not enumerated.
- Reproduction: run
compute/run_qm35_checks.shandcompute/run_p64_checks.shfrom this problem directory.result/was read only and remains untouched. No claim of optimality or is made.
2026-08-19 — q6c (Codex, explicit QM certificate)
compute/build_qm44.pyimplements Construction QM of arXiv:2511.02542, Thm. 9.1, with odd . It reconstructs the Östergård–Kaikkonen radius-4 seed , gives its 19 singleton blocks the distinct nonzero indicators1..19, and uses the certifiedH_r10_n50.txtin . The explicit outputcompute/H_R4_r31_n689.txthas and .- The seed hypothesis is certified rather than inferred from the length formula. Exhaustive enumeration in gives cumulative OK2 coverage
20, 183, 981, 2048at weights 1 through 4. The dependent triple supplies a nonempty representation of zero.compute/qm44_top_certificate.txtrecords a nonempty sum of 1–4 distinct singleton blocks for every one of the 2048 top syndromes; its weight histogram is19, 163, 799, 1067. - The independent C verifier
compute/verify_qm44.cshares no source with the Python builder. It reparses both matrices and the certificate, checks rank 31 and 689 distinct nonzero columns, matches every parsed column against the or identity over , exhausts all 1024 syndromes of the radius-2 constituent, checks all 31 Hamming columns, and verifies all 2029 finite-field maps used by the weight-2/3/4 cases are invertible. It additionally constructs and checks 53,248 witnesses directly against the matrix text. - This is a complete blockwise certificate for all syndromes, not a flat -bit sweep. Weight 4 uses an invertible Vandermonde map; weight 3 leaves one column; weight 2 leaves a radius-2 constituent syndrome; weight 1 leaves at most two constituent columns and one column. Conversely, 1067 OK2 top syndromes are not sums of at most three seed columns, so projection proves the output radius is exactly 4. A lifted dependent triple and projectivity give minimum distance exactly 3. Therefore the explicit code proves the new table dent , improving the paper's 690 by one; no optimality is claimed.
- Reproduction: run
compute/run_qm44_checks.shfrom this problem directory. A clean rebuild was byte-identical, GCC AddressSanitizer/UBSan passed, and one-bit matrix and one-entry certificate mutations were both rejected. SHA-256: matrix4e7ecff7fe1a293fd50516171ad035376cbcc65c9347958fee4b00b6eb9c9164; top certificate2f5fe5b2ef6f46804516736a99d6fa3fac4f858a42b8e3a9b139d3e7254b7870.result/and the q6a search were untouched.
2026-08-19 — q7c (Codex, explicit lift partitions and honest QM continuations)
compute/build_lift_partitions.pyreconstructs the canonicalresult/data/H_r18_n815.txtandresult/data/H_r20_n1631.txtmatrices column-for-column from the certified 50-set and its 10-block partition. It first implements the constructive partition in the proof of Theorem 5.4: the interim -blocks are split by versus , and is the last block. This gives the explicit 33- and 65-block certificatescompute/partition_r18_n815.txtandcompute/partition_r20_n1631.txt.- Static coarsening maps then give
compute/partition_r18_n815_p17.txtandcompute/partition_r20_n1631_p14.txt. The older, independent C checkercompute/verify_radius2_matrix.creparses each matrix and label file and confirms full rank, 815/1631 distinct nonzero columns, and respectively 262144/262144 cross-block-covered syndromes with 17 blocks and 1048576/1048576 with 14 blocks. Thus and ; no minimality is claimed. The proof-constructed 33/65 parents are also independently swept. - For each large radius-3 lift,
compute/verify_qm35_identity.pychecks every hypothesis of arXiv:2511.02542, Theorem 7.3. It independently certifies the 23-column Golay matrix as a perfect code and its singleton -partition by enumerating all 2048 distinct weight-at-most-three syndromes. It exhaustively certifies the radius-2 constituent and its explicit 17- or 14-block 2-partition. It checks , , , irreducibility of the field polynomial, full output rank and projectivity, and every emitted and column identity. - With and of length 815, the explicit matrix
compute/H_R3_r38_n13102.txthas and . With and of length 1631,compute/H_R3_r41_n26206.txthas and . Theorem 7.3 therefore proves and , improving the paper's 13118 and 26238 by 16 and 32. These are theorem-only covering certificates; no or flat sweep is claimed or performed. - Reproduction: run
compute/run_q7c_checks.sh. It regenerates and independently sweeps the four partition certificates, rebuilds only the two new large matrices in a temporary directory and compares them byte-for-byte, then rechecks all Theorem 7.3 hypotheses and construction identities.result/is read only. No optimality or claim is made.
2026-08-20 — leftover unused paper constructions (QM, QM)
compute/recover_mok.pytreats the printed last wordICEas OCR. Preferred1CEis the unique 9-bit last column that makes a rank-9 projective code of covering radius exactly 3 whose Theorem 7.1 partition is a -partition of . Dependent triple is in three distinct blocks.compute/build_qm43.pyimplements Construction QM (Thms 6.4, 7.1–7.2) with , , and . Outputcompute/H_R3_r21_n303.txthas , . Independent identity checkercompute/verify_qm43_identity.py; covering certificate is the existing matrix-only C sweep of all syndromes.compute/build_qm21.pyimplements Construction QM (Thm 4.1 / (4.1), (4.3)) on the certified , matrix and its 17-block partition. . Outputcompute/H_r26_n13070.txthas , , against the paper's 13565 and the previous certified 13309. Independent identity checkercompute/verify_qm21_identity.py. The existing C verifier covers 67108864/67108864 syndromes in 0.460 s, so .- Putting both Hamming copies into the star seed-block misses 9105 syndromes. Giving each Hamming copy its own block yields the explicit 19-block 2-partition
compute/partition_r26_n13070_p19.txt; the same C verifier covers 67108864/67108864 using only cross-block pairs. Thus . This unlocks QM at (), so theorem-only , against the paper's 425983. The space was not enumerated. - Reproduction:
compute/run_qm43_checks.shandcompute/run_qm21_checks.sh.result/is read only. No optimality or claim is made. No search.
2026-08-20 — q8c (Codex, exact recursive coarsening at )
- Starting from the certified 64-block partition of
compute/H_r28_n26111.txt,compute/search_partition_merges.cwas applied recursively. At every step it exhaustively classified all syndromes by their surviving block-pair representations before accepting two safe disjoint merges. The deterministic chain reached blocks; its exact merge choices are recorded incompute/build_p28_partition.py. - The resulting explicit certificate
compute/partition_r28_n26111_p28.txthas 26,111 labels in 28 nonempty blocks. The pre-existing, independent C verifier reparsed the matrix and labels, checked rank 28 and 26,111 distinct nonzero columns, enumerated all 340,879,105 unordered pairs, and confirmed 268435456/268435456 cross-block-covered syndromes. Thus , improving the previously certified ; no partition minimality is claimed. - Since , QM is now directly legal from this matrix at . It gives and , an alternative direct derivation of the already recorded , radius-2 family value. The new dent here is the explicit certificate, not a new numerical table bound.
- Reproduction: run
compute/run_p28_checks.sh. It rebuilds the partition in a temporary directory, requires byte identity with the tracked certificate, runs the independent exhaustive verifier, and checks the QM arithmetic.result/is untouched. No claim of optimality or is made.
2026-08-20 — odd-r Table 5.1 holes (wrap: residue only)
Hard wrap. No shorter radius-2 matrix. Paper lengths still and . No claim.
- Rebuilt the GDT seed (
compute/build_gabidulin.py): is an explicit 79-set covering ; is a 159-set covering . These reconstruct the table, they do not dent it. - Every 1-deletion of the 79-set leaves or holes. The four 16-hole punctures are
compute/odd_r11_n78_16hole_a.colsand siblings. Exhaustive 1-swap on puncture stays at 16 holes. - No 2-out-1-in replacement from that 79-set reaches 0 holes (best 2-deletion leftover: 34).
- Compiled SA at did not find a covering. Residues: 16 holes from a Gabidulin puncture; 37 holes from a 78-subset of a longer union-greedy set. See
compute/odd_r_residue_2026-08-20.json. - 1-deletions of the 159-set leave 32–128 holes; no run finished before wrap.
2026-08-21 — q9 (Claude Opus 5, fable/covering-n49-traj): trajectory of the record, and exact quotient-block replacement
No 49-covering. No dent. Everything below is a recovered artifact, a
verified structural fact about the published solutions, or certified search
residue. result/ was read only; no q2/q4 search (SA, guided, lifted, k-swap,
invariant orbit DFS) was rerun. New material is in compute/q9/.
History first
- The Kaikkonen–Rosendahl 51-set is recovered. RESEARCH.md had recorded the
explicit 51-column listing as never obtained. It is reprinted as display
(4.9) of arXiv:2511.02542v1 (their Thm 4.3, citing Kaikkonen–Rosendahl,
New covering codes from an ADS-like construction, IEEE Trans. Inform.
Theory 49(7) 1809–1812, 2003, p. 1812) as 41 hexadecimal columns with
. Transcribed in
compute/q9/build_kr51.py, rebuilt ascompute/q9/H_r10_n51_KR.txt: rank 10, 51 distinct nonzero columns, exhaustive pair-XOR 1024/1024. - The trajectory, re-derived rather than copied
(
compute/q9/trajectory.py): 53 (1992, , Davydov–Drozhzhina-Labinskaya / CHLL Thm 5.4.27(i)) → 51 (2003, Kaikkonen–Rosendahl, ) → 51 (Nov 2025, still the Table 5.1 entry of arXiv:2511.02542, and their lift seed) → 50 (q1, 2026-08-16, ) → 49 open. Densities , , , . Volume bound only gives . - 53 is a lift; 51 and 50 are not. doubles every two units of
, so its entry is literally the entry carried up,
. Against that,
compute/q9/profiles.pysweeps all 174251 two-dimensional quotients of both the 51-set and the 50-set: no quotient of either has its kernel block covering . Both are quotient-flat — kernel-block size stays in (51-set) and (50-set) around a mean of . So the "improve the seed and re-lift" reading of the table died in 2003 and the 49 is not going to come from it.
The construction family that follows from that
Fix a quotient with kernel and coset representatives (this choice kills the twist). Pulling the four blocks back into , covering radius is equivalent to
with .
compute/q9/verify_blocks.py checks this
equivalence in both directions against a direct syndrome sweep on the 51-set,
the 50-set and both 7-hole residues, matching the exact hole sets, on 160
quotient instances.
Freeze : every condition on becomes a hitting-set constraint
(, and twins) plus one pair
constraint ( for each syndrome the other three blocks miss). So
"is there any block of size finishing ?" is exactly
decidable. compute/q9/block_solve.c decides it by
constraint-directed DFS: sibling exclusion on the hitting branches, where the
branches really are "" and partition the space; deliberately no
exclusion on the pair branches, where they overlap and exclusion would be
unsound; counting prunes on all four families.
This is not a -swap. A block carries up to 18 columns, all re-chosen at
once and exactly. --shrink asks for a block one column shorter (turning the
certified 50-set into a candidate 49); --resolve asks for one the same size
(turning a 7-hole 49-residue into a candidate covering).
Controls
- Encoding, positive:
--resolveon the certified 50-set returns a valid 50 on the first instance, re-verified 1024/1024 by an independent flat sweep. - Reduction, both directions: 160 quotient instances, exact hole sets agree.
- Planted, 7/7. Erase an entire block of the certified 50-set, replace it with uniformly random kernel elements, ask the solver to rebuild one. All seven recovered, at block sizes 8, 8, 10, 11, 12, 13, 14, each re-verified 1024/1024. A needle at depth 14 is found; q4's exhaustive prover reached depth 5.
- Independent oracle:
--selftest kcross-checks the DFS verdict against brute-force enumeration of every candidate block of size , scored only by the flat covering test, sharing no code with the constraint encoding.
Sweeps (node cap 20000 per instance, --maxblock 18)
Each sweep covers all 174251 quotients 3 non-kernel blocks = 522753
instances. skipped = block wider than --maxblock; capped = node cap hit,
which is unknown, not a negative; decided = search tree exhausted, an
exact exclusion.
| sweep | instances | decided | capped (unknown) | skipped | result |
|---|---|---|---|---|---|
--shrink on the certified 50-set (asks for 49) |
509468 | 220118 | 289350 | 13285 | no completion |
--resolve on best_sa_config (7 holes) |
514224 | 156264 | 357960 | 8529 | no completion |
--resolve on best_lifted_config (7 holes) |
514160 | 164382 | 349778 | 8593 | no completion |
--shrink on the KR 51-set (asks for 50) |
507792 | 159279 | 348513 | 14961 | no completion |
A second, deeper pass restricted to narrow blocks (--maxblock 12, node cap
200000) leaves almost nothing undecided:
| sweep | instances | decided | capped (unknown) | skipped | result |
|---|---|---|---|---|---|
--shrink on the certified 50-set, blocks |
279034 | 271127 (97.2%) | 7907 | 243719 | no completion |
That row is the strongest single statement of the quest: for every one of the 174251 quotients and every non-kernel block of at most 12 columns, replacing that whole block by any shorter block is decided — and 97.2% of the time the answer is exhaustively no. Not one instance produced a 49.
Calibration, and a limit of the move class. --shrink on the 2003 51-set
does not find a 50 either. The 51→50 step that q1 actually made by annealing
is therefore not a single-quotient-block shrink (at least not among the 159279
decided instances). The block move is far larger than a -swap — planted
needles at depth 14 are found — but it is not a superset of what annealing did,
and that is worth knowing before anyone reads a negative here as evidence about
49.
So: 220118 exact decisions say the certified 50-set cannot be shortened by replacing any one of those quotient blocks with a shorter block, and 320646 exact decisions say neither 7-hole optimum can be repaired by replacing any one of those blocks. Between them that is over half a million simultaneous rearrangements of up to 18 columns, ruled out one at a time — and roughly 57% of the instances were left undecided by the node cap. None of this is a lower bound. remains open.
Replay
cd problems/covering
python3 compute/q9/build_kr51.py compute/q9/H_r10_n51_KR.txt
python3 compute/q9/trajectory.py
python3 compute/q9/profiles.py compute/q9/H_r10_n51_KR.txt compute/H_r10_n50.txt
python3 compute/q9/verify_blocks.py compute/H_r10_n50.txt 40
gcc -O2 -o /tmp/bs compute/q9/block_solve.c
/tmp/bs --input compute/H_r10_n50.txt --shrink --maxblock 18 --nodes 20000 --shard 0/4
2026-08-21 — q10 (Claude Opus 5, fable/covering-n49-traj): prescribed automorphisms
No 49-covering. No dent. Records unchanged: ,
. What is new is a construction family that does not
start from a known covering, and the exhaustive exclusions it buys. Material
in compute/q10/; replay with
compute/q10/run_q10_checks.sh.
The family
q9 replaced one quotient block of the certified 50-set at a time. That move, however large, is still anchored to the 50. This one is not anchored to anything: fix of odd prime order and search only -invariant sets. Such a set is full -orbits of size plus of the nonzero fixed vectors (), so
and the search collapses from to
. Covering radius becomes
a condition on orbit sums, decided exactly by
orbit_search_g.c (fixed space of dimension
) and orbit_search_f.c (general).
Conjugating by the centraliser of sends solutions to solutions, so one
representative per centraliser class suffices; a subgroup of the centraliser
only refines the classes, so the reduction stays sound, and the classes are
computed from the commutant algebra rather than assumed.
, : order 7 is completely settled
, so with a 1-dimensional fixed space is exactly 7 of the 146 orbits — the lone fixed vector cannot be used, since 7 does not divide 48. must then be covered by a sum, and forces , so contains a partner pair . The centraliser reduces the 73 partner pairs to 1 class for module type and 3 classes for — the only two types up to conjugacy, since swaps the two 3-dimensional irreducibles and generates the same group. All four exhausted.
(144 orbits, 15 fixed vectors) allows
for both module types. and ran with one orbit forced per
centraliser class; ran the other way round — fixed_classes.py
collapses the fixed subsets to 6 centraliser classes,
and the orbit part was left completely free,
per class. All 12 exhausted.
needs no search: the touched-layer bound fails for every with .
So no 49-column radius-2 matrix of rank 10 has an automorphism of order 7. The
same two bounds plus the arithmetic condition kill orders 11, 17, 31, 73 and
127 outright (prime_orders.py), and the odd
primes dividing are exactly . Hence:
If a 49-set exists, its automorphism group in is a -group.
Odd-order symmetry that survives: with and with , whose exhaustive costs are — out of reach here, and honestly unknown, not negative. (unipotent ) was not attempted.
: the second target, also negative
has more slack than 49 does, so the same machinery was aimed below it.
| decomposition | verdict | ||
|---|---|---|---|
| order 11, | 78 | 7 orbits | exhausted, |
| order 11, | 77, 67, 66 | 7 / 6+f / 6 orbits | exhausted |
| order 23, | 69 | 3 orbits | exhausted, |
| order 17, | 68–75 | 4 orbits fixed | exhausted, all eight |
| order 7 , order 31 | 78, 69 | — | layer bound, no search |
Order 23 is the prettiest case and the biggest disappointment: it acts freely with 89 orbits of size 23, so an invariant set has size a multiple of 23, and sits ten below the record. It is not there. The same search does find a -invariant 92-set.
Controls
- Encoding. Orbit masks reproduce the flat syndrome sweep hole for hole on hundreds of random selections, for every used.
- Positive, four times. The searches find -invariant coverings at () and (), each re-verified or by an independent flat sweep. The negatives are not the family being empty.
- Pruning. , rerun with
--noprunevisits all subsets per class — full enumeration — and returns the same verdict. - Two implementations.
orbit_search_g.candorbit_search_f.cshare no search code and agree on every case both can run; the , exclusions are also proved by hand from the layer-fill bound.
None of this is a lower bound. and every value of below 79 remain open. The sphere bound still gives only at and at .
Addendum, same day — the known optima are 2-group symmetric
The sweep above covers odd prime orders. It was worth asking where the symmetry
of the existing coverings actually lives, and the answer changes the reading
of the whole section. aut_group.c computes
by invariant-refined backtracking:
| set | orbit sizes on | |
|---|---|---|
| certified 50-set (q1) | 128 | |
| Kaikkonen–Rosendahl 51-set | 512 |
Neither is rigid, and both groups are 2-groups — precisely the case the
prescribed-automorphism sweep does not reach, since never gives a
useful reduction on its own. Verified independently by
verify_aut.py, which rebuilds each element as a
matrix and checks invertibility, , distinctness, and closure under
composition and inverses.
Prescribing those two groups directly at does not work, and the reason is structural: the 127 vectors lying in -orbits of size form exactly a 7-dimensional subspace, so any union of them is trapped there and leaves holes. The only union with few orbits is ; all 74400 of those were tested exhaustively and the best leaves 499 holes. is coarser still.
Subgroups refine the orbits. subgroup_sweep.py
sampled 94 distinct subgroups of and 68 of
, enumerating unions of orbits of total size 49 up to a cap of
60000 per subgroup:
| group | | orbits | unions tested | best holes | | --- | --- | --- | --- | --- | | | 8 | 183 | 60000 (capped) | 197 | | | 16 | 131 | 60000 (capped) | 83 | | | 32 | 133 | 60000 (capped) | 563 | | | 8 | 191 | 60000 (capped) | 232 |
Every row is capped, so unknown, not negative — the union counts at these orders are far past 60000 and no subgroup was decided. 83 holes is search residue and nothing more; it is not close to a covering in any meaningful sense, and it is not a bound. What the addendum does establish is the honest next move: order-16 2-subgroups are where an invariant 49 would have to live, and deciding even one of them exhaustively is the open work.
2026-08-21 — q11 (Claude Opus 5, fable/covering-n49-traj): the fibered graph family
No 49. No dent. Records unchanged: , ,
. What is new is a construction family that is anchored to
a fibration rather than to a set, that contains the documented lengths at
, that is exactly decided at , and that carries two exact
obstructions — one of which says outright that the family cannot produce any
at . Material in compute/q11/; replay with
compute/q11/run_q11_checks.sh.
The family
Split , , , and take
one column over every nonzero point of the base and a kernel block . Radius 2 splits cleanly into two conditions: is 1-saturating in , and for every , where and . Since , the whole family is the single question how large can be.
q9 moved one quotient block of a known 50; q10 prescribed a symmetry. This starts from neither — is a free function, and the known coverings are outputs, not seeds.
The line-colouring reformulation
and span the same line of , and for the symmetric 2-cocycle . So colours the lines of by , and the condition is
every point of sees every colour of ,
i.e. each colour class is a line cover and the classes are disjoint.
lines.py checks this against the flat sweep on
every solution below; they agree in every case.
Two exact consequences:
- Lemma A. If is odd and is quadratic then . (For nonzero , is an alternating form on an odd-dimensional space, so it is degenerate; a radical vector forces , for every .) has : the quadratic members are empty there.
- Lemma B. with the number of lines and the least line cover. At , gives , so the family cannot produce any at — sharper than the per-fibre floor .
What the family gives
| best | shorter lengths | documented | ||
|---|---|---|---|---|
| 4 | (2,2) | 5 | — | |
| 6 | (3,3) | 13 | exhausted | — |
| 7 | (3,4) | 19 | impossible ( cannot be 1-saturating) | GDT |
| 8 | (4,4) | 26 | exhausted | |
| 9 | (4,5) | 39 | residue | GDT |
| 10 | (5,5) | 54 | impossible; 48–53 undecided | |
| 11 | (5,6) | 86 (short runs) | not reached | GDT |
Every listed length is an explicit matrix under compute/q11/, each replayed
by verify_H.c, a flat sweep sharing no code
with the search: 16/16, 64/64, 128/128, 256/256, 512/512, 1024/1024, 2048/2048.
The rows are exact. and at were exhausted over all 6435 and 5005 kernel blocks with no reduction at all; over the 24 -reduced blocks, with the reduction itself controlled by re-running on its 17 reduced blocks and getting the same verdict. So the family reproduces from a two-line definition and provably cannot beat it.
Why is the bad case, and it is not an accident
At the useful split is : the base is one dimension larger than the fibre, each nonzero fibre gets pairs for targets, and there is slack — that is the shape of the classical odd- formula, and the family lands exactly on and . At the split must be : each fibre gets only pairs for targets and the deficit is paid by the kernel block, whose own sums are then almost all wasted — at , supplies 171 covers for 31 targets, 140 of the 202 total slack burned in one fibre. On top of that is odd, so Lemma A deletes the quadratic members. The record 50 is not in this family; the family's own best is 54. That is a structural reason why has no closed-form value while its odd neighbours do.
The residue, and where it is stuck
at would be a dent. It needs with , and the
colour half of the condition is reachable — the annealer hits cost 0 at
routinely. Every time, the eight colours common to all 31 points had no
1-saturating complement, and of the recorded blocking sets 29 of 29 (13
distinct) are affine hyperplanes of
(fullsets.py) — for those,
and , so fibre 0 can never be covered. That
is an observation about a sample, not a theorem.
From the other side, reduces to a finite list: up to there are
28 classes of 7-element kernel blocks, exactly 17 of them 1-saturating, and
a 38 in this family must use one of those 17. All 17 were annealed at length
and every one floors at exactly cost 14, i.e. 14 missing (point, colour)
incidences out of 248 (r9_n38_classes.txt).
The exact DFS decides none of them — nodes on the first block,
still capped. So is residue, not an exclusion, and
stands.
What was tried at and did not work
The exhaustive DFS was aimed at directly: , kernel block
, with the 15149 -reduced -masks generated by
gen_asets.c. At a 300000-node cap, 0 of the
first 200 masks were decided; a single mask did not finish in 10 minutes.
No capped table is reported, because a sweep that decides nothing is not a
result. The annealer, which is what settles the other rows, tops out at
() at and reaches cost 55 at and cost 67 at
— nowhere near.
None of this is a lower bound. remains open, the sphere bound still gives only , and the exclusions above are exclusions inside one family.
Replay
cd problems/covering/compute/q11
sh run_q11_checks.sh
2026-08-21 — wrap (session stopped)
Stephen asked to wrap covering and leave Hilbert running. No 49. No dent. Records unchanged: , , . Sphere covering still only at .
Three families, all recorded above:
- q9. Trajectory of the record; KR 51-set recovered; exact single-quotient-block replacement. Not a lift of the record.
- q10. Prescribed odd-order automorphisms. A 49-set, if it exists, has a -group of automorphisms. The known 50 and 51 are 2-group symmetric.
- q11. Fibered graph family. Exactly decided for . Cannot produce any at ; its own best there is 54. at is residue (17 kernel-block classes, all floor at cost 14).
Next move if anyone reopens this: decide one order-16 subgroup of at , or finish the 17 classes at , . Do not rerun SA / k-swap-5 / C7×C7 / single-block shrink.
Replay of the certified 50-set on wrap (2026-08-21, late morning PT):
python3 compute/verify_certificate.py compute/H_r10_n50.txt → PASS,
1024/1024, rank 10, radius exactly 2.
2026-09-08 — H_OK 9-block (3,0)-partition → ℓ₂(18,3)≤151
- Request from Davydov–Marcugini–Pambianco: coarsen the Theorem 7.1 (3,1)-partition of from 11 blocks to 9, so Construction QM can take and give instead of the table's at .
- SAT (Glucose) finds a -partition into 9 blocks and proves into 9 is UNSAT. Dependent triple must share a block in every 9-block solution, so is impossible at .
- Explicit labels
compute/partition_H_OK_p9_ell0.txt; seed matrixcompute/H_OK_r9_n18.txt. Independent check:python3 compute/verify_H_OK_p9.py(512/512). - Builder
compute/build_qm43_p9.pyemitscompute/H_R3_r18_n151.txt. Independent C sweep: 262144/262144 at radius 3 (verify_radius3_matrix, , ). Thus , improving by 2. - Reproduction:
compute/run_qm43_p9_checks.sh. No claim that .
2026-09-10 — OK37 (3,0) partition residue (q12)
- Alexander’s ask: coarsen the Östergård–Kaikkonen seed (, hex
B16) to so QM at could hit vs table 618. - Residue, no dent. Cadical: min -partition size is ; every UNSAT. Explicit labels
compute/partition_H_OK37_p18_ell0.txt(15 singletons + ). No dependent triples ⇒ impossible at any . QM does not apply. - Verify:
python3 -c "from ok37_seed import ok37_columns, is_partition_3ell; labels=[int(x) for line in open('partition_H_OK37_p18_ell0.txt') if not line.startswith('#') for x in line.split()]; print(is_partition_3ell(ok37_columns(), labels, 0), len(set(labels)))"fromcompute/→True 18. Campaign:compute/q12/, notecompute/NOTES_OK37_p17.md.
2026-09-11 — q13: inherited partition of the 817 seed and QM
- Dent: , improving Table 7.2's 52415 by 64.
- The apparent search problem collapsed under Theorem 7.3 (7.4). The existing 817-column QM matrix already has a 34-block -partition: its 23 Golay -blocks, the 10 certified blocks of the embedded 50-column matrix, and its one block.
- The partition was materialized as
compute/q13/partition_r26_n817_p34.txtand refined, without merging, to the 65 blocks incompute/q13/partition_r26_n817_p65.txt. These receive all indicators in . - Independent C sweeps: coarse partition 321037/67108864 through two columns and 67108864/67108864 through three; refined partition 321067/67108864 and 67108864/67108864. Peak syndrome bitmap: 8388608 bytes.
compute/q13/H_R3_r44_n52351.txthas rank 44 and 52351 distinct nonzero columns. The C verifier independently checks , all 65 indicators, and all 52351 or identities. Theorem 6.1, (6.4), (6.8) supplies the covering implication; no syndrome sweep was attempted.- Replay:
compute/q13/run_all.shfrom the problem folder. Exit 0 means the exact claim incompute/q13/CLAIM.mdholds.
2026-09-23 — q16: merge inherited blocks before the radius-3 lift
- Started from q13's inherited 34-block -partition of the 817-column radius-3 seed. Unlike q13's refinement to 65 indicators at , the target was a coarsening to 33 blocks so QM could run at and redundancy 41. Candidate length: .
compute/q16/search_merges.ccounted all 80,992,858 admissible three-column representations and tested every 561 unordered block merge. Exactly two pass: zero-based pairs and . The other 559 have at least one syndrome whose every admissible representation is destroyed by that merge. This excludes only single merges of this particular partition.- Chose . The independent verifier checks rank, field arithmetic, all 26,175 output identities, and all 67,108,864 seed syndromes under the 33-block partition. It reports 321,037 syndromes through two columns and full coverage through three. Dent: , compared with the published 26238 and the notebook's earlier 26206.
- Follow-up deletion screen: among the 67,108,864 syndromes, 59,867,904 have a unique representation by at most three columns from distinct merged blocks. All 817 columns occur in such a representation. Without any block restriction, 59,734,976 syndromes have a unique representation, still involving every column. Thus no single deletion of this 817-column seed retains radius 3. This does not exclude a different 816-column matrix.
- The separate small-seed and two-block handles remain open.
Replay:
sh compute/q16/run_all.shfromproblems/covering/.
2026-09-23 — q14: exact local switches around the 50-set
Target: . The published 50-column seed is Wu, arXiv:2608.27494, also used in the September Davydov–Marcugini–Pambianco–Wu draft. This campaign asks a new finite question: can a 49-set be reached by deleting two or three columns from that seed and inserting one or two new columns?
compute/q14/switch_2to1.cexhausts all 1,225 deletion pairs and 1,194,375 insertions. The best has nine holes: delete zero-based indices 0 and 21 and insert syndrome column 1. Independentverify_best.pyfinds rank 10, 1,015/1,024 syndromes covered, holes 8, 40, 349, 381, 584, 616, 797, 829, 931.compute/q14/switch_3to2.cexhausts all 19,600 deletion triples and 19,129,600 first insertions. For each one, any valid second insertion must cover the first remaining hole , so it must be , , or for one of the 47 retained base columns . Exhausting those 937,350,400 constrained second-column checks gives no cover. The smallest hole count after just the first insertion is 27.- Replay:
compute/q14/run_all.sh. The 50-column source certificate still passes its independent full sweep.
No dent. The two local neighborhoods are excluded, but an unrelated 49-set remains possible. This is residue and no lower bound for .
2026-09-23 — q15: redundancy-47 refinement of the same seed
- Independently of q16, an exhaustive single-merge sweep of the inherited 34-block -partition also found the two safe pairs 7+31 and 15+24 (no claim of a minimum partition size). Using 15+24 recovers the same already certified in q16; all 32 elements of plus are assigned for the lift.
- A 129-block refinement of the seed then permits QM at , giving a matrix. The C verifier checks the seed sweep, field, rank, distinct columns, and all 104703 lift identities. Coverage of the output spaces follows from Theorem 6.1 after the seed checks (no or sweep claimed). Dent: , improving the published 104831 by 128.
- Replay:
sh compute/q15/run_all.shfromproblems/covering/. Large output matrices live in temporary storage and are checked against committed manifests (peak syndrome bitmap 8 MiB).