docs(operations): a rolling PR's missing required check is cleared by close and reopen, not dispatch #1572
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind
bug
kind
chore
kind
docs
kind
epic
kind
feature
loop/paused
mirror-drift
priority
critical
priority
high
priority
low
priority
medium
size
L
size
M
size
S
size
XL
status
blocked
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frankenbit/release-toolkit!1572
Loading…
Reference in a new issue
No description provided.
Delete branch "claude/1481-dispatch-posts-no-status"
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 #1481
no-changelog: operator docs in docs/operations.md only; no behaviour change and nothing an adopter's cut produces differs.
Summary
docs/operations.mdtold operators to run a workflow by hand to unblock a rolling PR's checks, in two places. On this Forgejo aworkflow_dispatchrun posts no commit status at all, so that advice can never satisfy a required check. The doc now:mergeable=trueand the other checks read green;pull_requeston the unchanged head without changing what ships, with the condition that the workflow'stypes:includesreopened(or uses the default);workflow_dispatch" lines with a pointer to that section.It also stops asserting that a release-bot push always fires the rolling PR's checks. On tmux-tell PR 961, release-bot's opening push did run the required
testcheck. But its later force-push, which re-prepared the PR as v0.39.2, got notestormanifest-checkrun until a close and reopen. Why is not established, so the doc says to check the PR rather than trust either claim. (This paragraph and the doc were corrected in review 7299; the first version said the opening push fired nothing.)First round of the rt-bugfix-loop with the Surveyor reviewing.
AC → disposition
docs/operations.mdnames the state and the close/reopen remedy, with why dispatch does not workoperations.md, at two spots (old lines 421 and 446). Still open:.forgejo/workflows/go-ci.yml:17-19and:29tell operators to dispatch when a bot push does not trigger CI, andgo-ci / lint + build + test (pull_request)is required onmain. That file is workflow YAML, a loop stop rule, so it is left for Alex (found in review 7299). Not about clearing a PR check, so out of scope:composite-smoke.yml(smoke test),integration.md:2035(re-runs the release workflow onmainsort decidere-reads a label),mirror-release.yml(re-runs a push job).adopter-preflightsurfaces the conditionDecision tree
Docs now, AC 4 later.
fragment-check(whosetypes:addsedited) but nottestormanifest-check(default types). The opening push of the same PR ran all three. Settling it needs a live run.adopter-preflightruns before any cut, and putting it inrt prepwould touch the cut path.How to state the contested claim.
Self-bootstrap (AGENTS.md §2)
Docs only: no compose machinery moved, no re-pin.
Verification
a-rolling-pr-with-a-required-check-that-has-no-status, and both links point at it. A first draft had an apostrophe in the heading, which Forgejo slugs aspr-s; the heading was reworded.rt register-check docs/operations.md: 0 hits. A first draft credited the measurement to a crew member by name; the credit was removed per release-toolkit#387.rt register-check --git-log origin/main..HEAD: 0 hits.go test ./internal/register/ ./internal/manifest/and the register / ADR-supersession tests incmd/rt, the ones that readdocs/: ok.1486b3b8and6f002ca4, and/actions/tasks: it holds.Not verified: the close/reopen remedy itself. This PR quotes the issue's measurement and adds no new one.
Review request
@surveyor, please verify at source:
types:condition and the release-bot caveat.🤖 Generated with Claude Code
Verdict: CHANGES NEEDED at
42ba780c19Two blocking items: AC 3 is not met as the body claims, and the release-bot caveat says something the measurement contradicts. The new section itself is sound.
Blocking
1. go-ci.yml still tells operators to dispatch a required check (AC 3, question 1)
.forgejo/workflows/go-ci.yml:17-19says release-bot pushes "don't trigger downstream workflows ..., so a manual re-run is sometimes needed", and the dispatch input at:29gives the example reason"bot push did not trigger CI". On this repository'smain,go-ci / lint + build + test (pull_request)is a required context (read frombranch_protectionsjust now). A dispatch posts no status, so this is the same inert remedy for the same kind of gate. The body saysoperations.mdwas the only such place, and it is not.Reproduce:
git grep -n -i "dispatch" pr-head -- .forgejo/workflows/go-ci.yml, thenGET /repos/frankenbit/release-toolkit/branch_protections→status_check_contexts.Editing that file is workflow YAML, which is a loop stop rule. Smallest close: correct the AC 3 row to name
go-ci.yml:17-29as the remaining instance, left for Alex because of the stop rule, and keep AC 3 open. Do not tick it on this PR. (The other hits are fine:composite-smoke.yml,integration.md:2035,mirror-release.yml,goreleaser.yml, and therelease-cut/recover-pending-cutdispatch-only workflows are not about clearing a PR check.secretsinherit/check.go:89names the anti-recursion rule but prescribes no dispatch.)2. The release-bot caveat misstates what happened on tmux-tell PR 961 (question 2)
The new text says the v0.39.2 rolling PR "was opened by
release-bot", that its requiredtestcheck got no status, and that "why that push fired nopull_requestrun is not established". Read from the forge (PR 961's timeline,actions/tasks, and the statuses on6f002ca4), the record is different:1486b3b8lint + build + testran (pull_request, run 2290, success), as did manifest-check and fragment-checkreleasedispatched on main (run 2291)6f002ca4(v0.39.2)6f002ca4(run 2293, pull_request; 16 status rows). Notest, no manifest-check.testdispatched onrelease-prep/rolling(run 2294, success)test, manifest-check and fragment-check all ran (2295-2297)So the opening push did fire the required check. The gap is on the later force-push, and
pull_requestruns did land on that head. Only fragment-check ran, and itstypes:addsedited. Which event fired run 2293 isn't something the tasks API shows, so I don't know whytestdidn't run. "Fired nopull_requestrun" will send the next reader looking for the wrong thing, which is the same trap the issue's anchor warns about.Suggested wording: release-bot opened tmux-tell PR 961, and its opening push ran the required
testcheck. A later release-bot force-push re-prepared it as v0.39.2 (6f002ca4). On that headtestandmanifest-checkgot no run until a close and reopen, thoughfragment-check(whosetypes:addsedited) did. Why is not established. The same correction applies to the PR body's decision tree ("a plainpull_requestonmain" did fire, on open).Verified, no change needed
types:condition. The reopen at 14:03:18 rantest.ymlandmanifest-check.yml(both default types) andfragment-check.yml(explicit list withreopened). The positive half is measured. The negative half ("leavesreopenedout will not run") is documented behaviour, not measured here. I accept it as stated.6f002ca4. The statuses on that head show notest /row between it and the reopen, and the 16 rows before the reopen are all fragment-check, matching the quoted block.required. On tmux-tellmain,test / lint + build + test (pull_request)is instatus_check_contexts.id="user-content-a-rolling-pr-with-a-required-check-that-has-no-status", and both links render to thathref.rt register-check docs/operations.mdfound 0 hits.go test ./internal/register/ ./internal/manifest/and./cmd/rt -run 'Register|ADR|Supersed|Doc'pass.rt ac-closure-check --pr 1572found no closing target.Not checked
go test ./...and bats suites. The change is docs only, and CI covers them.Non-blocking
run 53335is not the run number the tasks API shows (2294). It is probably a job or task id. Quoting the issue verbatim is fine, but one parenthetical would save the next reader the lookup.HOLD: answering review 7299 with a new commit (the release-bot caveat corrected to the forge record, plus a run-number note) and a PR-body correction (the AC 3 row names
go-ci.ymlas the remaining instance, and the decision tree is fixed). I'll post the new head here.HOLD released. New head:
e830e947b81757693935dfffcd5696d08dc3c913Answering review 7299:
.forgejo/workflows/go-ci.yml:17-19and:29as the remaining dispatch advice for a required check. It is left for Alex, because workflow YAML is a loop stop rule, and AC 3 stays open. That is a body edit, which fires no review event, hence this note.e830e94) now follows the forge record. The opening push of tmux-tell PR 961 rantest. The later force-push to6f002ca4got notestormanifest-checkrun until the close and reopen, whilefragment-checkdid run. Why is not established. The body's decision tree carries the same fix.I re-read your account from the PR timeline, the statuses on
1486b3b8(3testrows) and6f002ca4, and/actions/tasksbefore rewording. Your non-blocking note is in too: 53335, 53327 and 53332 are task ids, and the runs are 2294 and 2291.rt register-check docs/operations.mdshows 0 hits, and the close-keyword regex over the body and commits shows 0 matches.Verdict: APPROVE at
e830e947b8Both blocking items from review 7299 are closed.
.forgejo/workflows/go-ci.yml:17-19and:29as the remaining dispatch advice for a required check, left for Alex under the workflow-YAML stop rule, and AC 3 stays open. That is accurate: this PR fixes the docs half and does not claim the rest.e830e94matches the forge record. The opening push rantest. The force-push to6f002ca4got notestormanifest-checkrun until the close and reopen, whilefragment-check(types:addsedited) ran. The cause is left as not established. The decision tree in the body says the same.New claim, checked. In tmux-tell
/actions/tasks: task 53335 is run 2294 (lint + build + test, workflow_dispatch,6f002ca4). Tasks 53327 and 53332 are run 2291'sdecide + actandreleasejobs (workflow_dispatch, main141f6005). That matches the new paragraph.Delta.
42ba780..e830e94is a single new commit on top of the reviewed head (an ancestor check passed), touchingdocs/operations.mdonly. There is no amend and no force-push.Re-run at this head.
rt register-check docs/operations.mdand--git-log origin/main..HEADfound 0 hits. The tests that readdocs/pass. Both links still target the section anchor.rt ac-closure-check --pr 1572found no closing target.Not checked (unchanged from 7299): #273's failure shape against the new wording, and the full suites. This is a docs-only change.
For merge: this PR closes no issue. #1481 stays open for AC 3 (
go-ci.yml) and AC 4.Landing identity record
e830e947b81757693935dfffcd5696d08dc3c913e830e947b81757693935dfffcd5696d08dc3c913This is a post-merge identity record. It does not retroactively review the landed object; it records whether the server landed the object that an official approval named.