A dispatched Every Python run records no commit statuses, so the release gate never sees it #1189
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo#1189
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
What happened
Releasing 0.5.0 (2026-11-01), CONTRIBUTING's Making a release step 5 was followed as written: #1188 merged as
8ce017c18, then Actions → Every Python started by hand onmain. Run 1841 passed on 3.12 and 3.13, on8ce017c18.release_tools.py check v0.5.0 --ci, which the release workflow runs on the tag, still said:Forgejo records no commit statuses for a
workflow_dispatchrun: the commit's statuses list onlyCI / … (push)andDev image / … (push). The gate reads commit statuses only (_statuses,REQUIRED_JOBS), so a dispatched Every Python can never satisfy it, however green it is.Why it worked for 0.4.0
Until #1033,
every-python.ymlran on pushes to"[0-9]*", which matched issue branches. So a merged commit usually already carriedEvery Python / Unit tests … (push)statuses from its branch. #1033 (rightly) narrowed the filter to release branches[0-9]*.[0-9]*.[0-9]*, and that closed the path the gate had been relying on without anyone noticing.What got 0.5.0 out
Pushing the release branch at the merged commit,
git push origin <sha>:refs/heads/0.5.0, as 0.3.0 had a0.3.0branch. Its push runsci.ymlandevery-python.ymlwith statuses on the same commit. The cost is a second full CI run (about 45 min), sinceci.ymlalso runs on release branches.To do
main" with pushing theX.Y.Zrelease branch at the merged commit, and say why (a dispatched run records no statuses the gate can read).release_tools.py(_problems) says "start Every Python by hand on this commit", which is exactly what does not work. Point it at the release branch instead.every-python.yml's header and CONTRIBUTING:97 ("whenever it is started by hand") should say a dispatched run is for looking, not for the gate.every-python.ymlrun on the commit, read from the actions runs API, which does list dispatched runs with theircommit_sha. The second keeps the documented step and is the smaller change.tests/test_release_tools.pyfor whichever is chosen.🤖 Generated with Claude Code