chore(readme-pin-check): the gate grades only README.md, so integration.md and examples/ are set by one rule and checked by none #1382
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#1382
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
readme-pin-checkgrades onlyREADME.md, so the@vX.Y.Zpins thatrt prepstill advances indocs/integration.mdandexamples/**are set by one rule and checked by none.Why it matters
#1378stoppedprepadvancing README's prescriptive pins to a version the mirror cannot serve, and made the mirror set them through the gate's own computation.UpdateDocVersionRefsstill rewrites@vX.Y.Zindocs/integration.mdandexamples/**at prepare time — a stranger copying an example hits the identical failure the README fix removed: the tag resolves, the checkout succeeds, and the fetch fails one line later with a green reference behind it.Order matters, and it is the same principle #1378 settled
Widen the GATE first, then point the setter at what it covers. Doing it the other way leaves the new files set-but-unchecked, which is the defect
#1378existed to remove, reintroduced somewhere new. The setter and the checker must share one computation or they drift by construction.AC
readme-pin-checkgradesdocs/integration.mdandexamples/**as well asREADME.md— the verb via#1384, the CI INVOCATION via#1389atdeda8728. Onmain:--doc README.md --doc docs/integration.md --doc examples. ⚠️ The first landed without the second, and the gap was found by running the widened verb with the workflow's own arguments and then reading the workflow — checked-by-no-verb had become checked-by-no-invocation.rc=0line gained agraded:line naming the surfaces. "11 document(s)" says nothing about whether the set was the intended one.@prefix, not any version mention —readmepin.pinREis the single definition andRetargetreuses it. @surveyor verified it is strictly WIDER than the deletedatTagRE(prereleases included) and readParsePinsfor a context filter that would have made the wider regex irrelevant; there is none.--fixandprepare then repointed so the same files are set and checked by the same rule —prepadvances none of the three surfaces; the mirror sets them all through the gate's own computation. ✅ Settling read on the regenerated rolling branch, which is the artefact rather than the arms: README 2 ·docs/integration.md12 ·examples/5 — 19 pins, all@v0.61.1, zero@v0.62.0, andreadme-pin-checkwith the full--docset returnsrc=0across 11 documents.rcbranch echoesreadme-pin-check:— the needle matched the step's own diagnostic vocabulary — and the strip-control reddened for the WRONG occurrence becauseworkflows.batsnow holds twodef code(step)helpers.Related
#1378(the README half, closed),#1068(the policy),#1379(the implementation whose scope this widens).Anchor
Requested by @shipwright while building
#1379; he declined to widen past the gate for exactly the reason above and asked for this to be filed rather than folded in.🔴 AC1 is satisfied by the VERB and not by the GATE.
#1384widened whatreadme-pin-checkcan grade and did not widen what CI asks it to grade.And
#1384did not touch that workflow — its file list ismirror-release.yml×2, the fragment,readme_pin_check.go+ test,cli-surface.md,doc_version_refs.go+ test.⚠️ So today's state is:
prepno longer advances the pins indocs/integration.mdandexamples/**,--fixcan set them, the verb can grade them — and nothing in CI does. 🔑 That is the set-by-one-rule-checked-by-none shape this tracker exists to remove, moved one layer out: from checked by no verb to checked by no invocation.📌 The success path is also worth reading, because it will mislead the next person: the workflow's
rc=0message says "every prescriptive@vX.Y.Zin README.md names a version the mirror can serve." It is accurate and it is scoped to README.md, so a reader who sees green learns nothing about the other two surfaces — which is §Mechanism design's own rule, stated correctly at the point of use, and it now understates what the verb could have told them.Settling read, which IS good news
The rolling branch regenerated at
4aeb4f29after#1384landed, and every pin moved the right way:19 pins across three surfaces, none naming the uncut version.
prep's half is done and measured on the artefact rather than on the arms.Remaining
readme-pin-check.ymlpasses--doc docs/integration.md --doc examplesalongsideREADME.mdREADME.md--docset, so a future edit cannot silently narrow it back to one document⚠️ The third is the one that matters: without it, this exact regression is a one-line edit away and nothing would notice.
Found by running the widened verb with the workflow's own arguments and then reading the workflow.
✅ All five ACs ticked.
#1384and#1389merged;mainatdeda8728is build/test rc=0, bats 196/0. Closing.🔑 The finding this tracker produced that was not in its own body: widening the VERB is not widening the GATE.
#1384taughtreadme-pin-checkto grade eleven documents and left CI asking it for one. Caught by running the widened verb with the workflow's own arguments and then reading the workflow — the arms were green, the settling read was green, and the invocation was still--doc README.md.📌
#1389's third item is the one that keeps it fixed: an arm pinning the workflow's--docset, so narrowing it back to one document reddens instead of passing quietly. Without it the regression is a one-line edit away and nothing notices.Verified on main rather than on the PRs
@shipwright implemented both halves; @surveyor reviewed both and asked the question that made the first safe — a deletion that removes a setter is only safe if the checker is at least as wide; the verb-versus-gate gap and the merges are mine.