docs(readme): name a version the mirror can actually serve (#1068) #1343
No reviewers
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!1343
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/1068-name-the-usable-pin"
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 README tells a stranger to pin
@v0.61.1. That tag has no release object on the gitea.com mirror, so nothing can be fetched from it — the reference resolves, the checkout succeeds, andfetch-rtfinds no asset.#1068 STAYS OPEN after this merges — stated here rather than left to be inferred. Its last remaining AC is "the stranger test is RUN, end to end, by someone who did not build this", deliberately not satisfiable by shutting trackers. This PR repairs a defect that leg ② of that test found; the test still has to be run by a stranger.
⚠️ And the first draft of that sentence said
does NOT close+ the number, whichac-closure-checkcorrectly refused — the parser is positional and does not read negation, so my declaration that this PR closes nothing would have closed the tracker on merge. The keyword is now absent rather than negated. Recorded in the body because the next author writing a non-close declaration will reach for the same words.Refs #1068.
The measurement
Anonymous, against the public gitea.com API — the same access a stranger has, no credential:
The failure arrives one step after the mistake.
git-tag=200, so the ref checks out and theuses:line is accepted.fetch-rtthen has nothing to fetch. A stranger's first failure is at bootstrap, with a green reference behind them — which is the hardest shape to diagnose, because the step that was wrong is the step that passed.The document argued against itself
README:44warned that a tag may exist with no binary behind it, and gave v0.55.0 as the example. v0.55.0 has since been backfilled: it now has a release with 2 assets.So the warning demonstrated a version that works while the recommendation named one that fails. A reader who checks the example finds it fine and concludes the caveat is historical. The example now names the current latest — the version actually in the gap — and says why it is not a historical one.
What changed
:44v0.55.0v0.61.1, with a note that this is the live gap, not a past one:94v0.61.1) vs newest the mirror can serve (v0.58.0):104@v0.58.0":221uses: …@v0.61.1@v0.58.0The coupling that belongs in the record
Fixing point ③ moved the failure into point ②.
The mirror was an aside this morning. It is the critical path now: once #1321/#1324 made the mirror the documented path for a stranger, mirror staleness stopped being a footnote the same commit that made the
uses:line absolute. Before that, a reader who could not fetch from the mirror had somewhere else to go, and the README's vagueness about "latest" was slack rather than a defect. It is not slack any more, and nothing in the diff says so — that is why it is here.That coupling is the thing a later reader will not reconstruct from the four edits.
Scope — one thing I did and reverted
I initially also changed the
uses:path from.forgejo/workflows/to.gitea/workflows/. That was outside the dispatch and I reverted it.It was also wrong on the merits: the path depends on the consumer's forge, not on the host the toolkit happens to live at. Both paths resolve at the tag (verified 200/200 at
v0.58.0), so the change would have been invisible in testing and wrong for every Forgejo adopter. Only the version moved.What this does NOT do
Verification
changelog-body-checkrc=0 ·register-checkrc=0 ·go buildrc=0 ·batsnot-ok=0 ·go testrc=0.The version claims are HTTP status codes read anonymously at the time of this commit, and they are a state claim: the mirror can gain a release at any time, which would make
:94stale in the safe direction (recommending an older pin than necessary) and:44's example stale in the unsafe one (naming a version that has since been backfilled — exactly what happened to v0.55.0).🤖 Generated with Claude Code
https://claude.ai/code/session_01DbnWrAAh3iGuPAQF53nuXG
APPROVE — reviewed at
1821f077d2ea023f52b25cbbe28a8085b4edc258. Every number in this PR reproduces, the revert is complete, and#1068correctly stays open. One finding on the same line you edited, raised as a follow-up rather than a block.The claims, measured against the mirror rather than read
The whole shape holds: tag resolves, release absent, so the reference is accepted and
fetch-rtfails one step later with a green checkout behind it.✅
v0.55.0has 2 assets today, so the old warning example really had inverted — it demonstrated a version that works while the recommendation named one that fails. That is the harder half of this PR and it is the half a reader would never report, because checking the example is what makes it look fine.Gates and the revert
I checked the revert against the tree rather than against your disclosure, since that is what you asked for by disclosing it:
README.mdcarries exactly oneuses:line and it is the.forgejopath. Nothing in the diff touches.gitea.✅ And
#1068stays open: noCloses/Fixes/Resolvesin the body or in either commit message. The fragment name and the(#1068)subject suffix are both signals @bosun has ruled he no longer reads as closes, so the tracker is safe on the current rule.The finding — the line is now version-correct and still forge-unconditional
Your revert was right, and it leaves something the revert cannot fix.
docs/integration.mdsays the path choice depends on the reader's forge:Both directories exist on the mirror at
v0.58.0(I checked:200and200), which is exactly why this cannot fail loudly.⚠️ So the Quick start hands a Gitea adopter one path while the guide it links to tells them to use the other — and the README's own comment on that line addresses the owner path, not the workflow-dir path, so nothing signals that a choice exists.
🔑 It is the same failure shape this PR exists to fix, one axis over: a reference that resolves, taken from our documentation, that is wrong for the reader's situation. You fixed the version axis on that line and the forge axis is still open on it.
📌 Not blocking, deliberately. It is pre-existing, it is not what you set out to fix, and this PR is strictly better than main with or without it. But you are the person who just spent a change on that exact line and considered this exact axis — so if a clause belongs anywhere, it belongs here or on a follow-up you own, not on whoever edits the line next.
Suggestion if you want it in scope: one parenthetical — "(
.gitea/workflows/if your forge is Gitea — see integration.md)". If you would rather keep this PR to the version axis, that is a sound call and I would request a tracker instead.