Skip to content

v0.8.0 — Incremental parse cache + pre-push quality-score hook

Choose a tag to compare

@einvoice-dev1 einvoice-dev1 released this 23 Jul 13:26
· 11 commits to main since this release

Faster on real repos

Profiling on nestjs/nest (~1700 TS files) showed archsteer check taking 2.9–7s per run — too slow for something meant to run on every git push. The bottleneck was re-parsing every file on every invocation regardless of what actually changed.

build_model now caches each file's extracted component keyed by a content hash in .archsteer/parse_cache.json (gitignored, machine-local). Unchanged files reuse their cached result; only changed files get re-parsed and re-scanned. Cross-file edge resolution still runs over the full component set every time, since a file's imports can resolve differently when other files change. Measured on nestjs/nest: 2.9s cold → ~1.0s warm, whether nothing changed or a single file did. The remaining ~1s is fixed CLI/interpreter startup overhead this change doesn't touch.

Quality score before every push

archsteer check now prints a one-line readout — conformance %, delta since the last snapshot, and net-new violation count — every time it runs, not just on failure.

New archsteer install-hooks wires check into a local git pre-push hook: same non-blocking-on-existing-debt ratchet already used in CI (blocks only NET-NEW error violations), just earlier feedback than waiting for CI. Won't clobber a hook it didn't write without --force; --uninstall removes it cleanly. Already on husky/pre-commit/lefthook? The README now shows wiring archsteer check into those instead.

Also fixes a dead README reference to a hooks/pre-commit file that didn't actually exist in the repo.

Full diff: v0.7.0...v0.8.0