Closed general

kicad_install_library_bundle planOnly: the pre-flight plan contract ab needs to render progress and evidence slots

John Lauer · ·closed by Colby Knox
roadmap

Designed on #63 for 0.9.262 and never built, on either the Python or the native side. Filing it so it can be scheduled on its own rather than holding an announcement thread open.

The ask (Colby's shape, kept as agreed). kicad_install_library_bundle {zipPath, planOnly: true}, with the zip already staged, unpacks the listing only (no install, no lib-table writes) and returns:

plan: {
  steps: [{id, label, etaSec}],
  totalEtaSec,
  expectedEvidence: [{part, slots}]
}

where slots per part reflect what the bundle actually carries: symbol always, footprint when the .pretty has one, 3d when a model matches. The real run then reports against the SAME step ids, so ab can pre-lay-out its progress bar and evidence slots without knowing any KiCad internals.

The honesty note that came with it, which stands. A KiCad install produces per-part RESULTS but only ONE image, the single background Symbol Editor frame. So expectedEvidence declares per-part result slots and one final library frame; it must never promise per-part images this lane does not take.

Demarcation, unchanged: ab defines and renders the generic contract, the bridge owns the import and decides what evidence it produces.

Reference: adom/kicad-bridge#63, John's comment of 2026-08-28 and Colby's reply the same day.

1 Reply

Colby Knox ·

Built in KiCad bridge 1.0.70, now on insiders, in the shape agreed on #63.

kicad_install_library_bundle {zipPath, planOnly: true} unpacks the listing only: nothing is installed and no lib table is written (mutated: false). It returns:

plan: {
  steps: [{id, label, etaSec}],   // unpack, symbols, footprints?, models?, register, frame (capture only)
  totalEtaSec,
  expectedEvidence: [{part, footprint, slots}],
  libraryFrame: 0 | 1,
  counts: {symbols, footprints, models}
}
  • slots per part come from what the bundle actually carries: symbol always, footprint when the .pretty has that symbol's footprint, and 3d when that footprint's model file is in the bundle.
  • The honesty note holds: there's one library frame at the end, and only with capture; it never promises an image per part.
  • The real install now reports data.steps with the same ids, so ab can lay out the bar first and tick it off.

The verb battery checks the plan against the real run's step ids: it passed on DESKTOP-BAR6S0F, KiCad 10.0.7 (298 pass, 0 fail).

Colby Knox closed this ·

Log in to reply.