Skip to content

CC engine: charge node lower bound as a default CC rule (GH-157) - #161

Merged
guluchen merged 23 commits into
mainfrom
experiment/gh-157-cc-charge
Oct 30, 2026
Merged

guluchen merged 23 commits into
mainfrom
experiment/gh-157-cc-charge

Conversation

@guluchen

@guluchen guluchen commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

For #157 (hub #15). Adoption PR per the PI's decisions of 2026-10-29. Do not merge without the PI's go.

What this PR does

Evidence (optimization/experiments/GH-157/REPORT.md)

  • Tier 0 of the adopted default (764b011): make test-cc PASS (Part I: bound vs brute-force tau, 345 600 ladders, mutant 15 caught; all main mutants as on main); flags 442/442; tier 0-3 answers 61/61 equal to the stem (CC default with seeds 0 and 1, MaxSAT tier 0-1); identity vs main: MaxSAT deterministic 30/30, old CC path 45/45, MaxSAT default 26/30 identical (the rest differ only in finder-timing lines).
  • Tiers 1-4 (opt-in evaluation, 5-seed medians, vs main CC / vs -cc-aut=on on both sides): Tier 1 1.000 / 1.012 (process floor), Tier 2 0.889 / 0.919, Tier 3 0.925 / 0.911, Tier 4 0.946 / 0.975; max cell 1.105 / 1.133.
  • Tier 5: new CC lower bounds TN_360 >= 23, TN_396 >= 23, TN_504 >= 24, TN_648_10 >= 22 (all four reproduced with a different search order, mrv with original labels, within 12 h: REPRODUCTION.md). TN codes reach the old values in 0.72-0.80x of the same-session main time.
  • A default change requires re-recording the baselines afterwards (PI rule), unless the PI waives it. No stems are renamed.

🤖 Generated with Claude Code

yfc and others added 20 commits October 29, 2026 06:58
Rules charge (raised local-degree LP-dual charge, exact integer arithmetic) and
ecover (Gallai edge cover on a greedy 2-packing of the odd rows, Edmonds
blossom matching) in -cc-rules, both off by default; -cc-lb-minr=K; test
mutants 15/16; -cc-stats lines printed only with the new rules.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er, mutants 15/16, driver configs)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eep the packing inside U'; in-search charge on the search state with counting fused into the scan; test cross-check hook

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… pack scan (no extra pass), raise as a second stage; chgraise counter

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…flag row, flag tests, runner

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cheap exits before the matching), evaluated before charge; charge back to on-demand counting (no per-toggle cost)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… packing <= G, default 0; prunes concentrate at r = p); charge first, ecover U' selection back in lb_prune; tests and flags

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e candidate sets (early exit in the local charge); -cc-lb-raise=on|off

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…; one pass less per evaluation)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…peat, development probes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…after an EMPTY level with >= 1000 evaluations of which < P % pruned

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…vels are not representative); documentation of the final design

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s matching, mutant 16, stats fields, tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…op of the -cc-aut=on default); docs (README, help, MODIFICATIONS, NOTICE) and tests for the new default

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e main's instance stream

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@guluchen guluchen changed the title CC engine: fractional-charge / edge-cover node lower bounds (GH-157, opt-in) CC engine: charge node lower bound as a default CC rule (GH-157) Oct 29, 2026
yfc and others added 2 commits October 29, 2026 16:02
…h mrv order, original labels (12 h, cores 24-27)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@guluchen
guluchen merged commit c94d390 into main Oct 30, 2026
3 checks passed
guluchen pushed a commit that referenced this pull request Oct 30, 2026
…unds

PI decision 2026-10-31. Same matrices (git mv of Hx/Hz/Gx/Gz; only the
Gx/Gz header comment changes). Upper bounds unchanged.

  TN_360_4_17to24  -> TN_360_4_23to24   (GH-157)
  TN_396_4_17to26  -> TN_396_4_23to26   (GH-157)
  TN_504_2_17to34  -> TN_504_2_24to34   (GH-157)
  TN_648_10_9to32  -> TN_648_10_22to32  (GH-157)
  BB_1080_4_30to48 -> BB_1080_4_32to48  (GH-162, reproduced by GH-183)
  BB_756_16_30to34 -> BB_756_16_32to34  (GH-183)
  BB_864_4_30to40  -> BB_864_4_32to40   (GH-183)
  TN_496_2_23to30  -> TN_496_2_27to30   (GH-181)

Lower bounds: DistQLDPC's optional CC engine with opt-in rules that are
not on main (charge, PR #161; tiebreak with mrv / -cc-roworder=bfs,
PRs #180 / #204; sparse,sparseov,sparsemrv, PR #203), each reproduced
with a different search order or binary of the same engine (not an
independent second method).

Updated: data/matrices/README.md (tier5 list, rename history, open
items), NOTICE, README naming example, name columns of
optimization/baselines/SERVER.md and main_server_reference.json. The
upper-bound witnesses for these eight stems are copied under the new
stems to optimization/experiments/GH-146/witnesses/renamed-2026-10-31/
(VERIFY.txt: 8/8 VALID). Historical experiment records are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
guluchen pushed a commit that referenced this pull request Oct 30, 2026
…unds

PI decision 2026-10-31. Same matrices (git mv of Hx/Hz/Gx/Gz; only the
Gx/Gz header comment changes). Upper bounds unchanged.

  TN_360_4_17to24  -> TN_360_4_23to24   (GH-157)
  TN_396_4_17to26  -> TN_396_4_23to26   (GH-157)
  TN_504_2_17to34  -> TN_504_2_24to34   (GH-157)
  TN_648_10_9to32  -> TN_648_10_22to32  (GH-157)
  BB_1080_4_30to48 -> BB_1080_4_32to48  (GH-162, reproduced by GH-183)
  BB_756_16_30to34 -> BB_756_16_32to34  (GH-183)
  BB_864_4_30to40  -> BB_864_4_32to40   (GH-183)
  TN_496_2_23to30  -> TN_496_2_27to30   (GH-181)

Lower bounds: DistQLDPC's optional CC engine with rules that were
opt-in when the bounds were found (charge, default on main since
PR #161; tiebreak with mrv / -cc-roworder=bfs, PRs #180 / #204, and
sparse,sparseov,sparsemrv, PR #203, not on main), each reproduced with
a different search order or binary of the same engine (not an
independent second method).

Updated: data/matrices/README.md (tier5 list, rename history, open
items), NOTICE, README naming example, name columns of
optimization/baselines/SERVER.md and main_server_reference.json. The
upper-bound witnesses for these eight stems are copied under the new
stems to optimization/experiments/GH-146/witnesses/renamed-2026-10-31/
(VERIFY.txt: 8/8 VALID). Historical experiment records are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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