Measured while landing #15817 (PR #15834) in a fresh worktree whose apps/docs dependencies were not installed. Filed unassigned and bare. Not graded here.
The reading
node scripts/check-doc-frontmatter.mjs -> EXIT=0 (enforcing run, green)
node scripts/check-doc-frontmatter.mjs --self-test -> EXIT=1
The --self-test verdict:
✗ check-doc-frontmatter --self-test — 3 of 76 assertion(s) failed
• the docs build's own extractor must be readable from apps/docs, or this gate cannot be shown to read what the build reads -- Cannot find module 'fumadocs-core/content/md/frontmatter'
Require stack:
- .../apps/docs/package.json
• self-test battery "(7) the extraction agrees with the docs build's OWN extractor" registered 1 case(s), below its pinned floor of 10 — cases that used to run no longer do.
• A battery at or below its floor means cases STOPPED RUNNING — the battery is the bug, not the number.
Why this is a finding and not just a missing install
1 is a finding's exit code. What actually happened is that a prerequisite was absent — apps/docs/node_modules — so battery (7) could not run at all. The floor assertion then fires on top of it and says, in the gate's own words, the battery is the bug — which sends the reader hunting for a deleted case that was never deleted.
An agent reading exit 1 has to open the log and reason about the message to learn that nothing was measured. The repo already models this precondition the other way: sibling gates answer an unmet prerequisite with exit 3 PREREQUISITE NOT MET and say plainly Nothing was measured (check-doc-anchors, check-docs-transcript-drift, check-doc-formula-expressions all did exactly that in the same run). This gate's self-test does not.
Suggested shape (not a ruling): make battery (7) refuse with exit 3 and a PREREQUISITE NOT MET line naming pnpm install when the docs build's extractor is unresolvable, so the floor assertion is never reached with an unpopulated battery.
Sibling card
#15328 is the same failure class on a different gate (check:docs-audit-scope / affected-docs --self-test answering exit 1 on an unbuilt workspace). This is a second member of that family, not a duplicate of it — a fix to either script does not touch the other. If the seat prefers one card per family, fold this in there.
Re-check
rm -rf apps/docs/node_modules # or use a fresh worktree with no install
node scripts/check-doc-frontmatter.mjs --self-test > /tmp/out 2>&1; echo "EXIT=$?"
Generated by Claude Code
Measured while landing #15817 (PR #15834) in a fresh worktree whose
apps/docsdependencies were not installed. Filed unassigned and bare. Not graded here.The reading
The
--self-testverdict:Why this is a finding and not just a missing install
1is a finding's exit code. What actually happened is that a prerequisite was absent —apps/docs/node_modules— so battery (7) could not run at all. The floor assertion then fires on top of it and says, in the gate's own words,the battery is the bug— which sends the reader hunting for a deleted case that was never deleted.An agent reading exit 1 has to open the log and reason about the message to learn that nothing was measured. The repo already models this precondition the other way: sibling gates answer an unmet prerequisite with exit 3
PREREQUISITE NOT METand say plainlyNothing was measured(check-doc-anchors,check-docs-transcript-drift,check-doc-formula-expressionsall did exactly that in the same run). This gate's self-test does not.Suggested shape (not a ruling): make battery (7) refuse with exit 3 and a
PREREQUISITE NOT METline namingpnpm installwhen the docs build's extractor is unresolvable, so the floor assertion is never reached with an unpopulated battery.Sibling card
#15328 is the same failure class on a different gate (
check:docs-audit-scope/affected-docs --self-testanswering exit 1 on an unbuilt workspace). This is a second member of that family, not a duplicate of it — a fix to either script does not touch the other. If the seat prefers one card per family, fold this in there.Re-check
Generated by Claude Code