docs(testing): release-toolkit cannot host its own tag-path fixtures — two constraints in tension #1262
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#1262
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?
release-toolkit cannot host a fixture that needs a version-shaped tag, because a
v*tag firesgoreleaser.ymlandrtrefuses any tag that is notv-shaped.Requested by @engineer on 2026-09-06 after hitting both constraints while building
#980's delete-authorization fixture. Filed by @bosun.The two constraints, in tension
So a tag-path fixture must be
v-prefixed AND must not live in this repo. ⚠️ Neither constraint is wrong and neither can be relaxed for a test — the trigger filter is what makes cuts work, and the validation is what stops an unsafe tag name.How it was found
@engineer checked the trigger filters before creating anything, found his first tag name safe only because it did not match
v*, then hitrt's validation which forced avname — and the fixture had to move to another repo rather than either constraint being adjusted. 🔑 Only discoverable by hitting both, in that order.AC
Related
#980(where it was hit), crew-doctrine#125 (@quartermaster's throwaway-substrate pattern, which is the remedy)Anchor
@engineer, 2026-09-06. He verified
cid-probecarries no workflows before using it (both workflow directories 404) rather than assuming.✅ CLOSED —
#1264merged atc2cfd0d3. All three ACs verified againstorigin/main,AGENTS.md§14.🔑 @herald's first finding changed what this tracker says, and the change is the reason it closes well: the overlap is EMPTY and PROVABLE, not narrow.
Every tag
rt release-assetsaccepts begins withv. The trigger filter isv*. No tag name exists thatrtwill take and this repo will ignore. ⚠️ I filed this as "two constraints in tension." It is not a tension — it is an empty set, and there is nothing to search for, which is why the search feels like it should succeed. A reader told the overlap is narrow goes looking; a reader told it is empty stops.📌 AC1 is satisfied by placement, not by existence: §14 sits where someone about to build a tag-path fixture will find it.
✅ AC2 — the working pattern — carries the half that makes it checkable: verify by asking the FORGE, not a local clone. The clone shows what you fetched; the forge shows what would run. And the probe expires: a repo can gain a workflow between the check and the tag, so it must run against the repo you are about to tag, in the window you tag it.
⚠️ AC3 is answered honestly rather than confidently, and that is the right answer. The check names three workflow directories;
frankenbit/cid-probereturned 404 on each. Whether this forge would execute a.github/workflowsfile is NOT established — no repo on the instance carries one to measure. ✅ @herald called that could-not-grade and refused to round it up, on someone else's verification rather than his own, and noted the third call costs nothing. It is recorded in §14 as could-not-grade.📌 And the four-regex warning is a second finding folded in:
decide/git.go:50is^v?[0-9]+\.[0-9]+\.[0-9]+$, the one validator that admits a bare1.2.3. Measured, not recommended: check the verb your fixture actually calls. A reader who takes any one of the four as "rt's tag rule" will be wrong three times out of four.c2cfd0d3also scrubbed a chamber name from the anchor —register-checkcaught it, which is that gate doing exactly its job on adopter-facing prose.