Twenty-five verified fixes, no new subsystems — nearly all of them traceable to someone who took the time to file a precise report.
Field-reported false positives, killed at the root:
- #39 / #40 (Curtis Galloway) — GP-001 no longer reads every ordinary via's antipad as a return-path hole, and schematic-declared power rails now reach the PCB net classifier, so
P1_VBUS-style per-port rails stop masquerading as signals. Pass--schematic analysis/schematic.json(or--power-rails) toanalyze_pcb.pyand the newpower_net_resolutionblock shows exactly what was resolved and how. - #41 (danielboston38, contributed fix) — no-connect markers no longer absorb pins into wires passing mid-span beneath them, verified against
kicad-cli's netlist as ground truth. The corpus run showed it mattered: one board had eight I2C pairs falsely shorted. - #33 (William Leismer) — ICs whose description mentions an internal oscillator no longer trigger false active-oscillator / clock-distribution findings.
- #31 (Erik Norfelt) — BE-001 measures board-edge distance to a rectangle's four sides, not its diagonal.
Determinism: a hash-order audit fixed ~26 sites where findings could differ byte-for-byte between identical runs, and CI now runs every analyzer twice with an unpinned hash seed so the class stays dead.
Honest observability: analysis that can't run now says so — cross-analysis reports a per-check checks_run manifest, connectivity-graph failures surface as a visible note, conditional .kicad_dru rules are skipped-and-counted instead of misapplied board-wide, and files newer than the tested KiCad format get a best-effort flag. Also: NR-001 fires for the first time ever (it read a key the producer never emitted), lifecycle findings carry real provenance (validated against live distributor APIs), and JSONC configs with URLs no longer silently lose suppression layers.
Upgrading — two things to check:
- GitHub Action, multi-project repos: set the
schematic/pcbinputs explicitly. Auto-detection now fails loudly with a candidate list instead of silently picking an arbitrary project (single-project repos and PCB-only invocations are unaffected). DS-003'sbom_sizenow counts unique BOM lines rather than components.
Full details in the CHANGELOG and release-notes.md. Validated with a full corpus regression gate over the entire release range (170,014 units, zero downgrades) plus per-analyzer determinism checks and live-API lifecycle validation.
Thanks to Erik Norfelt, William Leismer, Curtis Galloway, and danielboston38.