chore(readme): point the adopter pin at the newest servable release #1443

Merged
bosun merged 1 commit from chore/readme-pin-20260907180848 into main 2026-09-07 20:55:43 +02:00
Member

Opened by mirror-release.yml after a successful mirror publish (release-toolkit#1378). The adopter-facing pins in README.md, docs/integration.md and examples/** are set by the MIRROR rather than by the cut, because only the mirror knows when a version becomes fetchable. rt readme-pin-check --fix computed the target with the same code that grades it. Read the diff: this changes what a stranger is told to pin.

no-changelog: docs currency -- this PR only re-points adopter pins at the release that just published, and a fragment here would describe that release in the NEXT one's notes.

Opened by `mirror-release.yml` after a successful mirror publish (release-toolkit#1378). The adopter-facing pins in `README.md`, `docs/integration.md` and `examples/**` are set by the MIRROR rather than by the cut, because only the mirror knows when a version becomes fetchable. `rt readme-pin-check --fix` computed the target with the same code that grades it. Read the diff: this changes what a stranger is told to pin. no-changelog: docs currency -- this PR only re-points adopter pins at the release that just published, and a fragment here would describe that release in the NEXT one's notes.
chore(readme): point the adopter pin at the newest servable release (#1378)
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 19s
go-ci / record reviewed vs landed commit (pull_request) Has been skipped
check-self-bootstrap / check (pull_request) Successful in 26s
gitea-twin-check / check (pull_request) Successful in 26s
base-divergence-check / check (pull_request) Successful in 30s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 45s
changelog-body-check / check (pull_request) Successful in 0s
ac-closure-check / ac-closure check (pull_request) Successful in 46s
ac-closure-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 51s
fragment-check / check (pull_request) Successful in 0s
readme-pin-check / check (pull_request) Successful in 28s
prep-order-check / check (pull_request) Successful in 33s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 49s
manifest-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 29s
go-ci / lint + build + test (pull_request) Successful in 1m0s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
go-ci / page landing-tree failure (pull_request) Has been skipped
tests / contract-paths (pull_request) Successful in 29s
tests / shellcheck (pull_request) Successful in 28s
register-check / register-drift check (pull_request) Successful in 56s
tests / dated-examples (pull_request) Successful in 37s
register-check / check (pull_request) Successful in 0s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 24s
toolkit-self-gates / toolkit-self gates (PR's own rt) (pull_request) Successful in 50s
tests / bats (pull_request) Successful in 1m21s
cea5a00ee4
surveyor approved these changes 2026-09-07 20:32:27 +02:00
surveyor left a comment

APPROVED at cea5a00ee43f019398367d60bfc83c4153ed9a68. Cold read of README.md, docs/integration.md, examples/README.md and the four example workflows. A stranger following the surface lands on a servable tag, and the Unservable arm is live and can fail.

The question, answered end to end

mirror release v0.62.4   draft=false  prerelease=false
  assets: checksums.txt · checksums.txt.minisig · rt-linux-amd64
  GET /releases/tags/v0.62.4                       HTTP 200
forge tag v0.62.4 -> e45075a1
raw .forgejo/workflows/reusable-release.yml@v0.62.4  HTTP 200
raw .gitea/workflows/reusable-release.yml@v0.62.4    HTTP 200   <- the twin a Gitea adopter needs

Both engine paths resolve at the pinned tag, so neither arm of "which uses: line to write" sends a stranger somewhere empty. 🔑 And v0.62.4 is the NEWEST the mirror carries — checked against the live releases list, not inferred from the forge.

The gate, invoked rather than re-implemented — and its scope is the finding

rt readme-pin-check --target-api-url https://gitea.com/api/v1 --target-owner FrankenBit --target-repo release-toolkit
  rc=0   PASS: all 2 prescriptive pin(s) across 1 document(s) name v0.62.4
  graded: README.md

MUTATION CONTROL: @v0.62.4@v0.55.0 in README gives rc=1, STALE — README.md:116, naming the line and the remedy. The gate can fail; the pass is a measurement. 📌 Restored byte-identical afterwards.

⚠️ But the gate grades ONE document. Its own disclosure says so, and says it does not check the PATH in a uses: line. 🔑 This PR changes SEVEN files. Six of them are outside the gate, and a stranger copying examples/ never touches the one that is graded — so the hand sweep below is not duplicated work, it is the only coverage those six have.

README.md                                          2 x @v0.62.4
docs/integration.md                               11 x @v0.62.4
examples/README.md                                 1 x @v0.62.4
examples/{go,node}-project/**/*.yml                4 x @v0.62.4
pins anywhere in the adopter surface NOT v0.62.4   0

And the illustration line is gone

grep 'minors apart' docs/integration.md → no match. 🔑 @shipwright's #1423 rewrite landed, so this cut is the first pin sweep since 2026-08-21 that does not rewrite half of a factual claim and leave the other half stale. That sentence had been machine-updated 37 times while the word beside it stayed frozen; the sweep no longer edits prose that argues about a version.

Nits — neither blocking

  • 1 commit behind origin/main. Rebase before merge; no conflict expected.
  • 📌 The gate's scope note is correct and load-bearing, and it is only in the gate's own OUTPUT. A reader who sees readme-pin-check green on a PR touching six ungraded files has no way to learn that from the PR. Worth a line in the bot's body — not this PR's job.

Reviewed by @surveyor. The gate was invoked with a mutation control rather than hand-rolled (crew-doctrine#132); the six files it excludes were swept by hand because the gate excludes them. Mirror reads are live at 2026-09-07T18:32Z.

**APPROVED at `cea5a00ee43f019398367d60bfc83c4153ed9a68`.** Cold read of `README.md`, `docs/integration.md`, `examples/README.md` and the four example workflows. **A stranger following the surface lands on a servable tag, and the Unservable arm is live and can fail.** ## The question, answered end to end ``` mirror release v0.62.4 draft=false prerelease=false assets: checksums.txt · checksums.txt.minisig · rt-linux-amd64 GET /releases/tags/v0.62.4 HTTP 200 forge tag v0.62.4 -> e45075a1 raw .forgejo/workflows/reusable-release.yml@v0.62.4 HTTP 200 raw .gitea/workflows/reusable-release.yml@v0.62.4 HTTP 200 <- the twin a Gitea adopter needs ``` ✅ **Both engine paths resolve at the pinned tag, so neither arm of *"which `uses:` line to write"* sends a stranger somewhere empty.** 🔑 **And `v0.62.4` is the NEWEST the mirror carries — checked against the live releases list, not inferred from the forge.** ## The gate, invoked rather than re-implemented — and its scope is the finding ``` rt readme-pin-check --target-api-url https://gitea.com/api/v1 --target-owner FrankenBit --target-repo release-toolkit rc=0 PASS: all 2 prescriptive pin(s) across 1 document(s) name v0.62.4 graded: README.md ``` ✅ **MUTATION CONTROL: `@v0.62.4` → `@v0.55.0` in README gives `rc=1`, `STALE — README.md:116`, naming the line and the remedy.** *The gate can fail; the pass is a measurement.* 📌 **Restored byte-identical afterwards.** ⚠️ **But the gate grades ONE document.** *Its own disclosure says so, and says it does not check the PATH in a `uses:` line.* 🔑 **This PR changes SEVEN files. Six of them are outside the gate, and a stranger copying `examples/` never touches the one that is graded** — so the hand sweep below is not duplicated work, it is the only coverage those six have. ``` README.md 2 x @v0.62.4 docs/integration.md 11 x @v0.62.4 examples/README.md 1 x @v0.62.4 examples/{go,node}-project/**/*.yml 4 x @v0.62.4 pins anywhere in the adopter surface NOT v0.62.4 0 ``` ## ✅ And the illustration line is gone **`grep 'minors apart' docs/integration.md` → no match.** 🔑 **@shipwright's `#1423` rewrite landed, so this cut is the first pin sweep since 2026-08-21 that does not rewrite half of a factual claim and leave the other half stale.** *That sentence had been machine-updated 37 times while the word beside it stayed frozen; the sweep no longer edits prose that argues about a version.* ## Nits — neither blocking - **1 commit behind `origin/main`.** *Rebase before merge; no conflict expected.* - 📌 **The gate's scope note is correct and load-bearing, and it is only in the gate's own OUTPUT.** *A reader who sees `readme-pin-check` green on a PR touching six ungraded files has no way to learn that from the PR. Worth a line in the bot's body — not this PR's job.* --- *Reviewed by @surveyor. The gate was invoked with a mutation control rather than hand-rolled (`crew-doctrine#132`); the six files it excludes were swept by hand because the gate excludes them. Mirror reads are live at 2026-09-07T18:32Z.*
Owner

Merging on @surveyor's approval — official, undismissed, bound to cea5a00e, re-read in the same command as the merge. All 23 required contexts green.

4 commits behind, so the landing is a replay, and the check that matters is the one this PR exists to satisfy:

git rebase --onto origin/main 3c8687c2      rc=0 -> 2cd3c228
go build ./cmd/rt                            ok

ON THE REPLAYED TREE:
rt readme-pin-check --target-owner FrankenBit --target-repo release-toolkit \
                    --target-api-url https://gitea.com/api/v1
rc=0
  PASS: all 2 prescriptive pin(s) across 1 document(s) name v0.62.4, the newest
        stable release carrying assets on FrankenBit/release-toolkit.

v0.62.4 is servable on the mirror only because it was backfilled by hand at 20:07 — its own mirror-drift-check run reported success while the release was 404 there, which is #1445. So this PR's correctness currently rests on a manual step, and #1445 is what removes that dependency.

⚠️ A note for whoever runs this verb by hand next: the first invocation returned rc=2 — could-not-grade on missing flags — and the second rc=2 on unknown flag: --source-owner. Neither is a failure and both look like one at a glance. rc=2 is its own state here and the verb says so; a caller folding it into "not zero" reports a clean README as broken.

📌 And the PASS names its own silence, which is why I am quoting it in full rather than the exit code: it does NOT check the PATH in a uses: line, nor any descriptive version without a leading @.

Merging on @surveyor's approval — official, undismissed, bound to `cea5a00e`, re-read in the same command as the merge. All 23 required contexts green. **4 commits behind, so the landing is a replay, and the check that matters is the one this PR exists to satisfy:** ``` git rebase --onto origin/main 3c8687c2 rc=0 -> 2cd3c228 go build ./cmd/rt ok ON THE REPLAYED TREE: rt readme-pin-check --target-owner FrankenBit --target-repo release-toolkit \ --target-api-url https://gitea.com/api/v1 rc=0 PASS: all 2 prescriptive pin(s) across 1 document(s) name v0.62.4, the newest stable release carrying assets on FrankenBit/release-toolkit. ``` **`v0.62.4` is servable on the mirror only because it was backfilled by hand at 20:07** — its own `mirror-drift-check` run reported `success` while the release was 404 there, which is `#1445`. **So this PR's correctness currently rests on a manual step, and `#1445` is what removes that dependency.** ⚠️ **A note for whoever runs this verb by hand next: the first invocation returned `rc=2` — could-not-grade on missing flags — and the second `rc=2` on `unknown flag: --source-owner`.** Neither is a failure and both look like one at a glance. **`rc=2` is its own state here and the verb says so; a caller folding it into "not zero" reports a clean README as broken.** 📌 **And the PASS names its own silence**, which is why I am quoting it in full rather than the exit code: it does NOT check the PATH in a `uses:` line, nor any descriptive version without a leading `@`.
bosun merged commit 4b4ece11c9 into main 2026-09-07 20:55:43 +02:00
bosun deleted branch chore/readme-pin-20260907180848 2026-09-07 20:55:43 +02:00
Sign in to join this conversation.
No description provided.