Skip to content

GH-218: drop dense (4-cycle-rich) overlap rows from cap 16 on: fixes TN_216, costs TN_180 card-mto (PI decision) - #222

Closed
guluchen wants to merge 13 commits into
mainfrom
experiment/gh-218-stab-overlap-gate
Closed

guluchen wants to merge 13 commits into
mainfrom
experiment/gh-218-stab-overlap-gate

Conversation

@guluchen

@guluchen guluchen commented Nov 4, 2026

Copy link
Copy Markdown
Owner

Closes nothing yet: PI decision needed. Do not merge without it. Issue #218, hub #15. Follow-up of #148 / PR #158.

Problem

With GH-148's -stab-overlap=auto (main default), TN_216_4_18 is slower on 5-seed medians: 1.53x (no-card) and 1.39x (card-mto). That violates the Tier 5 1.2x rule.

Change

Mechanism (diagnosis; optimization/experiments/GH-218/diag/)

  • Not overhead. On the same core, with the rows set but inert (same search as off), the cost per propagation equals off within 1%. ovPropagate takes about 3% of a TN_216 Z16 probe.
  • A search effect at caps 16-17 of the TN Z half.
  • The same rows help TN_180's X half. Card-mto X16 is 0.48-0.66x the conflicts on 3 seeds (seed 0: 9062 -> 3951 s).
  • No cheap separator found. Checked:
    • structural statistics: 4-cycles, overlap neighbours, local parity rank, logical weights;
    • usage variants: no rows in the lookahead (Z16 1.18x but X16 1.05x), lookahead only, no VSIDS bumps from overlap reasons;
    • symmetry breaking: without it, TN_216 Z16 is 1.09x;
    • pilots at caps 10-12. TN_216 Z at cap 12 over 10 seeds has median 0.92-0.97, and the live 3-seed pilot kept Z on seeds 3 and 4.
  • Below cap 16 the TN rows are neutral to helpful. TN_108 is 0.92-0.95x in conflicts. TN_250's gain comes entirely from its weight-6 rows (c4 7 and 10), which stay sparse.

Gates

Tier 0: PASS.

  • make test-cc PASS. Part G: 4600 driver runs, 0 bad, including 5 new dense/drop/pilot configurations.
  • Part G (c):
    • the sparse-row selection equals a brute-force 4-cycle count in 224 selections;
    • the dense flags partition the rows;
    • forced on/off probe answers agree;
    • pilot decisions are reproducible;
    • mutant 3 (overlaps counted instead of pairs) changes 78 selections and is caught.
  • make test-cc-flags: 579 checks, 0 failed.
  • On every tier0-4 code, in both modes, the default and -stab-overlap-c4=off match main exactly: byte-identical stdout and identical per-probe FRONTIER/OVERLAP lines.

Tiers 1-4: PASS by identity (ratio 1.000).

  • No Tier 1-4 probe reaches cap 16: -ub-pre gives U0 = d on 5 seeds x 2 modes for TN_108, TN_200, TN_144 and TN_250.
  • BB/LP/GB have no dense rows.
  • So the search is main's for every seed.

Tier 5 (yfclab2, 6 h, 2026-11-04). Data in optimization/experiments/GH-218/T5/.

TN_216_4_18, 5 seeds. The candidate's per-probe conflict counts equal 12b3e05's on every probe of all 10 seed/mode pairs, so the search is the same. The 12b3e05 times are GH-148's 2026-10-28 runs; a seed-0 drift control in the same session measured +11.6% / +11.7%.

Mode cand s0..s4 (s) cand median 12b3e05 median raw drift-adjusted vs current main
no-card 10485, 9515, 11596, 13349, 9945 10485 9282 1.13 1.01 s0 same session 0.71 (14697 s)
card-mto 11284, 12018, 11577, 13210, 9272 11577 10217 1.13 1.01 s0 same session 1.005 (11225 s)

1.2x check against current main (default seed, same session):

Code no-card card-mto
TN_216 0.71 1.005
TN_180 1.07 (5919 -> 6314 s) 1.57 (6703 -> 10554 s): FAIL
BB_360 still solved, identical search (7775 s, d = 24) still solved, identical search (8075 s)
LP_1122 still solved, identical search (13590 s, d = 20) still solved, identical search (14023 s)
LP_1020 identical search (664 s) identical search (466 s)

