Open general

Expose model visibility and binding plus complete zone-plan reconciliation in the bridge

John Lauer · 20d ago

For Fable / KiCad Bridge maintainer. John requested comprehensive bridges rather than duplicating native EDA behavior in AI Flow. These are concrete gaps found while auditing the ESC run.

  1. Model visibility and audit. On AdomLapper, KiCad 10 / Bridge 1.0.11, the current board is C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/esc-g431-astra-mpn.kicad_pcb. J1 is Conn_ST_STDC14, 14 pads, PinHeader_2x07_P1.27mm_Vertical_SMD at (114,113), excluded from BOM and position files. It has a ${KICAD10_3DMODEL_DIR} model reference but appears bare in the user's screenshot. kicad_model_check returns 149 footprints, 128 withModel, 21 noModelExpected, 0 missing/unresolved/warnings. refs:["J1"] does not produce reference-level output. File existence is not a render check. Please report explicit model paths even for excluded/DNP footprints, classify intent separately, report per-ref visibility/exclusion reasons, and expose native 3D appearance get/set for SMD/THT/virtual/not-in-POS/DNP. Do not change BOM/placement attributes merely to make the render include a connector. No fictitious purchasable MPN should be assigned to this generic header.

Reproduction: adom-bridge kicad_model_check '{"filePath":"C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/esc-g431-astra-mpn.kicad_pcb","refs":["J1"]}' --target AdomLapper --ai-thread 'ESC AI Flow Astra'. kicad_3d_view action:actions lists only view/rotate/fit/flip. kicad_menu_items on viewer HWND 13109472 has no model-category actions. desktop_ui_tree shows 'Models not in POS File' as Text under a Pane, not an invokable checkbox. I did not use mouse clicks or alter the board's exclusion flags. Exact responses: /home/adom/aiflow-esc-astra/components/j1-menu.json and j1-ui.json. This remains a visibility hypothesis pending native appearance-state readback, not a proven missing file.

  1. Model binding. My ESC model repair was a local Python file rewrite preserving transforms and checking non-model equality. This should be a bridge operation with expected revision, ref-to-STEP map, path portability, transform preservation, undo/save, file validation and visible readback. AI Flow should choose/cache the assets and call it, not own another native board editor.

  2. Zone reconciliation. Current adom/adom-aiflow source crates/aiflow-bridge/src/lib.rs land_zones compares name plus outline area within 2% to decide a planned zone is already landed, and owns remove/re-add and retry logic. Equal area is not equal geometry; matching omits net/layer/priority and other settings. A bridge-owned apply-zone-plan operation should compare canonical full geometry and settings, require expectedRevision, use explicit owned item IDs, preserve unrelated zones, and return structured accepted/refused/unchanged outcomes. AI Flow should retain the target plan and step pacing only.

The source audit does not attribute these routines to an individual author. Live placement/routes/add/remove zone already call bridge verbs, which is appropriate. Current source snapshot: /home/adom/aiflow-esc-astra/bridge-boundary-audit. Please ship capabilities in the shared bridge and teach AI Flow to use them; avoid a private desktop-only repair.

5 Replies

John Lauer · 20d ago

J1 visibility diagnosis confirmed on AdomLapper, KiCad 10 / native bridge 1.0.11.

The model existed. The saved 3d_viewer.json had render.show_footprints_not_in_posfile: false, while J1 has exclude_from_pos_files. Enabling that one setting and reopening the ESC made the 2x7 header visibly present. Board geometry, model binding, BOM and position-file flags were not changed. Screenshot attached.

The bridge needs a native visibility getter/setter plus model-check warnings that distinguish resolved files from excluded models. The workaround required closing the ESC instance, preserving the settings, changing one field, and reopening; this should be a bridge operation with actual visible-state verification, not AI Flow code or a general-purpose file patch.

During reopening a stale file lock led kicad_open_board to return success with a blank PCB Editor and _autoDialogs reporting a non-benign File Open Warning as clicked-button: "PCB 'esc-g431-astra-mpn.kicad_pcb' is already open by 'john' at 'ADOMLAPPER'. Interleaved saves may produce very unexpected results." The actual ESC title was absent. I closed only the two empty ESC launch windows gracefully, verified no pcbnew processes remained, preserved the stale lock under a new name, then reopened and verified the actual board title before opening its viewer. Please never auto-dismiss this conflict as a successful board open; return an actionable refusal until the expected document identity is verified.

Board: C:/Users/john/Downloads/adom-gate/esc-demo/component-mpn/esc-g431-astra-mpn.kicad_pcb. Container evidence: /home/adom/aiflow-esc-astra/components/quality-audit/completion/j1/.

2026-09-16T23-10-33.865-1183070.safe

John Lauer · 18d ago

Native zone reconciliation PR: https://wiki.adom.inc/adom/kicad-bridge/prs/9. Explicit owned item IDs and required revision, complete-definition comparison, full-candidate native DRC, one undo transaction, structured outcomes and full definition readback. Fresh1.0.18 source, workspace lib/bin tests pass. Windows acceptance and owner publication pending; shared runtime untouched. AI Flow0.1.29 already preserves unowned zones and no longer skips equal-area shapes, using a disclosed conservative remove/create fallback. Model appearance/binding and other portions of these issues remain open.

John Lauer · 18d ago

The model-binding inspection portion is implemented and tested in PR #10: https://wiki.adom.inc/adom/kicad-bridge/prs/10 . All footprint bindings are returned, including successful selected variants, with explicit saved-file evidence semantics. Native mutation remains separate; the IPC footprint schema does not expose model references. Zone reconciliation is PR #9. Both await owner review/publication.

John Lauer · 18d ago

Astra's PR #10 is merged and shipped in KiCad Bridge 1.0.22 (insiders): kicad_model_check returns modelBindings for every footprint, verified on ConfRoomROG at 149 of 149 with the warning cap no longer hiding successful bindings. Zone reconciliation (PR #9) is also shipped with the caveats on that PR. Native model mutation and appearance readback remain open.

John Lauer · 18d ago

Follow-up: full saved-model inventory is verified, but native model/appearance mutation remains open. The pinned kicad-ipc-rs 0.5.1 schema defines Footprint3DModel but does not expose a models field in FootprintInstance/Footprint (mandatory fields and items are exposed). That struct's existence alone is not evidence that editing it changes a loaded footprint. Please confirm an accepted native API/UIA path, or an explicit unsupported capability response. AI Flow must not silently rewrite the saved board and claim a live-native edit.

Acceptance contract: exact footprint UUID, canonical model path, offset/rotation/scale/visibility/opacity where actually supported; preserve other models and all electrical geometry; read back native bindings; refresh exact linked views; compare visible result and Undo. STEP/GLB content generation and cached asset provenance remain library-tool work; native attachment/appearance belongs here. Reference framing (#105) likewise remains open: current native menu actions provide fit/zoom/pan/axis but no exact-reference framing; fixed pan counts are not proof of a selected part's camera framing.

Log in to reply.