auto selects pipeline7 for late routing phases with preloaded traces and exhausts iterations
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 58
- Forks
- 203
- Avg merge
- 7h 39m
- Merged PRs (30d)
- 286
Description
Summary
A later autorouting phase from an RV1106G2 board contains 4 remaining connections, 389 obstacles, and 205 traces produced by earlier phases. The auto preset reaches TscircuitAutorouter without an explicit autorouterVersion, so core selects AutoroutingPipelineSolver7_MultiGraph.
Pipeline 7 repeatedly rips up and retries the four routes until it exhausts its iteration budget. The same exact Simple Route JSON is solved by AutoroutingPipelineSolver9_PreloadedTraceGraph.
Reproduction
- Use the byte-identical SRJ fixture in tscircuit/core#3292.
- Instantiate the default/auto
TscircuitAutorouter, or run the fixture directly withAutoroutingPipelineSolver7_MultiGraph. - Observe that core selects Pipeline 7 and the full solve fails.
- Run the same input with
AutoroutingPipelineSolver9_PreloadedTraceGraph, as demonstrated in tscircuit/tscircuit-autorouter#2168.
Core fixture and labeled snapshot: https://github.com/tscircuit/core/pull/3292
Autorouter fixture and solved snapshot: https://github.com/tscircuit/tscircuit-autorouter/pull/2168
Observed behavior
- Pipeline 7 fails with all 4 remaining connections unsolved.
- Approximately 2,000,000 graph iterations are performed.
- 57,975 global rerips are performed.
- Runtime is approximately 112–155 seconds.
- The public
autoconfiguration gives no indication that a preloaded-trace-aware pipeline is needed.
Expected behavior
autorouter="auto" should complete a later routing phase containing existing traces, without requiring the board author to know and explicitly select an internal beta pipeline.
Comparison
On the same SRJ input, Pipeline 9:
- solves all 4 remaining connections;
- preserves the 205 preloaded traces and returns 209 total traces;
- completes in approximately 106,809 iterations.
Likely fix area
The selection occurs in lib/utils/autorouting/CapacityMeshAutorouter.ts. A possible direction is to select the preloaded-trace-aware solver when auto receives an input with existing traces. Pipeline 9 should not be made the unconditional global default because other preloaded-trace cases, including autorouter bugreport91, still need coverage or repair.
A regression should verify both:
- late-phase inputs with preloaded traces choose a solver that completes this fixture; and
- ordinary inputs without preloaded traces retain their existing behavior.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in lib/utils/autorouting/CapacityMeshAutorouter.ts and inspect how auto selects a solver when existing traces are present. Reproduce with the byte-identical SRJ fixture from tscircuit/core#3292 and compare Pipeline 7 with the solved Pipeline 9 case in tscircuit/tscircuit-autorouter#2168. Done means the late-phase fixture completes while ordinary inputs retain their current behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend, testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100