an anneal, drawn: courtyards, the cut line, the band inside it
Quorra
a placer that listens to the judge
Named for the ISO in Tron: Legacy who learned from the human. Quorra is not a new optimiser — the annealer stays. It is a new cost for that annealer and a stricter judge behind it, built after the audit of ISOnet found that a learned ranker saved the router essentially nothing. The first thing the new judge found was a defect, not a feature.
the board's edge, and a quarter of the corpus
Copper cannot sit on the line the board is cut along. Two things were enforcing that and neither was talking to the placer: the routing file is written with its boundary inset 0.3 mm, and freerouting then keeps its own clearance from that boundary, so copper was effectively held half a millimetre inside the edge. Meanwhile the placer seated parts by their courtyard — the keep-clear box around a part — which for a connector is wider than its pads. Connectors came out flush against the cut line with pads already over it, and the router opened with violations that no amount of routing could clear.
A fifth of held-out anneals were in that state. They routed clean 1% of the time; everything else routed clean 83% of the time. Human placements were in it too, at 10%. The fix is one number — a 0.3 mm edge clearance the placer now keeps the pad bounding box inside, not the courtyard — and re-annealing the affected boards under it took them from 0% clean to 68%, against 95% for the untouched controls. Then 2,531 corpus labels were re-routed to say so: 294 flipped from dirty to clean, none the other way.
the gap that went with it
We had a headline result: human placement beat the annealer by 14.5 points of clean-route rate, significant, on real open-hardware boards. It was the defect. The placer was walking into the edge band twice as often as the people were, and that difference was most of the gap.
Re-measured on 705 untouched boards, every one routed under the same rule, the person's placement and the placer's first anneal are the same number to within a third of a point. Best of six anneals is now the one ahead — which is the point of a placer that can try again cheaply. It was 726 boards at 74.7% each until 5 September, when an audit of board identity found freerouting vendors a copy of the held-out set inside its own fixtures and took 21 of those boards out with the 866 copies. The conclusion did not move; the count and the third decimal did.
Which moves the target. At parity on whether a board routes, what is left to win is how it routes: wirelength still runs 1.39× the person's, decoupling caps sit further from their pins than a human would allow, thermals starve, polarised parts face every which way. That list is Quorra's cost function.
The first term off it was measured rather than argued about, and the result is the reason the rest are judged differently now. Cypress's net crossing — each net cut into its Euclidean spanning tree, a conflict wherever two nets' segments properly intersect — went into the anneal behind a weight, and eight arms of it ran against the baseline the human-gap harness had left on disk: the same 120 boards, the same six seeds, the same router at the same rule, 5,750 anneal-and-route jobs, so every comparison is this board with the term and without. The proxy moved hard and the routed board did not. Crossings fall 18% at 1.5 mm a crossing for no wirelength at all, 29% at 12 mm for 5.3% more wire; the five crossing arms pooled lift the single-anneal clean rate 1.8 points [+0.2, +3.7] and best-of-six by half of one; vias do not move. The overflow term buys nothing on either. Cypress reports crossings falling 69% and nothing about the routed board; this is the paired, routed number. Route rate on boards this size is rules-limited, not placement-limited — the router finishes four times in five whatever the placement — so placement work is judged from here on what a reviewer grades, not on the clean rate.
ground, as a judge
Real boards pour copper: the ground net becomes a filled region rather than traces. Doing that changes what a label even means, so it went in as a judge before it went in as a feature. Ground is declared already-connected in the routing file, the router does the rest, KiCad fills a zone on each outer layer, islands are stitched with vias in up to three rounds, and anything the fill cannot reach falls back to routing ground as traces under the pour — so a Gerber never silently loses its ground.
On 120 held-out placements the pour neither gains nor loses a board: 43 clean before, 43 after. The fill reaches every ground pad unaided on about half of them, stitching rescues 14 more, 26 fall back to routed ground, 10 stay islanded. Dropping ground from the routing problem entirely — an upper bound on what a pour could ever buy the router — moves 47 clean boards to 53. The pour's value was never the route rate.
It was this: with the pour filled and KiCad's own design-rule check run over the result, 64 of those 120 boards carry copper errors the router had called finished, and 4 of the 47 the router called clean. A stricter judge was the thing worth having, and it is now on by default in both build paths.
why freerouting stays the judge
We surveyed the alternatives and none of them replaces it as an oracle: the commercial routers are Windows-only with unverified batch modes, the open ones publish no numbers, and the hosted ones charge per route. So the judge got upgraded rather than swapped — freerouting 2.4.1, checked before it was trusted: byte-identical output over three runs of the same board, 119 of 120 held-out placements agreeing with the old version's label, and a median route falling from 6.9 s to 5.2 s. The one board that flipped, flipped to dirty.
furthering
Parts on both sides of the board, which this page listed as next and which now exists: a placement carries a side, and the mirror convention was measured rather than chosen, because the two file formats a board passes through do not describe a back part the same way and a guess would have shipped a mirrored board. A part goes on the back only if nothing leads through the board and nobody has to reach it, and only where the front has run out of room. The A/B on what it buys is still running.
Then the rules cost — decoupling next to its pin, crystals close, connectors at the edge, polarity facing one way, analog and digital kept apart — with weights fitted from the human boards rather than chosen by us. And a fast global router inside the anneal loop in place of the analytic density estimate, which is where Mendicant's slime mould is headed, and which is now cheap enough to be there: its loop was rewritten in Rust and runs seventeen times sooner on the windows, to floating-point noise of the numbers it replaces. freerouting stays the final word.
the other threads
ISOneta network that learns the router's verdict
The model whose audit sent this work here: AUC 0.95, and a skill that turned out to be between boards rather than between placements.
Mendicanta board, read as a molecule
The candidate cost term: a fold that varies within one board independently of wirelength.