Rust KiCad version compatibility policy

Status: accepted at commit 8bb9755. This document defines the compatibility evidence that must exist before the Rust-port plan exits. It does not turn the current evidence-collection row into a broad support promise.

Compatibility unit

A compatibility claim names an exact KiCad release, such as 10.0.5, rather than only a major version. The row also records each observed file-format identifier independently for PCB, footprint, schematic, symbol-library, project JSON, worksheet, and exported netlist inputs. A file's authored version is format evidence; generator_version is provenance and must not be used as a substitute.

Each promoted family has separate cells for parse/read, exact or semantic round trip, mutation/writeback, plotter/render output, and applicable kicad-cli acceptance. A passing parser cell does not imply that the writer, plotter, or CLI cell passes. Every cell links to a Rack case or a durable fixture manifest. Missing and not-applicable cells are explicit.

Current release matrix

KiCad release Channel Observed format identifiers Current evidence Disposition
10.0.5 stable Per-family inventory is required from the repository-local corpus before plan exit; no dates are inferred from the release number. Windows kicad-cli version reports 10.0.5. Existing PCB save/upgrade and render-cache oracle lanes provide operation evidence, but do not yet constitute the complete per-family release matrix. Evidence collecting; not yet a complete support claim.
next selected nightly nightly, opt-in No build selected. No nightly lane is active. Advisory only.

Stable-release gate

Before plan exit, the kicad-version-compatibility step must replace every inventory placeholder for each claimed stable release with the exact release/build identity, all encountered format identifiers, the hashed fixture or corpus manifest, and the Rack evidence for every promoted operation. Unknown newer forms must still demonstrate source preservation; they are not silently promoted to typed support. Failures remain scoped to their family and operation instead of invalidating unrelated cells.

Nightly observation policy

A nightly lane is added only when an upstream format change is known to be staged or when a concrete consumer requires early validation. It pins the full build string, upstream Git revision when available, capture date, and fixture hashes. Nightly failures are visible and actionable but advisory; nightly success never expands the stable compatibility claim. When the change ships, its evidence is recaptured under the exact stable release and only then may it enter an authoritative row.

Source pins and dependency versions

Upstream source revisions used to answer semantic questions are recorded beside the affected design or oracle and are distinct from the installed release row. Rust dependency versions, including HarfRust, ttf-parser, and Skrifa, are lockfile and dependency-review evidence; they likewise do not stand in for a KiCad release claim.