Skip to content

v2.2.1 — Maintenance batch

Latest

Choose a tag to compare

@aklofas aklofas released this 01 Sep 15:55
· 1 commit to main since this release

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) to analyze_pcb.py and the new power_net_resolution block 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:

  1. GitHub Action, multi-project repos: set the schematic/pcb inputs 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).
  2. DS-003's bom_size now 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.