Skip to content

[Mac agent] CC engine: Tanner-graph automorphism discovery for orbit seeds and the XZ-dual map (open TN codes) #152

Open

Description

@guluchen

Hub: #15. Baseline: main e52d15b (CC rules excl,pack,orbf,parity,leaf,overlap, -ub-search Stern). Timing basis: main 12b3e05 tables (optimization/baselines/). GH-148 (MaxSAT stabilizer-overlap propagator) is a separate agent's round and is not touched here.

Goal of the round: raise certified CC lower bounds on the 17 open tier5 codes (BB_756/864/1080 at 30; 14 TN codes at 20-24 after 6 h on one core). Each extra CC level costs ~3-4x, so a candidate must remove a constant factor of >= 3x on the hard levels to move a bound. Multi-core CC is out of scope (PI decision).

Prior records read: GH-124 (S0/S1, ADJUDICATION), GH-133, GH-138, GH-140, GH-146 reports; docs/LITERATURE_CC_2026.md (sections 3-4).

Measurement before the proposals (Mac, pure-Python probe, a few seconds per code)

The CC engine's orbit seeds and its single-half (XZ-dual) search come only from the GH-75 candidate family of index maps (block / strided / 2-D shifts, half swaps). I computed the automorphism group of each code's coloured Tanner graph (qubits, Hx rows, Hz rows; rows mapped to rows of the same type) by individualisation-refinement, with exhaustive (not budget-limited) non-orbit proofs:

Codes Orbit seeds now (GH-75 family) Tanner-graph automorphism group
TN_288, TN_324, TN_432, TN_540, TN_576 (open) none (index rule, 288-576 seeds, both halves) 36 orbits of size 8 / 9 / 12 / 15 / 16 (free action)
TN_496 (open) 16 orbits of 31, both halves same orbits, plus an XZ-swapping map (single-half search possible)
TN_360/396/468/504/612/684, TN_252 36 orbits of n/36 same orbits (nothing new)
TN_648_10, TN_648_14 (open) none trivial group
BB_756/864/1080 (open) 2 orbits + dual map same
LP_340/442/544/714 (tier 1-4), LP tier5 34 orbits, no dual map (both halves) same orbits, plus an XZ-swapping map
BB_288 2 orbits transitive (1 orbit)
TN_200, TN_250 (tier 2/4) none orbits of size 2
GB_144_12_12 2 orbits (rowspace map) trivial Tanner group (so the new generators must be added to, not replace, the family)

After individualising any one qubit, refinement is discrete on every open code, so all point stabilisers are trivial. Second-level canonicalisation (Literature Rank 6b) therefore gains nothing on these codes; I drop it.

Proposal 1 (SELECTED): Tanner-graph automorphism discovery feeding the CC orbit seeds and the dual map (-cc-aut=on, default off)

Proposal 2: per-logical ("lambda-odd") pseudo-check for the k = 2 TN codes (TN_288, 496, 504, 576, 612, 684)

  • Hypothesis. Every nontrivial X-logical has odd overlap with some dual logical representative x_i. k searches, each with x_i added as an odd pseudo-row at the root, cover F. Each one starts with one more odd row (stronger packing and branching from the root), and its seeds can be restricted to supp(x_i) with earlier qubits forbidden.
  • Expected effect. Uncertain, 1-3x on TN (Literature Rank 7), offset by running k = 2 searches. Nothing on BB (orbits already leave 2 seeds).
  • Risk: medium. The completeness argument needs a cover proof per unit, and it must interact correctly with excl/orbf (orbits must fix x_i or be dropped). Soundness sketch. F = union over i of F_i, with F_i = {v in F : <v, x_i> = 1}. Each F_i search is a CC search on [H; x_i] with target syndrome e_last, and connectivity holds because x_i is a row. The level verdict is the OR over i.

