main
Name Last commit message Last updated
source Independent end-to-end layout workflow and explicitly scoped Astra ESC source · John Lauer 23d ago
README.md Independent end-to-end layout workflow and explicitly scoped Astra ESC source · John Lauer 23d ago

Astra ESC: source, provenance and what is reusable

There are two separate historical experiments. Astra placement, issue 92 independently generated the movable-part placement from the common fixture and preserved the fixed contacts. Routing, issue 94 instead routed Fable's fixed placement. Combining those two results would NOT demonstrate an end-to-end Astra layout. The handoff is being corrected; no completed independent end-to-end result is claimed here.

The routing take reached 59/59 connected nets and zero new DRC errors, with 13 inherited library errors. It did not complete outer-layer power/thermal pours or establish a current/thermal rating. Its first fully connected video had blinking captions; AB issue 194 owns the shared product fix.

Code map

Source Language Responsibility Portability today
placement/place_plan.py Python Functional anchors, pin-relative component targets, courtyard-safe local placement search ESC-specific anchors, references and bounds
placement/plan.py Python Extract local pad/net data for placement Demo file/evidence paths
routing/geometry.py Python, Shapely Parse pad shapes and layer/net membership Useful geometry routines, incomplete general KiCad parser, hardcoded input
routing/planner.py Python, NumPy, Shapely Rasterize clearance obstacles, choose endpoints, compress paths ESC outline, grid, widths and layer assumptions
routing/search*.cpp C++ Fast grid path search with layer/via moves and costs Reusable algorithmic core; not a standalone general router
routing/component_search.py, soft_search2.py, soft_repair3.py Python Find disconnected copper groups, identify blocking paths, rip up and reroute Demo-specific globals and plane handling
routing/build_corrected.py, final-plan.json Python / JSON Build and replay the accepted route batches Specific geometry for Fable's placement; do not use for Astra's independent layout
routing/bridge.py Python Timestamped calls to Adom Bridge Fixed desktop and fixture path

The AI chooses electrical intent and writes/adapts the planner. C++ performs the geometric search. KiCad Bridge commits the supplied points as native undo steps and checks them with KiCad; it does not invent those points for this AI routing take. Replaying final-plan.json is not fresh planning.

Source is copied under source/ for inspection and reproducibility. Historical placement and routing inputs have different provenance. The routing source is a worked example, NOT an install-and-run router for arbitrary boards. Paths, reference names, net classes, layer roles, outline/grid, pad support and rules must be parameterized and validated on multiple unseen boards before making that claim. No power-pour optimizer is hidden inside it.

Use the end-to-end layout skill for the reusable process: preserve each engine's own placement, reserve power/thermal regions, route, pour/refill, measure actual connected copper and bottlenecks, reroute or move parts when necessary, and validate every stage. Improvements belong in the shared owning projects so all Adom users benefit.