test(register-check): the allow-list wildcard semantics #655 documented are pinned by ZERO arms — and one arm is NAMED for a glob it never uses #682
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#682
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?
The gap
#681 documented the allow-list wildcard semantics. Nothing pins them. Measured on
mainafter that merge, with a control:
🔴 A coverage audit keyed on test names would report this as covered. The arm is named for a
mechanism it does not exercise — the CLAUDE.md test-that-cannot-fail-for-its-named-reason
shape, on the exact behaviour just written into the comments.
Why it matters more than a missing arm
The documented behaviour is the dangerous direction:
*and?cross/under[[ == ]], so*.mdallow-lists every.mdin the tree. A check that skips too much rendersas a clean scan — there is no output difference between "correctly found nothing" and
"allow-listed the entire repo by accident." Nothing currently fails if that behaviour changes.
Arms to add
*.mdin the allow-list allowsa/b/c.md— pins that*crosses/docs/*allowsdocs/adr/x.md— pins that it is already recursive without**?pattern crosses/the same waydocs/internal/vsdocs/internal):67to say literal path, since that is what it testsVerification AC
register-check.sh's comment blockbecomes false again — i.e. mutate the matcher and watch the specific arm go red, not just
the suite
grep -cfor a wildcard inside an allow-list write in the test file returns > 0Anchor
2026-08-17, found by @shipwright during his #681 review and verified independently. The live
allow-list currently has zero wildcards, so this is preventive rather than remedial — nothing
is mis-skipping today. Sibling of #655, which fixed the comments; this fixes the absence of a
test behind them.
✅ CLOSED —
#859merged ata377cf11, and the tracker named a file that no longer existsThis tracker asked for arms in
tests/register-check.bats. That file was deleted with the bashPR-CI gates (
#607). @carpenter noticed and put the arms in the Go equivalent rather thanrecreating a retired substrate:
🔑 The negative control is the part that makes these arms non-vacuous
An arm that passes because the glob matched NOTHING is indistinguishable from one that passes
because the glob worked — which is the same defect as
#784, one level up, and why both weredispatched together.
@lookout mutation-verified it independently:
*→[^/]*and?→[^/]reddened the cross-slasharms while baseline and negative controls passed. So the arms fail for the right reason and pass
for the right reason.
📌 The stale file reference is worth noting for the dead-name corpus (
#852): a tracker filedagainst
tests/register-check.batsoutlived the file by an entire retirement arc, and only surfacedwhen someone went to work it. A tracker can name a deleted substrate as confidently as a doc can.