Migrate release-toolkit wiring from v0.26.0 to v0.67.0 #1

Closed
opened 2026-10-08 00:11:55 +02:00 by engineer · 1 comment
Member

tic-tac-toe pins every release-toolkit reusable at @v0.26.0 and requests the codeberg-small-lazy runner, a label from its Codeberg days. Move it to the current adopter shape at v0.67.0.

Scope

  • release.yml: pin @v0.67.0, runs_on: go, add the release-cut-<ref> concurrency block (release-toolkit#417).
  • Replace changelog-body-check.yml, fragment-check.yml and manifest-check.yml with one pr.yml on reusable-pr-gates.yml (manifest and fragments on), as in release-toolkit's examples/node-project.
  • Add the dispatch-only recover-pending-cut.yml wrapper, pinned at the same tag (v0.58.0 or later is required, see release-toolkit#1173).

Found while preparing it, measured with rt v0.67.0 on 2026-10-08

  • v0.1.1 is a stranded cut. rt decide --dry-run reports mode=blocked, pending_version=0.1.1, pending_prep_sha=c17e2139, pending_tag_exists=false, pending_release_published=absent. This is the 2026-07-05 cancellation that release-toolkit#417 cites.

  • The repo had no tags and no releases. The manifest names v0.1.0 at 67d36246, but the tag and release were not carried over from Codeberg. rt manifest-check failed on the missing tag, and rt recover-pending-cut refused to grade because its control lookup (v0.1.0's release) returned 404. Resolved 2026-10-08: tag and release v0.1.0 (→ 67d36246) were created; rt manifest-check passes.

  • Not graded: runner, RELEASE_TOOLKIT_TOKEN secret and RELEASE_TOOLKIT_MINISIGN_PUBLIC_KEY variable. rt adopter-preflight cannot read those scopes with a write-only token.

  • Repair chosen: recovery (B) for v0.1.1, via recover-pending-cut.yml once the migration merges. Recovery (A) would need the v0.1.1 section edited first, because rt compose-verify refuses it without standard section headers.

Purpose beyond the migration

Once migrated, this repo is where release-toolkit#1166's remaining criterion ("verified on a real recovery") gets exercised: a re-prepared rolling PR after a fold, with fragments, must pass the fragment gate unattended.

tic-tac-toe pins every release-toolkit reusable at `@v0.26.0` and requests the `codeberg-small-lazy` runner, a label from its Codeberg days. Move it to the current adopter shape at `v0.67.0`. ## Scope - `release.yml`: pin `@v0.67.0`, `runs_on: go`, add the `release-cut-<ref>` concurrency block (release-toolkit#417). - Replace `changelog-body-check.yml`, `fragment-check.yml` and `manifest-check.yml` with one `pr.yml` on `reusable-pr-gates.yml` (manifest and fragments on), as in release-toolkit's `examples/node-project`. - Add the dispatch-only `recover-pending-cut.yml` wrapper, pinned at the same tag (v0.58.0 or later is required, see release-toolkit#1173). ## Found while preparing it, measured with `rt` v0.67.0 on 2026-10-08 - **v0.1.1 is a stranded cut.** `rt decide --dry-run` reports `mode=blocked`, `pending_version=0.1.1`, `pending_prep_sha=c17e2139`, `pending_tag_exists=false`, `pending_release_published=absent`. This is the 2026-07-05 cancellation that release-toolkit#417 cites. - **The repo had no tags and no releases.** The manifest names `v0.1.0` at `67d36246`, but the tag and release were not carried over from Codeberg. `rt manifest-check` failed on the missing tag, and `rt recover-pending-cut` refused to grade because its control lookup (v0.1.0's release) returned 404. **Resolved 2026-10-08:** tag and release `v0.1.0` (→ `67d36246`) were created; `rt manifest-check` passes. - **Not graded:** runner, `RELEASE_TOOLKIT_TOKEN` secret and `RELEASE_TOOLKIT_MINISIGN_PUBLIC_KEY` variable. `rt adopter-preflight` cannot read those scopes with a write-only token. - **Repair chosen: recovery (B)** for v0.1.1, via `recover-pending-cut.yml` once the migration merges. Recovery (A) would need the v0.1.1 section edited first, because `rt compose-verify` refuses it without standard section headers. ## Purpose beyond the migration Once migrated, this repo is where release-toolkit#1166's remaining criterion ("verified on a real recovery") gets exercised: a re-prepared rolling PR after a fold, with fragments, must pass the fragment gate unattended.
Author
Member

Closing at @alex's call: the migration is done.

  • #2: wiring moved to v0.67.0 (pr.yml, recover-pending-cut.yml, concurrency block, go runner).
  • #3: v0.1.1 folded back by hand. The automatic recovery refused correctly, because commit notes and a fragment cannot both render.
  • #5, #7: README links and release-notes text corrected.
  • #8: v0.2.0 recovered by rt recover-pending-cut. Both consumed fragments were restored byte-exact, and the evidence is on release-toolkit#1166.
  • The v0.1.0 tag and release were restored on this forge.

Still open elsewhere: #9 (the v0.2.0 cut, @alex's), #6 (the gitea.com mirror, deferred), and release-toolkit#1574 (the recovery workflow's push fails with HTTP 400).

Closing at @alex's call: the migration is done. - #2: wiring moved to `v0.67.0` (`pr.yml`, `recover-pending-cut.yml`, concurrency block, `go` runner). - #3: v0.1.1 folded back by hand. The automatic recovery refused correctly, because commit notes and a fragment cannot both render. - #5, #7: README links and release-notes text corrected. - #8: v0.2.0 recovered by `rt recover-pending-cut`. Both consumed fragments were restored byte-exact, and the evidence is on release-toolkit#1166. - The v0.1.0 tag and release were restored on this forge. Still open elsewhere: #9 (the v0.2.0 cut, @alex's), #6 (the gitea.com mirror, deferred), and release-toolkit#1574 (the recovery workflow's push fails with HTTP 400).
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
frankenbit/tic-tac-toe#1
No description provided.