CI: a release still needs Every Python started by hand on the merged commit #1137
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#1137
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 exists today
.forgejo/workflows/every-python.yml:17-26triggers on pushes to"[0-9]*.[0-9]*.[0-9]*", a weekly cron andworkflow_dispatch.CONTRIBUTING.md:696-700(release step 5) asks the releaser to start Every Python onmainby hand after the release pull request merges and wait for it, becausescripts/release_tools.py:198-205refuses a tag without a passed unit leg on every supported Python, and the push run tests 3.14 alone.The candidate's cost half no longer holds. #1033 item 1 has landed (
every-python.yml:19-22), so issue branches stopped triggering the two legs. The only release branch on the remote isorigin/0.3.0, last committed 2026-09-16; since #940 every release goes throughmain, so the push trigger fires roughly never and costs nothing."Run the oldest Python only" is refuted: the release gate requires a passed leg on each of 3.12 and 3.13 (
release_tools.py:199-205), and testing 3.12 alone would drop 3.13 from what a release promises.What would change
Add a push trigger on
mainfiltered bypaths:(Forgejo honourspaths;readme.yml:27-37already uses it):A
push:key holds onebranches/pathspair, sopathswould also narrow pushes to release branches; since no release branch has been pushed since 2026-09-16 and every release now merges tomain, the simplest form drops the release-branch filter. If the user wants release branches kept, they stay inbranches:and accept the samepathsnarrowing. Release step 3 sets the version insrc/postulo/__init__.py(andpyproject.toml, whichrelease_tools.py checkholds equal), so the release pull request's merge commit starts the legs by itself, andCONTRIBUTING.mdstep 5 and the hint atrelease_tools.py:204change from "start it by hand" to "wait for it". Theconcurrencyblock already keysmainon the commit.tests/test_release_tools.pyreads this workflow and must still pass.Adding
uv.lockto the paths catches a dependency that drops an older Python's wheels on the day it lands rather than on Monday, at a cost:uv.lockchanged in 16 commits between 2026-09-30 and 2026-10-30, about 7.5 runner-hours a month.pyproject.tomlis no better a trigger: it changed in 17 commits in the same month, mostly dependency edits.src/postulo/__init__.pychanged in six commits since 2026-09-01, the last on 2026-10-04.What it saves or protects
small (workflow): one manual step and one wait fewer at each release; no runner time saved, a little spent
Accessibility
none
Decided by the maintainer (2026-10-31)
Every Python starts by itself on a push to main that changes src/postulo/init.py OR uv.lock (the user chose both, against the recommendation); release-branch trigger goes
Decisions
main? Recommended: yes, onsrc/postulo/__init__.pyalone.uv.lockchanges? Recommended: no; the weekly run and the release gate catch it before a release.pathswould narrow it anyway, and no release branch has been pushed since 0.3.0.Found by the efficiency and reliability audit of 2026-10-30 (finding C10; index postulo/postulo#1108). Checked against
mainatdaee30b15(2026-10-30).