doc-claims is red in every freshly scaffolded project, and the design says it should be #16
Labels
No Label
P0
P1
P2
release-blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: null/Project-Template#16
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Scaffolding into an empty directory and running
doc-claims.shthere reports six findings, all bare script names:None of them is a mistake.
scaffold.shdeliberately does not copy the scripts — "an unconfigured release.sh landing in every new repository is a loaded gun, not a head start" — andTOOLS.mdsays so outright: "If this project has fewer scripts than that table lists, that is the intended state, not a broken copy... the table is a menu rather than an inventory here."So the documents are right, the scaffold is right, and the guard is right, and the result is still that every project adopting this template has a red
doc-claimson day one. That is the conditionaudit-gate.mjsargues about at length for npm advisories: a permanently red gate is one everybody has learned to ignore, and it takes the real findings down with it.Three ways out, and this needs a decision rather than a quiet patch:
doc-claims.shlearns the difference. A bare filename with no slash is a weaker claim than a path —release.shin prose is a reference to a script that may or may not have been adopted, whiledocs/qa/ClaudeReport.mdis an assertion about this repository. Demote bare filenames to a warning, or drop them from the checked set entirely and keep the strictness for paths.Recommendation is 1: the guard is the thing that can distinguish the two cases, and the distinction is real. Whichever is chosen,
TOOLS.md's "menu rather than an inventory" paragraph should point at it, since that is where somebody will be standing when they hit this.Verify:
scaffold.shinto an empty directory,git init && git add -A, thendoc-claims.sh docs/exits 0 — or exits non-zero for a reason the template documents as expected, with TOOLS.md naming it.Partially addressed in
f5fd67b, and measuring it properly changed the shape of the problem. The issue stays open.The bare-filename half is done. Those six are now reported and counted separately and do not fail the run. I checked before loosening it that this does not undermine the guard: the finding it was written for — a comment claiming
tests/notice-security.test.tspinned a security rule, for a file that had never existed — is a path, so it would still fail today.The remaining half is paths, and my original framing missed it. A freshly scaffolded project with a real commit exits 1 on four claims that are not bare names at all:
Same root cause, different mechanism: three documents reference the tooling directories as paths, and
scaffold.shdeliberately creates neither.Why this was not visible until now.
doc-claimsbuilds its top-level set fromgit ls-tree --name-only HEAD. A scratch repo that has beengit init-ed andgit add-ed but never committed has noHEAD, so the set is empty,is_toplevelis false for everything, and no path is checked at all — while the run reports a confident pass. My first verification did exactly that and reported success; it had to be redone with a commit. Worth knowing independently of this issue: an uncommitted tree makes this guard report green over anything.Options for the path half, updated:
scaffold.shcreates the directories empty, asDIRSalready does fordocs/data/img. Cheapest, precedented, and honest — an emptyscripts/says "this is where they go". Does not fix therelease.shreference, which names a file.doc-claimslearns that a path under a directory the scaffold declines to create is a menu entry too — the same demotion as bare names, keyed on the directory rather than the shape of the token.Leaning 1 plus 3, not 2. Still a decision rather than a patch, which is why this is not closed.