Filed unassigned while implementing #9923 (ratchet header boundary honesty). Out of that card's scope, which was ruled to be header wording about the published skills/ root and explicitly not a coverage extension.
Measured
scripts/pm/check-skill-line-ratchet.mjsCEILINGS on origin/main at merge base 5989b0de9 covers 18 files. Root AGENTS.md is covered at 958 lines. Root CLAUDE.md is not covered, at 86 lines.
Why the two look alike
Both are repo-root agent instruction files, both are read by every seat session, both are governed surfaces under Prime Directive #14. The reasoning that added the AGENTS.md ceiling — largest, most-read, most-binding instruction file with no ceiling — applies to CLAUDE.md in kind, differing only in degree.
CLAUDE.md is also structurally growth-prone in a way the ratchet is built for: it exists to inline the rules that must never be missed, so every new must-never-miss rule is an argument for appending to it. It currently inlines four.
The honest counter-argument
At 86 lines it is small, and its own framing caps it: it is an excerpt of AGENTS.md, not an independent surface. A ceiling on it may be a control with nothing to control.
The card this was found on now makes the fact visible either way — the ratchet's header states that CLAUDE.md, .claude/hooks/ and .claude/settings.json carry no ceiling, so absence reads as a fact to check rather than an oversight to infer. This card is only about whether the fact should change.
Decision needed, not an implementation
Adding a CEILINGS row is a one-line change; whether it should exist is a policy question of exactly the kind #9923 was ruled on. Note the sibling repo objectui has its own CLAUDE.md and AGENTS.md, neither reachable from this ratchet at all, so a maintainer may prefer to answer the root-instruction-file question once rather than per file.
Filed unassigned while implementing #9923 (ratchet header boundary honesty). Out of that card's scope, which was ruled to be header wording about the published
skills/root and explicitly not a coverage extension.Measured
scripts/pm/check-skill-line-ratchet.mjsCEILINGSonorigin/mainat merge base5989b0de9covers 18 files. RootAGENTS.mdis covered at 958 lines. RootCLAUDE.mdis not covered, at 86 lines.Why the two look alike
Both are repo-root agent instruction files, both are read by every seat session, both are governed surfaces under Prime Directive #14. The reasoning that added the
AGENTS.mdceiling — largest, most-read, most-binding instruction file with no ceiling — applies toCLAUDE.mdin kind, differing only in degree.CLAUDE.mdis also structurally growth-prone in a way the ratchet is built for: it exists to inline the rules that must never be missed, so every new must-never-miss rule is an argument for appending to it. It currently inlines four.The honest counter-argument
At 86 lines it is small, and its own framing caps it: it is an excerpt of
AGENTS.md, not an independent surface. A ceiling on it may be a control with nothing to control.The card this was found on now makes the fact visible either way — the ratchet's header states that
CLAUDE.md,.claude/hooks/and.claude/settings.jsoncarry no ceiling, so absence reads as a fact to check rather than an oversight to infer. This card is only about whether the fact should change.Decision needed, not an implementation
Adding a
CEILINGSrow is a one-line change; whether it should exist is a policy question of exactly the kind #9923 was ruled on. Note the sibling repoobjectuihas its ownCLAUDE.mdandAGENTS.md, neither reachable from this ratchet at all, so a maintainer may prefer to answer the root-instruction-file question once rather than per file.