Proposal 3: overlap-aware fractional packing bound

  • Hypothesis. pack counts greedily chosen disjoint odd rows. An LP-dual (fractional) bound: max sum_r y_r over odd rows with sum over r containing q of y_r <= 1 for each free qubit q. Combined with the [Mac agent] CC engine: stabilizer-overlap pruning (Lee 2026) with forbidden-qubit propagation #138 slack per stabilizer row, this gives a larger lower bound on the qubits still needed, especially on TN, where odd rows share candidates through 4-cycles.
  • Expected effect. 1.2-2x fewer nodes on TN (speculative), at 2-5x more cost per node for an incremental fractional packing. Net effect uncertain; [Mac agent] CC engine: stabilizer-overlap pruning (Lee 2026) with forbidden-qubit propagation #138 showed that +6-9 % per-node cost already cancels a 5-13 % node gain.
  • Risk: medium. Any feasible dual solution is a valid bound (weak duality), but floating point must be avoided (integer/half-integer packings only) to keep the bound exact. Soundness sketch. Each odd row of S needs >= 1 qubit of e \ S, each qubit of e \ S lies in the rows it covers, so sum_r y_r <= |e \ S| for any fractional packing y.

Selection

Proposal 1. It is the only one whose potential was measured before implementation (5 open codes go from no symmetry to orbits of 8-16, TN_496 and all LP codes gain a verified dual map). Its effect is multiplicative with every existing rule. Its correctness risk is the lowest, since all soundness rests on the existing GF(2) verifiers and the search code is unchanged. It is cheap to test against brute force with hidden symmetries. Proposals 2 and 3 have unmeasured, possibly break-even effects and medium soundness risk. They stay candidates for a later round. Proposal 1 does not help TN_648_10/14 (trivial group), BB_756/864/1080 or the 7 TN codes that already have orbits. For those, the next lever stays a constant-factor pruning gain (Proposal 3) or the PI's multi-core decision.

Plan: Tier 0 (tests, byte identity on tier0+1 for both engines), S0 node counts (BB_360, BB_756, TN_288, TN_360, LP_1428), Tier 1-4 five-seed panels -engine=cc old vs -cc-aut=on, Tier 5 27 cells 6 h CC only. All timing on yfclab2 cores 64-123, one process per core, 4 GB cap. Any new lower bound will be reported as PLAUSIBLE with a relabelled cross-check. No stems are renamed.

