Release checklist¶
Releases are cut from develop into main and tagged. Each tagged v* triggers
the publish workflow.
Pre-release¶
Green integration branch.
developpasses lint, type check, and tests on Python 3.10–3.12.Changelog finalised. Move the accumulated
[Unreleased]entries under a new[X.Y.Z] - YYYY-MM-DDheading and leave a fresh[Unreleased]section.Version bumped. Update
versioninpyproject.tomltoX.Y.Z.Examples verified. The OpenFAST examples import against the current public API, and
examples/synthetic_quickstart.pyruns end to end.Docs build clean.
sphinx-build -b html docs docs/_build/htmlsucceeds with no warnings.Validation matrix current. Validation matrix reflects the shipped behaviour.
Cutting the release¶
Open a release pull request from
developintomain.Wait for all checks to pass.
Merge with a merge commit (releases are merge commits into
main, not squashes).Tag the merge commit
vX.Y.Zand push the tag.
Post-release¶
Confirm the
Publishworkflow’s build job produced the wheel and sdist artifact for the tag.When the upload is intended, run the
Publishworkflow manually (workflow_dispatch), selecting the release tagvX.Y.Zas the ref (“Use workflow from → Tags → vX.Y.Z”), so it builds and uploads exactly the tagged commit rather than whatever the default branch currently points at. Tagging alone does not upload, and this requires PyPI trusted publishing to be configured.Confirm the documentation built without warnings.
Open a GitHub release with the changelog section as the notes.
Versioning¶
VANE follows Semantic Versioning. During the
alpha series the API may change between minor versions; from the first tagged release,
breaking changes increment the major version (or the minor version while
0.y.z), and are always recorded in the changelog.