v2.13.0 — per-package baseline caching + cross-package S7 contracts
Two diff-aware / ecosystem features, each built TDD-first and hardened by a pre-merge adversarial review. 41 commands (no surface change — both add flags/families, no new command).
Highlights
Diff-aware per-package baseline caching (--changed) — r:check/r:test/r:lint --changed now cache the merge-base baseline per package under ~/.rforge/baseline-cache/. A repeat run with an unchanged merge-base reuses each already-baselined package and re-runs only the uncached ones — so an ecosystem cascade where the changed-package set grows reuses prior work. Self-invalidating, LRU-20, new --no-cache flag + python3 -m lib.changed --clear-cache.
Cross-package S7 contracts (r:s7-review --eco) — a new ecosystem-only cross-package-contract family. Builds an ecosystem S7 class registry, then flags a method dispatching on a sibling package's class that's undeclared (cross_package_undeclared_contract) or declared-but-unexported (cross_package_unexported_class). The static, ecosystem-scoped sibling of v2.12.0's method_undeclared_dependency — catches the break before anything is installed. Re-export-aware, conservative.
Quality
Both features hardened by adversarial review before merge — reviews caught BLOCKERs the green gates missed (unresolvable-HOME crash; =-assigned classes invisible to the registry; re-export false positive; multi-line export() mis-parse), all fixed + re-verified. pytest 416, test-all 42/42.
Full changelog: v2.12.0...v2.13.0