Activity

  1. added 3 commits that reference this issue on Oct 28, 2026
  2. guluchen commented on Oct 28, 2026

    @guluchen
    OwnerAuthor

    Result: -cc-aut=on passes Tier 0-5; new PLAUSIBLE CC lower bounds on 6 open TN codes

    Branch experiment/gh-152-tanner-aut. Evaluated binary dfd0717; record commit 4a05225. Full record: optimization/experiments/GH-152/REPORT.md. No PR opened, nothing merged.

    What it does. -cc-aut=on (off by default) runs individualisation-refinement on the coloured Tanner graph (qubits, Hx rows, Hz rows). It proposes extra automorphisms for the CC orbit seeds, plus one map that exchanges the Hx and Hz rows for the single-half search. Every candidate passes the existing GF(2) checks before it is used. The search code, the driver and the MaxSAT path are unchanged. With the flag off, the output is byte-identical to main e52d15b.

    Symmetry found.

    • TN_288/324/432/540/576 had no orbit seeds before. They now get 36 orbits of size 8 / 9 / 12 / 15 / 16.
    • TN_496 and every LP code gain a verified XZ-dual map.
    • Detection takes at most 11 ms per code.

    S0: nodes at the same level, new/old.

    TN_576 TN_540 TN_432 TN_324 TN_288 TN_496 LP_1428 BB_360 / BB_756 / TN_360
    0.070 0.074 0.094 0.128 0.147 0.44 0.29 1.000

    Gates.

    • Tier 0: PASS. Covers:
      • make test-cc, including the new Parts G/H (hidden symmetries under relabelling, hypergraph-product duality, all 128 rule subsets).
      • The large run: 576k ladders and 6k driver runs, 0 bad.
      • Mutants 13/14 (candidates, or the swap map, used without the GF(2) check): both detected.
      • Flag checks: 346/346.
      • Answer check: 161/161 runs equal the stem.
      • Byte identity: 90/90 identical in the deterministic configurations, both engines.
    • Tier 1: PASS, neutral. The panel gave 1.089, but both cells are at the process floor and an identical-search cell in the same panel varied by 12 %. The preregistered repeat (25 interleaved runs per arm) gave 0.999.
    • Tier 2: 0.914. Tier 3: 0.807. Tier 4: 0.536 (TN_250: 113 s -> 60 s). No cell above 1.25.
    • Tier 5: 54/54 runs clean (27 codes, 6 h, old and new arms concurrently); no cell missing or killed.
    Code old CC lb new CC lb (6 h) time to old lb, new/old
    TN_288 20 22 0.158
    TN_324 20 22 0.143
    TN_432 21 23 0.112
    TN_496 22 23 0.506
    TN_540 21 23 0.083
    TN_576 22 24 0.078

    LP cells solve 2-9x sooner. All other cells run an identical search and finish in 0.94-1.05x the time. BB_756/864/1080 stay at 30.

    Status of the new bounds: PLAUSIBLE, not reproduced. The relabelled seed-1 runs (6 h) stopped lower: 20 / 20 / 21 / 21 / 21 / 22, with every level they finished EMPTY. A 30-min control explains why: seed 1 makes both the old and the new arm 5-7x slower per level, and the new/old node ratio stays at 0.07-0.14. So the shortfall comes from the labelling, not from the feature. An independent Python implementation reproduces the orbit partitions. The stems were not renamed.

    PI decisions.

    1. Should -cc-aut=on become the CC default?
    2. Should the six bounds be recorded as PLAUSIBLE? Should they first get a reproduction with a second labelling (6-12 h per code)?
    3. The large labelling sensitivity suggests a cheap next lever: choosing the qubit order.
    4. BB_756/864/1080, TN_648_x and the 7 TN codes that already had orbits still need another lever: a stronger packing bound, or multi-core CC.

    🤖 Generated with Claude Code

  3. added 6 commits that reference this issue on Oct 28, 2026
  4. guluchen commented on Oct 29, 2026

    @guluchen
    OwnerAuthor

    GH-152 reproduction of the six new CC lower bounds: all REPRODUCED (PI decision B, 2026-10-28)

    Setup:

    • Same binary dfd0717, original qubit labels (cc-seed 0).
    • Different search order: -cc-rules=excl,pack,orbf,parity,leaf,overlap,mrv (branch on the odd row with the fewest candidates instead of the lowest-index one).
    • -cc-aut=on, 12 h each on yfclab2, cores 72-77, 4 GB cap.
    • All 6 runs ended at the time limit, rc 1, no science issues.
    Code claimed lb reproduced lb lb reached at: original -> mrv
    TN_288_2_9to24 22 22 20888 s -> 41377 s
    TN_324_4_9to25 22 22 15034 s -> 21428 s
    TN_432_8_9to29 23 23 17206 s -> 31033 s
    TN_496_2_17to30 23 23 16819 s -> 17151 s
    TN_540_4_9to34 23 23 10757 s -> 18618 s
    TN_576_2_9to37 24 24 14303 s -> 31140 s
    • Every level completed EMPTY; no level was non-empty below a claimed bound.
    • Node counts differ at every level, so this is a genuinely different tree: mrv explores 1.2-2.6x more nodes at the deciding levels.
    • The orbit partitions are GF(2)-verified (verified_generators=1-2, orbits=36, and 16 on TN_496), and so is the TN_496 Tanner swap map (verified as XZ-dual map).
    • No option exists to reseed the orbit-representative choice without relabelling, so only one alternative order was run.

    Record: optimization/experiments/GH-152/REPRODUCTION.md (commit bc6f37b on experiment/gh-152-tanner-aut). Stems are not renamed; that is left to the PI. The adoption PR for -cc-aut=on as the CC default is #155 (CI green, not merged).

  5. added 2 commits that reference this issue on Oct 29, 2026
  6. guluchen commented on Oct 29, 2026

    @guluchen
    OwnerAuthor

    Stem renames for the six reproduced GH-152 CC lower bounds (PI approval 2026-10-29). Both PRs are open, CI is green, and nothing is merged.

    TN_288_2_9to24 -> TN_288_2_22to24, TN_324_4_9to25 -> TN_324_4_22to25, TN_432_8_9to29 -> TN_432_8_23to29, TN_496_2_17to30 -> TN_496_2_23to30, TN_540_4_9to34 -> TN_540_4_23to34, TN_576_2_9to37 -> TN_576_2_24to37. The matrices are the same and the upper bounds are unchanged.

    🤖 Generated with Claude Code

  7. added 2 commits that reference this issue on Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions