Repository navigation
馃懛 ci: unify release preparation - #637
Draft
gaborbernat wants to merge 1 commit into
Draft
gaborbernat wants to merge 1 commit into
gaborbernat wants to merge 1 commit into
Conversation
gaborbernat
force-pushed
the
fix/release-contract
branch
from
October 21, 2026 07:06
c26fdf3 to
94d7447
Compare
Eee622
approved these changes
Oct 24, 2026
Eee622
approved these changes
Oct 24, 2026
gaborbernat
force-pushed
the
fix/release-contract
branch
2 times, most recently
from
October 26, 2026 00:00
e712c69 to
fc28348
Compare
Move releases to the shared github-workflows 5.0.2 pipeline and release-creator 3.2.1. Preparation, patch validation, App-authored commits and tags, distribution builds and release notes come from the shared Actions. The Sphinx changelog gets user-facing categories, stable release anchors and credits from commit authors and co-authors, and the PyPI description is rendered by hatch-fancy-pypi-readme. CONTRIBUTING explains that fragments carry no hand-written credit and that prepare runs release-creator contributors. The tag workflow builds and checks the lock in parallel with a read-only notes job, uploads to PyPI through OIDC, verifies the published digests, re-checks that the tag still names the release commit and creates the GitHub Release with one call. Distributions and notes pass between jobs by artifact ID. Tag runs never cancel; pull request and branch runs do. Nab writes pylock.toml from a [tool.nab] table, with a temporary upload cutoff exception for release-creator 3.2.1. A build group locks the hatchling backend with Cython and setuptools, because PyYAML has no CPython 3.15 wheel. The unused release-check group goes. Dependabot's pre-commit ecosystem and pre-commit.ci's quarterly autoupdate own hook updates, so the hook cooldown check and the managed hook pins go. Claude-Session: https://claude.ai/code/session_012aAwoCsFZo25Xq5goFey4m
gaborbernat
force-pushed
the
fix/release-contract
branch
from
October 26, 2026 00:58
fc28348 to
c6bedab
Compare
This branch has not been deployed
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.
Releases move to the shared github-workflows 5.0.2 pipeline and release-creator 3.2.1. Shared Actions handle preparation, patch validation, App-authored commits and tags, distribution builds and release notes. The Sphinx changelog gets user-facing categories, stable release anchors and credits taken from the merge commit's authors and co-authors, and prepare runs
release-creator contributorsto append a New Contributors subsection. CONTRIBUTING now says fragments carry no PR number or hand-written credit. The PyPI description is rendered byhatch-fancy-pypi-readme, and the wheel declares its import name without the deprecated license classifier.On a tag, the shared
validate-python-releaseworkflow checks the lock and builds the distributions while a read-only notes job renders the release body from the changelog in parallel. PyPI upload goes through OIDC and no longer skips existing files. After the published digests and attestations are verified, the release job re-checks that the tag still names the release commit and creates the GitHub Release with a single call; the separate draft stage and GitHub's generated notes are gone. Jobs download the distributions and notes by artifact ID rather than by name. The workflow runs under arelease-${{ github.ref }}concurrency group that cancels superseded pull request and branch runs but never a tag run.pylock.tomlis now written by Nab from a[tool.nab]table (universal mode, seven-day cutoff, CPython 3.15 on Linux x86_64, the only platform where CI installs from the lock), with a temporary exception that lets release-creator 3.2.1 in before its seven days are up; it is to be deleted after 2026-11-02. Abuildgroup locks the hatchling backend together with Cython and setuptools, because PyYAML has no CPython 3.15 wheel. The unreferencedrelease-checkgroup is removed. Test, type and docs CI still resolve current dependencies, and the weekly lock refresh PR describes itself as a relock ofpylock.toml.Hook updates now come from Dependabot's
pre-commitecosystem with a seven-day cooldown and pre-commit.ci's quarterly autoupdate. The hook cooldown check, its scheduled recheck and therelease-creator managedhook pins are removed, and revisions stay frozen to commit SHAs. The workflows pin setup-uv 10.3.2, which installs uv 0.13.5.GitHub Releases 3.0.1 and 4.9.3 have no matching PyPI versions. Review those before backfilling their release descriptions.
https://claude.ai/code/session_012aAwoCsFZo25Xq5goFey4m