chore(ci): run the release-toolkit PR gates from one pr.yml at v0.66.0 #182
No reviewers
Labels
No labels
kind
chore
priority
low
size
S
status
blocked
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frankenbit/cellblock!182
Loading…
Reference in a new issue
No description provided.
Delete branch "claude/181-pr-gates-v0.66.0"
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?
Refs #181
Moves cellblock's release-toolkit PR gates into one
pr.ymlthat callsreusable-pr-gates.yml@v0.66.0, deletesmanifest-check.ymlandfragment-check.yml, and bumpsrelease.ymlfrom@v0.42.0to@v0.66.0. Same shape as tmux-tell's migration (frankenbit/tmux-tell PR 964). Part of frankenbit/release-toolkit#1530.What changes
.forgejo/workflows/pr.yml: jobgates,runs_on: go,layout: combined,manifest: 'on',fragments: 'on'. Every other gate stays at its default,off. Trigger types includeedited; nopaths:filter; nosecrets:line (C3: pr-gates needs none).manifest-check.ymlandfragment-check.ymlare deleted.release.yml: pin@v0.42.0->@v0.66.0, plus a short upgrade comment. Nothing else in the file changes.release-toolkit.yml: the wiring comment namespr.ymlinstead ofmanifest-check.yml.changelog.d/181.internal.md.Branch protection is not touched. Per ADR-0013 D4, the operator adds
pr / gates (pull_request)as a required check onmainafter it has posted on the rolling release PR.Behaviour change for contributors
The old
fragment-check.ymlran only whenchangelog.d/**changed.pr.ymlhas nopaths:filter, so fragment coverage now grades every PR: each PR needs achangelog.d/fragment or oneno-changelog: <reason>line in its body. The gates also grade the landing tree (the PR merged onto currentmain), so a PR that no longer applies cleanly goes red and needs a rebase (frankenbit/release-toolkit#1548).Carry-forward
pr.ymlmanifest-check.ymlruns_on: goruns_on: gomanifest-check.ymlconfig_pathdefaultrelease-toolkit.yml)fragment-check.ymlruns_on: goruns_on: gofragment-check.ymlfragments_dir,valid_kinds,fragment_length_warn_chars,density, five density limits: defaults)fragment-check.ymlon: paths: ['changelog.d/**']Both pins were
@v0.42.0; the gate list is unchanged (manifest and fragments).Upgrade check for
release.yml(v0.42.0 -> v0.66.0)Diffed
reusable-release.yml'son: workflow_call:block at the two tags:release_pr_reviewers(default empty) andcut_gate(defaultexecute), both optional. None removed or renamed, no new required input.secrets:block in either version;secrets: inheritstays.blockedmode outputs).publish_modewent fromdrafttoimmediateat v0.43.0 (frankenbit/release-toolkit#827). It does not affect cellblock, becauserelease.ymlalready passespublish_mode: ${{ inputs.publish_mode || 'immediate' }}explicitly (added inc60c5aafor exactly this). That line is unchanged.### Removedand### Upgradesection from v0.43.0 to v0.66.0 reads "None.", except v0.43.0's Removed (the Codeberg mirror workflows), which cellblock never wired.RELEASE_TOOLKIT_TOKEN, the same one tmux-tell's v0.66.0 wrapper uses.Minisign key
The jump crosses v0.57.0, so
rtis fetched with a minisign check.RELEASE_TOOLKIT_MINISIGN_PUBLIC_KEYis not set on the repo, but it is set at frankenbit org scope (read through the API on 2026-10-05). Its key idD11C3791DB75C907and key line matchminisign.pubat v0.66.0.Fragment kind
internalis right when the change is invisible to players and should bump patch;changedis right when the release machinery counts as user-facing (tmux-tell chose it). This PR usesinternal, since nothing in the game changes. Easy to rename if you preferchanged.Verification
Requesting a verify-at-source review from @alex: the job log of this PR's
pr / gatesrun, read in the pane, with the evidence lines posted as a comment below.Locally (a dev
rtbuild, not the v0.66.0 binary):rt manifest-checkpasses, andrt fragment-checkin content mode passes kind, summary header, issue reference and density on the new fragment.🤖 Generated with Claude Code
CI evidence for head
df82f8f4af19ee483008e177c7ffbfc82b98c1e5, read from the job log (run 303, job 1, "plan, and run every gate when combined"), not from the status.resolved toolkit ref: v0.66.0 (source=baked), aftercaller scan over 3 top-level workflow file(s):/remote v0.66.0 .forgejo/workflows/pr.yml.bootstrap rt: FETCH published asset @ v0.66.0 (adopter / frozen-cut path)release-toolkit: minisign signature OK (1 trusted key(s) available)release-toolkit: signed for v0.66.0 (trusted comment matches)release-toolkit: checksum OK (189ebf7f9a653fd3cfe22ceed92fd048672df1eb5db10996776e65e3582515b4)rt 0.66.0landing-tree replay: PASS - this head already contains origin/main at c6d7a55bd3e7b51ca4842b125e042e15dd97bcdf, so it IS the landing tree.[manifest-check] all checks passedfragment-coverage: PASS - fragment present: changelog.d/181.internal.md, andfragment-check: density PASS - grades fragment density and fragment content validity; does NOT grade PR fragment coverage.pr-gates: tree unchanged across every gate step (manifest fragments).attest: every expected gate ran (manifest fragments) and every green gate wrote its own verdict and no other.skipped, with empty logs.The split-layout jobs (manifest, fragments, changelog_body, register, ac_closure, workflow_parse, split result) are
skippedin the run, but their commit statuses still read "pending, Has started running". tmux-tell's migration headaf77cf0shows the same.pr / gates (pull_request)is success, and the combined commit state is success.test(run 304): server, client and client-nav all success.Verdict: APPROVE at
df82f8f4afSummary: cellblock's two gates move to one
pr.ymlatreusable-pr-gates.yml@v0.66.0, andrelease.ymlmoves from v0.42.0 with nothing it passes affected. The live run resolves, fetches and grades as designed. Nothing is blocking. One contributor-visible change is deliberate and should be known before merging: fragment coverage now runs on every PR.Head pinned with
rt review-submit-check(rc=0, READY) immediately before this review. Basec6d7a55is cellblock's livemain.Job log (Axis C), read in the browser
Run 303, job 1, commit
df82f8f4af:layout=combined; on gates: manifest fragments.caller scan over 3 top-level workflow file(s),remote v0.66.0 .forgejo/workflows/pr.yml,resolved toolkit ref: v0.66.0 (source=baked),per-gate script: .release-toolkit/scripts/pr-gates.sh.PASS - this head already contains origin/main at c6d7a55...FETCH published asset @ v0.66.0,minisign signature OK,signed for v0.66.0 (trusted comment matches),checksum OK (189ebf7f9a65...),rt 0.66.0.all checks passed; fragmentsfragment present: changelog.d/181.internal.md, coverage PASS and density PASS; steps 10-13skipped;tree unchanged across every gate step (manifest fragments); attestevery expected gate ran (manifest fragments).Cache saved with key: rt-v0.66.0-linux-amd64, release-toolkit#1550.Statuses: 12, combined
success.pr / gates (pull_request)is success, and the split rows read "Has been skipped".test / server,clientandclient-navare green (run 304).Diff, verified at source
pr.yml:branches: [main],types: [opened, synchronize, reopened, edited], nopaths:, nosecrets:,runs_on: go,layout: combined,manifest: 'on'andfragments: 'on'. Its pin matchesrelease.yml's, as D6 requires.runs_on: go. Every defaultfragment-check@v0.42.0relied on is identical in pr-gates@v0.66.0:fragments_dir,valid_kinds,fragment_length_warn_chars500,densitytrue, and the five thresholds empty. So is manifest'sconfig_path.fragment-check.ymlcarriedpaths: ['changelog.d/**'], andreusable-changelog-fragment-check.yml@v0.42.0had no coverage mode at all. Two things are therefore new for cellblock:changelog.d/changes (the ADR-0013 wiring rule);no-changelog:body line.The
pr.ymlheader says so. Contributors will meet it on their next PR.release.yml: only the pin moves, plus an ASCII upgrade note. From v0.42.0 to v0.66.0, the inputs gaincut_gateandrelease_pr_reviewers, both optional; nothing was removed or became required, and the outputs were only added.publish_mode's default changed from'draft'to'immediate'at v0.43.0, but the file passes${{ inputs.publish_mode || 'immediate' }}explicitly, unchanged.secrets: inheritstays (#806)..md,.yml,.tomland.shfiles at head, the old names survive only inpr.yml's header and the upgrade note.enable_status_check: false.Fragment kind
internal, a patch bump, is right if nothing changes for players. tmux-tell and ember usedchangedfor the same move, because contributors see the replay. And for cellblock specifically, contributors also see the new every-PR coverage requirement. Both kinds are defensible; it is Alex's call.After the merge (ADR-0013 D4)
pr / gates (pull_request)must post on cellblock's next rolling release PR before Alex turns checks on. cellblock is #806's repo, whose release PRs once got zero runs, so this precondition matters most here. The firstpush: mainrun also answers the org PAT's issue scope (#1484), which I cannot read from here.