The identical-search rows have the same per-probe conflicts as GH-148's Tier 5.

Decision for the PI

  1. Merge this rule. TN_216 returns to the 12b3e05 time. TN_180 card-mto gives back its [Mac agent] MaxSAT path: stabilizer-overlap dominance constraints in every CSS-half probe #148 gain: 11634 s before [Mac agent] MaxSAT path: stabilizer-overlap dominance constraints in every CSS-half probe #148, 6703 s on current main, 10554 s with this rule. TN_144 keeps [Mac agent] MaxSAT path: stabilizer-overlap dominance constraints in every CSS-half probe #148's 1.07-1.10x (cap 12 < 16).
  2. Keep [Mac agent] MaxSAT path: stabilizer-overlap dominance constraints in every CSS-half probe #148 as is. TN_216 stays 1.4-1.5x slower.

No rule found in this round satisfies both. Possible follow-up: restrict dense rows to the main search (no lookahead). On TN_216 seed 0 no-card that gave 1.10x conflicts vs off, and it kept TN_180's X gain, but only one seed was measured.

🤖 Generated with Claude Code

yfc and others added 13 commits November 4, 2026 02:57
…efault 11)

Rows of the same-type stabilizer matrix that lie on more than N Tanner
4-cycles are not used as overlap constraints (every subset of the verified
rows is sound). Removes the TN weight-9 rows (c4 >= 12) behind the TN_216
regression of GH-148; BB/LP/GB rows (c4 <= 4) and TN_250's weight-6 rows
(c4 7, 10) stay. -stab-overlap-c4=off = GH-148's row set (main's search).

Also: the native propagator's call sites test 'qubit var becoming true on a
row' inline before calling ovPropagate (same propagation, fewer calls), and
Solver::ovInLK (default true, no flag yet). Tests: Part G configs with the
gate, Part G (c) selection check against a brute-force 4-cycle count on the
tier0/TN codes, mutant 3 (miscount) caught.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…=on at its caps)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… -stab-overlap-pilot-cap=P)

Dense rows (more than -stab-overlap-c4 Tanner 4-cycles; every weight-9 TN
row, no BB/LP/GB row) stay as in GH-148 until a half's first probe with
cap >= max(P, lb) + 4. Before it, a pilot runs 'weight <= max(P, lb)?'
with and without the dense rows for N seeds and keeps them iff the median
conflict ratio is <= 1. Sparse rows are always used. Deterministic per
seed; every row subset is sound. Tests still to be updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ecks, flag checks)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he two pilot probes differ exactly by them)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ds more than 15 s on a loaded host)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lot decides from conflict counts only)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… on); pilot opt-in; OVERLAP-DROP line; docs

The cap-12 pilot does not predict the cap-16/17 effect (TN_216 Z at cap 12
over 10 seeds: median conflict ratio 0.97 / 0.92 while the cap-16/17 probes
lose 1.03-1.54x), so the default drops the dense rows where the effect
shows; below cap 16 (all TN codes of tiers 1-4) the search is GH-148's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eed)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… and the PR

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@guluchen

guluchen commented Nov 4, 2026

Copy link
Copy Markdown
Owner Author

Follow-up (branch experiment/gh-218-nolk; no PR): I tested keeping the dense rows in the search's propagation but out of the lookahead. It fails at the time level, so I stopped; no Tier 5 was run.

Conflict-level panel at caps 16-17, 5 seeds x 2 modes (single-probe diagnostic runs):

no-card card-mto
TN_216 conflicts vs 12b3e05, median 1.10 1.15
TN_216 conflicts vs 12b3e05, GH-148 auto, median 1.20 1.10
TN_216 probe-CPU sums vs 12b3e05 medians (raw) 1.47 1.40
TN_216 probe-CPU sums vs 12b3e05 medians (drift-adjusted) 1.32 1.26
TN_180 X16 conflicts, variant/auto, median (gain kept) 1.00 0.945

@guluchen

guluchen commented Nov 5, 2026

Copy link
Copy Markdown
Owner Author

Closed without merging, by PI decision (2026-11-05).

🤖 Generated with Claude Code

@guluchen guluchen closed this Nov 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant