Implemented in the 2026.7.16a0 alpha release candidate.
These requirements are the durable closeout record for the Plotter IR
contract and public issues #9, #10, #11, and #12. They replace the
transient working plan and review summary after plan closeout.
| ID | Requirement | Acceptance Evidence |
|---|---|---|
| IR-REQ-001 | Publish a machine-readable Plotter IR contract for downstream consumers. | docs/contracts/kicad_plotter_ir_a0.schema.json validates runtime IR examples, and docs/design/kicad-plotter-ir.html describes the contract. |
| IR-REQ-002 | Emit schema = "kicad.plotter_ir.a0" for new IR documents while accepting legacy kicad.plotter_ir.v1 inputs. |
KiCadPlotterDocument.from_dict() accepts both schema strings and emits a0 on serialization. |
| IR-REQ-003 | Allow non-geometric context metadata without breaking geometry consumers. | The schema and design doc allow optional document, record, and operation context objects, and SVG rendering ignores hyperlink context. |
| ISSUE-9-REQ-001 | Preserve KiCad schematic text href metadata through schematic IR. |
Linked text, labels, text boxes, symbol properties, sheet properties, sheet pins, and project schematic instance traversal preserve context.hyperlink.href. |
| ISSUE-10-REQ-001 | Keep KiCad preference setup profile-neutral in kicad_monkey. |
Preference setup merges supplied source JSON files, copies source theme files, logs source-derived settings, and no longer hard-codes Wavenumber defaults. |
| ISSUE-10-REQ-002 | Keep profile names and profile payloads outside the shared library. | Library helpers use neutral defaults, and callers provide explicit profile names when needed. |
| ISSUE-11-REQ-001 | Remove repeated per-component net-terminal scans from design JSON pin-count generation. | Design JSON builds one designator-to-pin-count index, counts unique pins, preserves case-sensitive and empty designator behavior, and returns zero for components without terminal records. |
| ISSUE-12-REQ-001 | Align release signoff with wn-dev-std 2026.7.16. |
L99 release signoff runs the configured dev-std audit scopes, and uv run dev-std audit . --scope docs.plans --format json passes during closeout. |
| REL-REQ-001 | Keep publishing separate from review approval. | The release candidate is versioned as 2026.7.16a0; no tag, GitHub release, PyPI upload, or publish workflow is run without explicit user authorization. |
| REL-REQ-002 | Exclude transient planning material from public source distributions. | docs/plans/** and docs/research/** remain excluded from sdist, and durable content is carried by ADR, requirements, design, contract, tests, changelog, and release notes. |
uv run pytest tests\L99_signoff\test_L99_001_release_signoff.py -quv run rack run L0uv run rack run L99uv run dev-std audit . --scope docs.plans --format jsontwine check for the alpha release candidate.
kicad_cruncher IR export remains deferred until a public
kicad_monkey release is published. The cruncher branch may
carry dev-std and release-signoff baseline wiring before that dependency
update.