Skip to content

馃懛 ci: unify release preparation - #637

Draft
gaborbernat wants to merge 31 commits into
mainfrom
fix/release-contract
Draft

gaborbernat wants to merge 31 commits into
mainfrom
fix/release-contract

Conversation

@gaborbernat

@gaborbernat gaborbernat commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Use github-workflows PR #3 for release preparation, patch validation, App-authored commits and tags, hash-constrained distribution builds, and GitHub notes. The full pylock.toml includes a selectable Hatchling backend group and uses a seven-day package age cutoff. The full lock selects release-creator 0.5.1 from PyPI.

The tag workflow checks existing PyPI filenames and digests, selects missing files from the validated build for OIDC upload, creates or verifies the matching GitHub Release before PyPI, then verifies the complete published set before publishing any draft. The keyless build action selects backend constraints for the same Python version it uses to build the wheel and sdist. All supported group and build selections resolve on Linux, macOS, and Windows.

The Sphinx changelog has user-facing categories, stable release and category anchors, and human credits. All 91 PyPI-backed historical GitHub Release bodies have read-only previews from the tracked changelog and generated contributor metadata; they match the prior reviewed renders byte for byte. The existing GitHub Releases for 3.0.1 and 4.9.3 have no matching PyPI versions or assets; their source changes appear in the next published releases. Please review those two orphan releases before any cleanup. Historical GitHub bodies will be written only after the release migration is approved and a new release passes.

The PyPI description uses hatch-fancy-pypi-readme with the existing README content. The wheel declares its import name and drops the deprecated license classifier.

The PR gate requires the shared hook-update cooldown.

Release jobs now install only the tool groups they use from the full project lock. PyPI staging no longer waits for GitHub notes; upload still waits for the staged draft.

@gaborbernat gaborbernat added documentation Improvements or additions to documentation enhancement New feature or request skip news No news fragment needed labels Oct 20, 2026
@gaborbernat gaborbernat changed the title 馃懛 ci(release): unify preparation and history 馃懛 ci: unify release preparation Oct 20, 2026
Use the shared release Actions and a locked toolchain for preparation and publication. Reconcile historical changelog sections, credits, categories, and stable Sphinx anchors so the same source can render GitHub Release notes.
The release-only pylock omitted other dependency groups and narrowed
the usable Python range. Export all selections from uv's project
resolution and keep release installs scoped to their group.
The shared build action now checks backend hashes before building the
wheel and source distribution. Regenerate the full lock with a seven-day
age cutoff so the backend and release tools use the same policy.
Select missing files from the validated build, then verify every PyPI
digest before reconciling the GitHub Release. Match backend constraints
to the build interpreter and bound uv versions.
Use release-creator 0.5.0 from the project lock. Open weekly release-tool
PRs with the repo-only App so pull request checks run on those changes.
The App needs Pull requests write as well as Contents write.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request skip news No news fragment needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant