Correct the release PR CI note on the Auto Release PR workflow - #4403
Conversation
The comment added in #4397 was wrong. It claimed a PR opened with GITHUB_TOKEN starts no `pull_request` workflow run at all, so the release PR would open with no CI. Checking the Actions history properly shows something different, and the practical advice that followed from it was misleading. What actually happens, verified against run attempt data: - The runs for the `opened` activity are created, but held. Attempt 1 completes as `action_required` with zero jobs, and a manual approval starts attempt 2, which is the one that executes. This follows from the repository's Actions approval policy (`all_external_contributors`), not from the token as such. - Only those runs are held. Later `synchronize` runs from human pushes to `develop` execute on attempt 1, and the PAT-authored release PRs did too. - While a release PR sits unapproved, `develop` push runs for the same head commit do execute and show up green next to the empty PR run records. So a freshly opened release PR shows a mix of pending, jobless entries and real push results. The comment now says that, and tells a reviewer what to do about it: approve the held runs, then confirm that what they are reading belongs to the `pull_request` runs for the current head. Only comments change; the executable configuration is byte-identical. Two earlier attempts at this note were also wrong, in the opposite direction each time. The wording is deliberately narrow now: it names the policy rather than the token, scopes the gate to the `opened` activity, and keeps the same-head push warning from the original note, which was the one part of it that was true.
|
Pre-review completed in 4 rounds before this PR was opened, two independent reviewers per round, Round 1 — 1 LOW / 1 MEDIUM. The replacement text said no check coverage is lost. Both reviewers Round 2 — 1 MEDIUM, found independently by both. Two problems. The text attributed the gate to Round 3 — 1 MEDIUM. " Round 4 — 0 findings from both reviewers. The wording is deliberately narrow as a result: it names the policy rather than the token, scopes Comments only; the executable configuration is byte-identical to |
Why
The explanatory comment added in #4397 is wrong. It claimed that a PR opened with
GITHUB_TOKENstarts no
pull_requestworkflow run for itsopenedactivity, so the release PR would openwithout CI — and told reviewers that a green release PR does not mean CI ran.
The first half is false and the advice that followed from it was misleading. Comments only; no
behaviour change in this PR.
What actually happens
Verified against run attempt data, which is where the earlier reading went wrong — a run's
top-level
conclusionreflects the latest attempt and hides an earlieraction_required.f6ca9d1)action_required, 0 jobs0d2b768)action_required, 0 jobssynchronizeafter a human merge (a418b0f)3595ff1)Three things follow:
which is what actually executes.
all_external_contributors), underwhich
github-actions[bot]is gated — not the token as such. The API cannot attribute ahistorical
action_requiredto a specific policy decision, so the comment names the policy andstops there.
openedruns are held. Latersynchronizeruns, triggered by human pushes todevelop, execute on attempt 1. So does everything on a PAT-authored PR.And one detail the original note got right, which the first correction attempt wrongly dropped:
while a release PR sits unapproved,
developpush runs for the same head commit do execute andappear green next to the empty PR run records. On #4399 those push runs finished at 08:08 while the
PR runs stayed jobless until approval at 08:10.
So a freshly opened release PR shows a mix, and the comment now says so, with an actionable
instruction: approve the held runs, then confirm that what you are reading belongs to the
pull_requestruns for the current head.Note on #4380
This is peripheral to the change but worth recording, since it came out of the same investigation:
the release-PR checks that #4380 set out to enforce were fixed by its removal of the
if: github.head_ref != 'develop'job guards. The token switch in the same PR did not contributeto that — held runs behave the same either way — and it is what put a personal account's name on
every release PR until #4397. No action proposed here; the guards stay removed.