Files
zernie 85c54e7e78 fix(lint)!: make the lint report complete, tierable and machine-readable (#187)
Closes #181, closes #182, closes #183, closes #184, closes #185, and the
residual half of #173.

#185 — every per-surface check read ONE root, so a monorepo with `skills/` plus
`plugins/*/skills/` scored only the first: 4 skills over budget, 2 reported,
exit 0. The default now NAMES the bundles it did not score; `--bundles=all`
scores them in one pass with one exit code. Root-only stays the default so a
vendored third-party corpus is not scored as if it were yours.

#181 — `orphan-docs` had a documented severity nothing read, and the
duplicate-rules check had no id at all, so neither could be tiered. Both are
real rules now and the exit code respects their severity.

#183 — the log and `--json` disagreed (21 lines against 88 findings) because
some checks print per finding and others per group. One computed total, printed
and carried in `--json`.

#182 — `--json-out=<file>` writes the JSON while stdout stays human-readable,
so a CI job stops scanning twice.

#184 — `vigiles test` resolves a harness's bare `vigiles` import from the CLI's
own install, so `npx vigiles@<version> test` needs nothing in the project.
NODE_PATH was measured, not assumed: Node ignores it for ESM.

#173 residual — `lint` verified the integrity HASH, which says nothing about
whether the things a file NAMES still exist, so an artifact committed while its
refs were live stayed green after the target was deleted. The new `spec-refs`
rule re-derives them. It immediately found four dead references in this repo's
own `examples/CLAUDE.md.spec.ts`, left behind by the hexagonal refactor.

BREAKING CHANGE: `orphan-docs` and `duplicate-rules` now default to "warn" — a
repo relying on either to fail CI must set "error" explicitly. Registering them
surfaced that both are heuristic proxies, and this repo's calibration rule is
that a heuristic never defaults to error.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 19:51:21 +05:00
..