@@ -685,14 +685,14 @@ Before contributing, run `mise run format` and `mise run check`. See `AGENTS.md`
685685
686686Pushing a ` v* ` tag starts two workflows. [ ` release.yml ` ] ( .github/workflows/release.yml )
687687publishes the wheel to Test PyPI and PyPI, creates a GitHub release, and
688- publishes versioned documentation for stable releases.
688+ publishes versioned documentation for final releases, including post- releases.
689689[ ` container-build.yml ` ] ( .github/workflows/container-build.yml ) publishes the
690690CUDA image to GitHub Container Registry (GHCR).
691691
692692Release versions follow [ PEP 440] ( https://peps.python.org/pep-0440/ ) with major,
693- minor, and patch release numbers. This project uses stable releases and release
694- candidates only; prerelease versions append ` rcN ` without a dash. The GitHub tag
695- always starts with a ` v ` prefix.
693+ minor, and patch release numbers. This project uses stable releases, release
694+ candidates, and post-releases. Prerelease versions append ` rcN ` without a dash;
695+ post-releases append ` .postN ` . The GitHub tag always starts with a ` v ` prefix.
696696
697697Examples:
698698
@@ -702,9 +702,11 @@ Examples:
702702| ` v2.1.3 ` | ` 2.1.3 ` | ✅ |
703703| ` v0.0.5rc0 ` | ` 0.0.5rc0 ` | ✅ |
704704| ` v0.1.2rc5 ` | ` 0.1.2rc5 ` | ✅ |
705+ | ` v0.1.6.post1 ` | ` 0.1.6.post1 ` | ✅ |
705706| ` 1.0.0 ` | | ❌ No ` v ` prefix |
706707| ` release-1.0 ` | | ❌ Wrong format |
707708| ` v0.0.7-rc4 ` | | ❌ Dash before rc suffix |
709+ | ` v0.1.6-post1 ` | | ❌ Dash before post-release suffix |
708710| ` v0.1.3a1 ` | | ❌ Alpha prereleases are not used; use rcN only |
709711
710712### Release Checklist
@@ -713,8 +715,8 @@ Examples:
713715
714716- Fetch ` origin/main ` and tags, choose the exact release commit, and confirm its
715717 normal CI and manually dispatched GPU Tests run passed.
716- - Choose unused candidate and stable tags, then record the candidate's exact
717- ` origin/main ` SHA.
718+ - Choose the unused tag or tags required for the release type , then record the
719+ exact ` origin/main ` SHA.
718720- Decide whether GHCR visibility or a separate nSpect or Pulse scan blocks the
719721 release. Those scans are not part of the GitHub release workflows.
720722
@@ -785,21 +787,48 @@ git tag "${STABLE_TAG}" "${RELEASE_SHA}"
785787git push origin " refs/tags/${STABLE_TAG} "
786788```
787789
788- #### After Publishing Stable
790+ #### Post-release
791+
792+ Use a post-release for a packaging or release correction that does not warrant
793+ a new regular patch version. A post-release is final, so it does not use the
794+ release-candidate promotion sequence. Preview the next post-release tag and
795+ resolve its target commit without creating or pushing a tag:
796+
797+ ``` bash
798+ mise run release:prepare -- --bump post --ref origin/main
799+ ```
800+
801+ After reviewing the output, create the proposed tag at the resolved commit and
802+ push it. For example:
803+
804+ ``` bash
805+ POST_TAG=v0.1.6.post1
806+ RELEASE_SHA=" $( git rev-parse ' origin/main^{commit}' ) "
807+ git tag " ${POST_TAG} " " ${RELEASE_SHA} "
808+ git push origin " refs/tags/${POST_TAG} "
809+ ```
810+
811+ The container workflow publishes ` X.Y.Z.postN-cu129 ` , the immutable
812+ ` sha-<short-sha>-cu129 ` tag, and the mutable ` cu129 ` and ` latest-cu129 ` aliases.
813+ PEP 440 post-releases do not move the shortened ` X.Y-cu129 ` tag. Validate the
814+ post-release wheel and immutable container tag before announcing the release.
815+
816+ #### After Publishing a Final Release
789817
790818After publishing:
791819
792820- Verify both tag-triggered workflows passed at the tested SHA.
793- - Confirm Test PyPI and production PyPI contain the stable version.
821+ - Confirm Test PyPI and production PyPI contain the published version.
794822- Confirm the GitHub release is not marked as a prerelease.
795823- Confirm versioned documentation is available at
796824 ` https://nvidia-nemo.github.io/Safe-Synthesizer/<version>/ ` .
797- - Confirm GHCR exposes the stable ` X.Y.Z-cu129 ` and ` X.Y-cu129 ` tags with the
798- intended visibility.
825+ - Confirm GHCR exposes the expected tags with the intended visibility. Regular
826+ stable releases publish ` X.Y.Z-cu129 ` and ` X.Y-cu129 ` ; post-releases publish
827+ ` X.Y.Z.postN-cu129 ` without moving ` X.Y-cu129 ` .
799828- Coordinate a NeMo Platform package or container pin, documentation update,
800829 and downstream release when Platform should consume the new version. This is
801830 not currently automated by the Safe Synthesizer release workflow.
802- - Announce the release only after artifacts and stable documentation pass
831+ - Announce the release only after artifacts and versioned documentation pass
803832 verification.
804833
805834## NMP Integration
0 commit comments