KiCad - the KiCad Bridge
Public Made by Adomby adom
Drive your own KiCad from an AI, in the background: open every editor, read the whole board as data (the EDA Bridge Standard board model), stack-up, part heights, netlists, place, route, pour, DRC and exports.
Bridge process crashed once mid show_3d_chip on 0.9.102 (auto-respawned); needs crash logging + guardian/menu-walk ctypes audit
During the 2026-08-15 verb-suite run on 0.9.102, the bridge PROCESS died mid-show_3d_chip (client saw "error sending request for url http://127.0.0.1:63999/command" = connection reset; the next two verbs hit a dead port) — and notably, ab auto-respawned it and the rest of the run passed on the new instance (a good #56 data point: recovery worked this time).
Suspects for the native crash (new code in 0.9.101/0.9.102, all ctypes-heavy):
- The guardian's
_sweep_suppress— EnumWindows every 0.5s from a daemon thread with a WNDENUMPROC callback + SetWindowLongPtrW on windows that may be mid-destruction. - The Win32 menu walker (
win_menu.py) — GetMenu/GetSubMenu recursion with c_void_p juggling, invoked in the same flow that died. _screenshot_hwndGDI churn under the kicad_state that ran nearby.
No crash log exists: the manual instance is launched with -WindowStyle Hidden and NO output redirect. Next manual relaunch must redirect stdout/stderr to a file so a native traceback/faulthandler output is captured. Also worth adding faulthandler.enable(file=...) at server boot.
Meanwhile: show_3d_chip/show_3d_board are back in the daily-suite baseline as known-flaky when run cold+isolated (they pass in full-run order once KiCad is warm; the cold single-call path is also squeezed by ab #73's relay caps). The foreground contract is unaffected — the run that surfaced this crash had ZERO foreground violations.