ci: cut releases from main, and let the run cut the changelog - #678
Merged
Conversation
andiwand
marked this pull request as ready for review
August 9, 2026 16:39
The `releases` branch existed to hold the stamp commit, and cost tag reachability: since the train, tags sit on commits main never sees, so `git describe main` is stuck at v6.1.0 and `release.py version` cannot answer from main. Dispatch is now the only trigger, the stamp goes to main, and `release.py cut` heads the entries with the version - so the changelog needs no manual cut and nothing has to be synced between branches. `contents: write` is scoped to the job that pushes, and the other workflows drop the release-branch exclusion. Pushing to main needs the GitHub Actions app on the ruleset's bypass list, which is not in place yet. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VFcWjZhdxeWLE5Abg4qUex
andiwand
force-pushed
the
ci/release-from-main
branch
from
August 9, 2026 16:59
316f805 to
b67086c
Compare
andiwand
marked this pull request as draft
August 9, 2026 16:59
andiwand
marked this pull request as ready for review
August 9, 2026 17:08
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b67086cca8
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 Generated with Claude Code
Stacked on #677 — review that one first.
releasesexisted to hold the stamp commit, and cost tag reachability: sincethe train, tags sit on commits main never sees, so
git describe mainis stuckat
v6.1.0andrelease.py versioncannot answer from main.on the stamp commit the run makes. The first job refuses a ref that is neither
main nor
release/**, since the dispatch UI offers every branch.release.py cutheads the entries with the version and opens a fresh## Unreleased, so there is no manual cut and nothing to sync betweenbranches. It is idempotent, for re-runs.
changelogreads## <version>if it exists and## Unreleasedotherwise —the same lines before and after the cut, which is what lets the first job
check the copy before anything is built.
contents: writeis scoped to the job that pushes; the other eight workflowsdrop the release-branch exclusion and take
branches: ['**']instead, so apublished release's tag push does not run them twice.
Verified locally against git-cliff 2.13.1: check before the cut, dry-run cut,
cut, re-run cut, notes from the cut section, and the empty-
Unreleasedrefusal.Not done: the bypass
Pushing to main from the run needs the GitHub Actions app on the
mainruleset's bypass list, and the API refuses it:
GitHub Actions is not an org installation, and the documented bypass actors are
roles, teams, installed GitHub Apps and Dependabot. So this needs either a
GitHub App for releases, or a PAT belonging to someone the existing role bypass
already covers — and with either, the stamp push starts the other workflows,
which
GITHUB_TOKENcurrently suppresses. Do not merge before that issettled; the run would fail at the stamp push.