Skip to content

D90 — Simple Route JSON supported at the edge only

Decision

Simple Route JSON (tscircuit's routing-problem format) is supported at the edge only: srj-import writes a problem as a self-contained KiCad board with its project and rules, the unchanged pipeline routes and judges it, and srj-export writes the routed copper back as SRJ traces. Nets follow tscircuit's own connectivity grouping; rules the problem does not state are absent, not KiCad's defaults. The BGA breakout sets srj19 and srj20 run in bench/run.py with KiCad's DRC as the judge at the distances of tscircuit's published pass criterion (0.1 mm copper, 0.1 mm via hole to via hole), and bench/srj_score.py adds tscircuit's own checker on the exported solution as a second score (doc 08 §9, doc 10 §7)

Alternatives

An SRJ model inside the engine; routing SRJ rectangles directly; tscircuit's checker as the only judge; a re-implementation of its checker

Reason

One board model and one exact check stay the source of truth, and KiCad remains the judge every other number in the project uses, so the SRJ figures are comparable with them. A converter is small and testable by counting (problem connections = KiCad ratsnest = router connections on all 400 problems). Running tscircuit's checker itself, pinned, avoids arguing about an imitation; it is a second score because it has no say on what KiCad checks and reports some collinear tracks of different nets as touching when they are not