docs(adr): correct the records the branch left describing deleted things
Seven ADRs described code that no longer exists or behaviour the gates do
not have. Where the wrong text came from main it carries a dated
correction; where this branch introduced it, it is fixed in place, because
main never published it and there is no record to preserve.
Fixed in place, branch-introduced:
- ADR-0021's 2026-09-14 correction asserted apm audit --ci "was never a
drift gate at all". It is one: it replays the install and diffs. The
claim contradicted this branch's own AGENTS.md and gates.md.
- ADR-0015 said unconditionally that no pre-push hook needs the network.
The guarantee holds only once apm install has populated apm_modules/.
- ADR-0014's 2026-09-16 correction said restoring .pre-commit-hooks.yaml
would ship a hook that fails for every consumer, because their checkout
has no lib-boundary-resolver.sh. pre-commit clones the whole hook repo
and skill-size-check.sh resolves the library from BASH_SOURCE, so the
hook would work.
- ADR-0019's "twelve hooks pass under unshare -rn" matched neither HEAD
(8) nor main (14), and stated the offline guarantee unconditionally.
Corrected, inherited from main:
- ADR-0022 and ADR-0013 named skill-frontmatter's pre-commit hook as the
enforcer of mandatory metadata.version. That hook was deleted on this
branch; the check lives in skill-size-check.sh.
- ADR-0022 enumerated the tip rule's carve-outs as a closed list and
described a single merge-base. The gate also exempts a tree-identical
skill and intersects every base from merge-base --all, and emits a third
failure form. 8cfd54f said the documented behaviour did not change; it
did. The gate is correct and is unchanged -- the record was not.
- ADR-0020's Decision still routed description overflow to README.md, its
ADR-0025 amendment pointed the mirrored constants at validate.sh, which
holds none, and its Enforcement table still named the two deleted
validate.sh paths.
- ADR-0015's Status claimed every plugin's plugin.json is pack output;
none exist.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NwD8Egs5r4ndqeFLmhusX2
This commit is contained in:
@@ -103,17 +103,20 @@ output against `apm.yml`, so their entire job is to propagate whatever the descr
|
||||
those four files byte-for-byte and confirm they match. The `wiki` claim passed every one of the fourteen pre-push hooks, every day it
|
||||
was published.
|
||||
|
||||
**Correction (2026-09-14): that gate list is down to one, and it was never two.**
|
||||
**Correction (2026-09-14): that gate list is down to two.**
|
||||
`scripts/sync-plugin-content.sh --check --all` does not exist — `718c79a` deleted the script and its
|
||||
`check-plugin-content-sync` hook with the flat mirror (ADR-0024). Of the two names left,
|
||||
`apm audit --ci` was never a drift gate at all: against this repo it checks only that each `apm.yml`
|
||||
parses and that a manifest declaring dependencies has a consistent `apm.lock.yaml`, and it reads no
|
||||
`description`. So the sole surviving gate that compares compiled output against `apm.yml` is
|
||||
`check-plugin-content-sync` hook with the flat mirror (ADR-0024). The other two survive.
|
||||
`apm audit --ci` at the repo root (apm 0.28.0) runs ten checks — `lockfile-exists`,
|
||||
`ref-consistency`, `deployment-ledger-owners`, `deployed-files-present`, `no-orphaned-packages`,
|
||||
`skill-subset-consistency`, `config-consistency`, `content-integrity`, `includes-consent` and
|
||||
`drift` — and it *is* a drift gate: `drift` and `config-consistency` replay the install and diff the
|
||||
result against the working tree, and `content-integrity` scans for hidden Unicode and hash drift.
|
||||
(In a sub-package such as `plugins/lint` it runs one check, `lockfile-exists`.) The second is
|
||||
`apm pack --check-versions --check-clean --dry-run`, run by the `apm-pack-check-clean` pre-push hook
|
||||
— and with the per-plugin manifests gone it propagates a description into exactly one file,
|
||||
`.claude-plugin/marketplace.json`, not four. This narrows the mechanism and changes nothing about
|
||||
the finding: propagation is still not verification, and nothing anywhere reads the `description`
|
||||
key for sense.
|
||||
the finding: both gates compare bytes, neither reads the `description` key for sense, so propagation
|
||||
is still not verification.
|
||||
|
||||
**And the obligation is unbounded.** Under enumeration, adding one skill to `bin`, `git` or `gitea`
|
||||
means editing two copies of a prose string on top of the version bumps and regeneration any skill
|
||||
|
||||
Reference in New Issue
Block a user