Add true_density.dsn: NET_C is a full-height wall on the sole signal layer, so plain room routing drops a net under every net ordering (an order-independent obstruction, verified over all permutations), unlike rooms_shove_channel whose plain drop fits under a reorder. Test that shove recovers nothing on this board (shoves == 0, same routed set as plain) while staying DRC-clean, and that the only difference from the recoverable shove_channel is the wall's span. shove relocates a blocker into existing free space; where the wall leaves no headroom there is nowhere to relocate to, so it cannot manufacture density. The recover/fail boundary is the free-space boundary.
DSN test fixtures
Hand-crafted minimal Specctra DSN files, written to exercise the parser. They
are modeled on the real fixtures shipped in the upstream FreeRouting repo
(fixtures/empty_board.dsn and fixtures/SMD-routing-issue-demo.dsn) so the
grammar and formatting match what kicad-cli pcb export specctra-dsn and
FreeRouting itself produce, but they were typed fresh here (no upstream file is
copied into this tree).
empty_board.dsn— the smallest valid board: parser, resolution, unit, and a structure with two signal layers and apcbboundary path. Modeled on FreeRoutingfixtures/empty_board.dsn.smd_demo.dsn— a fuller board exercising every scope the parser handles: quoted board/padstack/image names,via, defaultrule(width + clearance with a(type smd_smd)pair), akeepout, padstacks (rect and circle pads), images with pins, placement withfront/rotation, nets withComp-Pinreferences, and aclasswithcircuit/use_viaand arule. Modeled on FreeRoutingfixtures/SMD-routing-issue-demo.dsn.