← Commit history

ESC demo page: placement round, Fable's take and numbers, Astra pending

John Lauer ·9b083dc8a9 ·24d ago ·parent 5fab865
2 files changed +46
README.md+1
@@ -51,6 +51,7 @@ How the dock card, the dashboard and this demo fit together: [docs/dashboard.md] | [Dashboard](docs/dashboard.md) | The dock card, the dashboard and how the demo fits in. | | [How the bridge compares](docs/comparison.md) | Feature matrix against every notable KiCad MCP server and AI tool, with the gaps on both sides. | | [The Rust port plan](docs/rust-port-plan.md) | One dependency-free binary: what moves to KiCad's API, what ab already does, what PowerShell goes away, phases and risks. |+| [The ESC G431 demo: placement and routing by three engines](docs/esc-demo.md) | A real public Adom board placed and routed from scratch by Claude Fable 5.1, GPT-6 Astra and Freerouting through the bridge, with real times, result quality, tokens, dollars and agent counts per engine. | | [Your wiki page as a KiCad PCM repository](docs/pcm.md) | The page serves `repository.json`, `packages.json` and the zips anonymously, so it is a Plugin and Content Manager repository as-is: the sample library package, the packer, adding the repository in KiCad or with `kicad_pcm_add_repository`, and updates through PCM's Update button or `kicad_pcm_install {update:true}`. |  ## Live routing (from 0.9.340)
docs/esc-demo.mdadded+45
@@ -0,0 +1,45 @@+# The ESC G431 demo: placement and routing by three engines++A real Adom board, placed and routed from scratch by AI through the KiCad Bridge, on camera, with the numbers that matter next to each engine: real time, result quality, tokens, dollars, agents.++The board is [ESC G431](https://wiki.adom.inc/adom/esc-g431), Caleb's single-motor drone ESC: STM32G431, DRV8300 gate driver, six BSC016N06NS MOSFETs in a 3-phase bridge, TPSM365 buck, INA181 current sense, 64 x 74 mm, 4 layers, 149 parts, 365 pads, 59 routable nets. It is public with its KiCad sources, which is why it was chosen over the private boards.++## Round 1: placement++The fixture is a copy of the board with everything removed except the Edge.Cuts outline and the 149 footprints, which are parked in a grid to the right of the outline: no tracks, no vias, no zones, no board-level graphics or text (the labels and logo that describe the human layout are gone too). It is public: [esc-g431-unplaced.kicad_pcb](https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/demo/placement/clean/esc-g431-unplaced.kicad_pcb), built by [tools/make_placement_fixture.py](https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/tools/make_placement_fixture.py) with `--strip-zones --strip-graphics`.++The engines place through three verbs shipped in bridge 1.0.3: `kicad_placement_state` (every footprint's pose, courtyard box and pad nets, the nets and the refs they touch, the outline, a ratsnest length), `kicad_move_footprint` (a batch of moves as one native undo step, refused on courtyard overlap or outside the outline, verified by the read-back courtyard), and `kicad_placement_validate`.++### Claude Fable 5.1++Done 2026-09-12 on arav-rog (KiCad 10.0.3). Fable wrote a planner from the netlist: the six MOSFETs in one column on the right edge with high side above low side per phase, the gate driver beside the bridge, the MCU left of the driver with its decoupling ring and the crystal under it, the bulk capacitors and the TVS on the +VBAT rail above the bridge, the shunt in the low-side return with the INA at it, the buck top-left, the debug header and reset button on the left edge, the machine contacts and machine pins along the edges; every two-pad part attached to the multi-pin part it shares the most nets with and placed in expanding rings around the pin it connects to, on the bridge's own courtyard boxes, never overlapping, never outside. The plan: [fable-esc-placement-plan.json](https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/demo/placement/fable/esc-placement-plan.json), preview [plan-preview.png](https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/demo/placement/fable/plan-preview.png), planner [plan_placement.py](https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/demo/placement/fable/plan_placement.py), executor [place_live.py](https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/demo/placement/fable/place_live.py).++| Measure | Claude Fable 5.1 |+|---|---|+| Planning, first read of the board to a dry-run-clean plan | 26 min wall (18:36 to 19:02 UTC), one thread |+| Placement on the board | 149 parts in 25 commits, 36.5 s wall, every commit verified |+| Result | 0 courtyard overlaps, 0 outside the outline, 0 parked, ratsnest 1950 mm (the human layout measures 1645 mm on the same MST metric) |+| Placement DRC | 13 errors, all inherited from the source libraries (six malformed MOSFET courtyards, seven U2 pad clearances), zero from the placement |+| Tokens, the placement thread | 173,781 output, 267,816 cache write, 79,103,302 cache read, 3,254 input over 124 turns |+| Dollars at API list price, the thread | $31.85 (Fable 5.1: $10 in, $50 out, $0.25 cache read, $12.50 cache write per MTok, claude.com/pricing 2026-09-12), 16% of a $200/month plan |+| Agents | 2 engineering agents ran during the window building and then fixing the placement verbs (bridge development, not placement); with them, 345,148 output tokens and $65.84, 33% of the plan |++Evidence: [fable-place-log.json](https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/demo/placement/fable/fable-place-log.json) (every reply with timestamps), [fable-stats.json](https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/demo/placement/fable/fable-stats.json).++What the run taught the bridge: KiCad's API replaces a footprint on update rather than moving it, and deserialises its pads at the absolute coordinates the proto carries, so the first take moved only the anchors. The bridge now transforms every child of the footprint proto client-side and verifies the read-back courtyard, not the anchor.++### GPT-6 Astra in Codex++PENDING. The prompt Astra runs is [esc-placement-astra-prompt.md](https://wiki.adom.inc/api/pages/adom/kicad-bridge/files/docs/esc-placement-astra-prompt.md); it reports the same measures in a show-and-tell issue on this page.++### The placement video++PENDING: both takes cut to the action, narrated, with the closing chart.++## Round 2: routing++PENDING: the placed board (Fable's placement, then Astra's) routed by Freerouting, Claude Fable 5.1 and GPT-6 Astra, with the same chart.++## How the recording is made without disturbing anyone++Every operation runs in the background over KiCad's IPC API, menu commands and UI Automation; the user's mouse and focus are never touched. Recording on a user's box uses KiCad's fallback canvas and a window capture of the covered editor, which was verified on arav-rog with the editor behind the user's Hydrogen window. For these takes, on a test box that is ours, the editor is brought to the front once so the OpenGL canvas gives the best picture. The rules are in the gang-takes skill of the adom-video-post package.