docs(catalog): count prompt-hook entries on the badge-less hooks axis

The counting rule said "hook COMMAND entries". It was calibrated against
plugins that predate prompt-hooks, so it was never a ruling on them. A prompt
entry fires on the same event and does the same job, so it counts.

Re-measured every pinned ref before rewriting the rule, since restating an old
measurement in new words is itself a claim: every plugin that badges hooks and
ships a hooks.json has entries equal to command-entries, so the two phrasings
agree across the whole badged set. okr is the only plugin with a non-command
entry, and it does not badge the axis.

Also records which plugins badge the agents axis and which two do not, so a
future session does not treat an unmeasured number as gated or a gated one as
unmeasured.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141o7P9gFCDxURKyc2cW7mc
This commit is contained in:
Kjell Tore Guttormsen 2026-08-13 20:29:46 +02:00
commit e17229fb78

View file

@ -82,11 +82,26 @@ their own Forgejo repositories under `https://git.fromaitochitta.com/open/`.
number; fix the catalog to match it.
- **Counting rules for a badge-less axis (calibrated against the badged plugins, 2026-08-02).** When
the catalog must count an axis itself, count it the way the badges do, or the numbers stop being
comparable across plugin blocks: **hooks = hook COMMAND entries** in `hooks/hooks.json` (not
events, not matchers — the three diverge, and `commands` is what matched the badge on all 6 badged
plugins), and **tests = ` tests` from `node --test`**, not ` pass` (config-audit's badge 1398 is
its `tests` count; `pass` was 1375). Measure in an extraction of the tag
(`git archive <ref> | tar -x -C <tmp>`), never the sibling working tree.
comparable across plugin blocks: **hooks = hook ENTRIES** in `hooks/hooks.json` (not events, not
matchers — the three diverge), and **tests = ` tests` from `node --test`**, not ` pass`
(config-audit's badge 1398 is its `tests` count; `pass` was 1375). Measure in an extraction of the
tag (`git archive <ref> | tar -x -C <tmp>`), never the sibling working tree.
- **`type: prompt` entries COUNT (decided 2026-08-13).** The rule read "hook COMMAND entries" until
now. That wording was calibrated in 2026-08 against plugins that predate prompt-hooks, so it was
never a ruling on them — it had no case to rule on. A prompt entry fires on the same event and
does the same job from the reader's side, so excluding it would understate the plugin.
**Re-measured 2026-08-13 at all 12 pinned refs before the rewrite**, because restating an old
measurement in new words is itself a claim: every plugin that both badges `hooks` and ships a
`hooks.json` has entries == command-entries (llm-security 9/9, config-audit 4/4, linkedin-studio
9/9, ai-psychosis 4/4, repo-mailbox 1/1), so the two phrasings agree on the whole badged set and
the rewrite contradicts nothing. `okr` @ `v1.10.0` is the **only** plugin with a non-command
entry — 3 entries, 2 `command` + 1 `prompt` (`PreCompact`) — and it does **not** badge the axis,
which is precisely why the badged set never tested the rule. The catalog's `3 hooks` stands, measured.
- **The `agents` axis IS badge-covered — 4 of the 6 plugins that claim it (measured 2026-08-13).**
`llm-security` `agents-6`, `config-audit` `agents-7`, `ms-ai-architect` `agents-12`,
`linkedin-studio` `agents-20`; all four match the catalog exactly and are gated. Ungated:
`voyage` (`24 agents`) and `okr` (`7 agents`) — badge-less, so those two numbers are unverified
until measured at their refs. Do **not** record this axis as uncalibrated: it has a referent.
- **The stat mirror reads the plugin README AT THE PINNED `ref`, never the sibling working tree.**
The catalog documents what *installs*, and that is the tag. A plugin that commits past its tag
without bumping its version — measured 2026-08-02 on both llm-security (scanners 23→22, tests