refactor(gates): source the boundary resolver into skill-size-check
Why: scripts/skill-size-check.sh embedded a byte-identical 1,061-line copy
of the ADR-0020 boundary resolver only because it was also exported
through .pre-commit-hooks.yaml, whose consumers could not reach a file
inside the plugin. 4de5b6b retired that export, so the hook now runs only
in this repo and can source factory-audit's lib-boundary-resolver.sh like
validate.sh does. One copy removes the edit-one-paste-the-other hazard.
Implementation Notes:
- The hook's Python program is assembled from its own preamble, the
library's resolver and its own checks, read from quoted here-docs. The
assembled program matches the old one line for line except one comment,
and the hook's stdout, stderr and exit code are identical over every
corpus SKILL.md and the 26 differential-suite fixtures.
- The hook fails closed, naming the library, when it is missing or
defines no resolver.
- test-adr0020-contract.sh assertion 1 now pins the single copy: one
marker pair in the library, none in the hook, fail-closed on a missing
or gutted library, and a sentinel planted in a copied library that must
appear in the hook's output. 1a expects exactly one authority. 27 -> 29
passes.
- ADR-0020 and ADR-0025 carry dated amendments; gates.md and the
library, hook and mode-library comments no longer describe two copies.
- factory-audit is new on this branch, so the version-bump gate exempts
it; kyberforge is already at 2.0.0 against main's 1.6.2.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -27,6 +27,14 @@ applies the body tiers on the skill path only. The two copies must still stay by
|
||||
plugin script cannot source the root one, which is why a second copy exists at all. Read every
|
||||
"three" below as the count at the time of writing.
|
||||
|
||||
**Amended again (2026-09-16): one copy.** `scripts/skill-size-check.sh` no longer embeds the
|
||||
resolver. It sources `factory-audit/scripts/lib-boundary-resolver.sh` by path and fails closed if the
|
||||
library is missing or defines no resolver. The embedded copy had been kept only because the hook was
|
||||
also exported through `.pre-commit-hooks.yaml`, whose consumers could not reach a file inside the
|
||||
plugin; `4de5b6b` retired that export (ADR-0014), so the hook runs only inside this repo. The
|
||||
"byte-identical" sentence above is superseded: there is nothing left to keep identical, and
|
||||
`tests/test-adr0020-contract.sh` assertion 1 now pins the single copy instead of hashing a pair.
|
||||
|
||||
## Context
|
||||
|
||||
Every `file:line` citation in this ADR is against the base commit the decision was taken on,
|
||||
|
||||
Reference in New Issue
Block a user