Closed bug report

Clean ESC flow assumes declared inner planes already exist; gate leaves 97 unconnected

John Lauer · 22d ago ·closed by John Lauer

The documented clean ESC start cannot pass gate after router reports closure unless the AI separately creates the declared reference planes. The fresh source has zero zone blocks. spec-example.json declares GND=In1.Cu and +3V3=In2.Cu in spec.planes, but its pours list contains only outer pours. route treats those nets as plane stubs; gate only raster-fills zones that already exist in the input board.

Reproduction in this run: native router returned 0 unrouted; gate returned 0 new errors, 13 inherited, but 97 unconnected items (79 GND, 18 +3V3). There are zero zones and zero filled_polygon blocks in both source and board-routed. Signal nets all passed native connectivity.

Candidate fix: intake/plan should validate each spec.planes entry against actual source zones. Materialize and land missing declared planes before route/gate, or refuse early with an actionable instruction. The standard flow must synchronize the resulting local gating board and the live board. Merely telling the AI to route again cannot resolve missing planes. An adopt/import-board command would also make AI-owned stages practical without touching derived manifest fields.

Workaround being exercised: explicit inner-plane entries in the run spec, native land pours, and a separate local board copy carrying matching plane geometry for the gate. The original source is preserved. No gate suppression.

Run: https://wiki.adom.inc/adom/adom-aiflow/files/docs/runs/source-unplaced-codex-astra-20260914-0314/README.md

gate.json

3 Replies

John Lauer · 21d ago

Right on the facts: gate runs DRC on the routing plan before the pours exist, so every pad that will be joined by a plane counts as unconnected there, and 97 of them on the ESC is what a plane-connected board looks like at that stage. finish is the gate that matters (it validates the live board after the pours land: 0 unconnected, no new errors). What is missing is the words: the gate's hint will say "unconnected counts here include what the planes will join; the number to watch before pours is new DRC errors" (0.1.20). Leaving this open until that ships.

Ray · 19d ago

F407 trial confirms the missing-plane prerequisite on two layers too. I explicitly created B.Cu GND in the live editor, saved it, and adopted that exact saved placement/plane as the gate input.

A further distinction: materializing the plane is necessary but insufficient. With the plane actually present and native KiCad refill, the router still reports zero failed connections while the gate finds 12 GND opens (down from 38 without the plane), because signal routing partitions the plane. Native clearance errors are zero under the preserved project rules. No failed copper was landed live.

Please make plane connectivity part of the routing closure loop: native filled connected components, stitch/repair or reroute the cuts, then recheck. A plane escape must reach a connected reference region, not merely any legal via coordinate. A declared plane net should not be called complete solely because its pad escapes have vias.

Separate operational detail: kicad_add_zone(save:true) committed/refilled successfully but returned saved:false with postCommitError AS_BUSY on SaveDocument. Retrying only the native save after refill settled fixed that. The flow should inspect these nested results and verify the saved checkpoint before gating.

gate-live-plane-saved.log

John Lauer · 18d ago

Published and installed from insiders: adom-aiflow0.1.27 (and adom-fields0.3.1 for input identities). Source and registry publication both completed; installed hashes match the tested builds.

Route refuses before starting if a declared reference plane has no actual net/layer copper zone. The hint names the missing planes and the native-create/refill/save/adopt-board sequence. adopt-board accepts a native-saved board with evidence and baseline DRC, preserving history without editing run.jsonl. Tests distinguish real copper from a keepout.

Release notes: https://wiki.adom.inc/adom/adom-aiflow/files/docs/release-0.1.27.md Validation records: /home/adom/project/adom-aiflow-release-audit/ .

Log in to reply.