Filed unassigned by the skills-seat dev that landed the scripts/pm small-fixes pack (session session_01RMTpSRF5CjMmQBFfPtPCwJ, PR #12096, branch claude/issue-11310-pm-scripts-fixes). Recording only.
The gap
.claude/skills/pm-dispatch/references/compile-surfaces.md has no row in the CEILINGS map of scripts/pm/check-skill-line-ratchet.mjs. After #11310 added the true-green.md row, it is the only remaining references file that is uncovered.
Found by enumerating the directory against the map rather than by noticing one file — every references/*.md checked in the same pass, on the PR's tree:
UNCOVERED .claude/skills/pm-dispatch/references/compile-surfaces.md
COVERED contract-review.md · decision-analysis.md · dispatch-runbook.md · landing-operations.md
COVERED platform-readings.md · release-aftercare.md · rest-channel.md · review-checklist.md
COVERED seat-post-protocol.md · state-machine.md · true-green.md
Why this is a gap and not the header's deliberate omission
The ratchet's header frames a file's absence from the map as a fact to check, not an oversight to infer — and it names exactly one deliberate omission: the publishedskills/ catalog, excluded because its cost curve is a customer-project read rather than the per-seat-session read the ratchet prices. compile-surfaces.md is on the other side of that line. It is a pm-dispatch references file, read on demand by seat sessions like every covered entry, and the reasoning #11310 recorded for true-green.md applies to it unchanged.
Remedy
One CEILINGS row at the file's landed line count, headroom 0, same convention as the sibling references entries — and per the convention #11310 followed, the count is read from the ratchet's own run, not wc (insert the row at a deliberately low ceiling, let the gate print compile-surfaces.md is N lines, then set N). Worth confirming in the same pass that the file carries no line over the 120-byte max-line rule; true-green.md did not, and a file that does needs the re-wrap before the row, not a raised ceiling.
Not fixed in PR #12096: that dispatch declared a one-row scope (true-green.md), and the precedent in this map is that a missing row is triaged and dispatched rather than added in passing — which is how #11310, #9473, #9923 and #9965 each landed.
Dedup-searched over open and closed ceiling-coverage cards (compile-surfaces, CEILINGS, line-ratchet coverage): #11310 covers true-green.md, #9473 the other four skills, #9923 the published catalog, #9965CLAUDE.md, #9792AGENTS.md. None covers this file.
Re-check
node -e "import('./scripts/pm/check-skill-line-ratchet.mjs').then(m=>console.log([...m.CEILINGS.keys()].some(k=>k.endsWith('references/compile-surfaces.md'))))"
Filed unassigned by the skills-seat dev that landed the
scripts/pmsmall-fixes pack (sessionsession_01RMTpSRF5CjMmQBFfPtPCwJ, PR #12096, branchclaude/issue-11310-pm-scripts-fixes). Recording only.The gap
.claude/skills/pm-dispatch/references/compile-surfaces.mdhas no row in theCEILINGSmap ofscripts/pm/check-skill-line-ratchet.mjs. After #11310 added thetrue-green.mdrow, it is the only remaining references file that is uncovered.Found by enumerating the directory against the map rather than by noticing one file — every
references/*.mdchecked in the same pass, on the PR's tree:Why this is a gap and not the header's deliberate omission
The ratchet's header frames a file's absence from the map as a fact to check, not an oversight to infer — and it names exactly one deliberate omission: the published
skills/catalog, excluded because its cost curve is a customer-project read rather than the per-seat-session read the ratchet prices.compile-surfaces.mdis on the other side of that line. It is a pm-dispatch references file, read on demand by seat sessions like every covered entry, and the reasoning #11310 recorded fortrue-green.mdapplies to it unchanged.Remedy
One
CEILINGSrow at the file's landed line count, headroom 0, same convention as the sibling references entries — and per the convention #11310 followed, the count is read from the ratchet's own run, notwc(insert the row at a deliberately low ceiling, let the gate printcompile-surfaces.md is N lines, then set N). Worth confirming in the same pass that the file carries no line over the 120-byte max-line rule;true-green.mddid not, and a file that does needs the re-wrap before the row, not a raised ceiling.Not fixed in PR #12096: that dispatch declared a one-row scope (
true-green.md), and the precedent in this map is that a missing row is triaged and dispatched rather than added in passing — which is how #11310, #9473, #9923 and #9965 each landed.Dedup-searched over open and closed ceiling-coverage cards (
compile-surfaces,CEILINGS, line-ratchet coverage): #11310 coverstrue-green.md, #9473 the other four skills, #9923 the published catalog, #9965CLAUDE.md, #9792AGENTS.md. None covers this file.Re-check