Skip to content

Keep trace-layer candidate scoring consistent across repair stages - #97

Open
seveibar wants to merge 2 commits into
mainfrom
fix/preserve-trace-layer-improvements
Open

Keep trace-layer candidate scoring consistent across repair stages#97
seveibar wants to merge 2 commits into
mainfrom
fix/preserve-trace-layer-improvements

Conversation

@seveibar

@seveibar seveibar commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

The branch portfolio can discard a trace-layer repair that its inner solver accepted. After enabling inclusive via-span checks, SRJ18 sample 12 produces a trace-clean candidate with a remaining via-to-pad issue, but the outer acceptance guard counts that deferred issue as a hard via regression and restores the trace collisions. The same-machine autorouter benchmark changes from DRC pass to five reported errors.

Use the same staged scoring at both levels: exclude via-to-pad issues from the hard via regression count and pass the complete input snapshot to the existing candidate comparator. Remaining via-to-pad errors stay in the snapshot and are passed to the dedicated repair phase; via-to-trace and via-pair protections remain in place.

Add a two-route regression that fails on main. It checks acceptance of the deferred via-pad case, rejection of a new via-trace collision, visibility of the remaining error, and unchanged input routes.

Validation: all 89 tests pass (595 assertions), typecheck passes, and existing snapshots are unchanged. The consumer integration and full SRJ18 regression are in tscircuit/tscircuit-autorouter#2402; final same-machine benchmarks on consumer commit 239d57f restore sample 12 to zero DRC errors, with no pass/fail outcome regressions across dataset01 or SRJ18. The consumer’s full CI also passes.

@seveibar
seveibar requested a review from Abse2001 as a code owner September 5, 2026 06:27
@tscircuitbot

Copy link
Copy Markdown

Benchmark This PR

Run benchmarks by commenting on this PR:

/benchmark [benchmark.sh args...]
/benchmark [scenario-limit|all] --dataset <drc14|srj18> --concurrency <n> --effort <n> --max-iterations <n>

Everything after /benchmark is forwarded directly to ./benchmark.sh.

Examples:

  • /benchmark -> run default SRJ18 benchmark settings
  • /benchmark 10 -> run first 10 SRJ18 samples
  • /benchmark --dataset srj18 -> run all SRJ18 samples
  • /benchmark 1 --dataset srj18 -> run the first SRJ18 sample
  • /benchmark --dataset drc14 -> run all DRC14 samples
  • /benchmark all --concurrency 4 -> run all SRJ18 samples with 4 workers
  • /benchmark --scenario-limit all --effort 2 -> run all samples with effort 2
  • /benchmark --scenario-limit 20 --max-iterations 100 -> run 20 samples with a max iteration override

Any PR whose title contains [BENCHMARK TEST] will automatically run the benchmark workflow on PR updates.

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.

2 participants