# Releasing
Maintainer-only release checklist for Rustnake.
## Prerequisites
- Push access to `main` and tag creation rights.
- GitHub Actions enabled for this repository.
- `CHANGELOG.md` contains an entry for the release version.
- `Cargo.toml` version matches the intended tag version.
## Signing policy
- Release binaries are intentionally unsigned on all platforms.
- No signing/notarization rollout is currently planned.
- CI does not run signing/notarization steps.
## Release steps
1. Run local quality checks:
- `cargo fmt --all --check`
- `cargo check --all-targets --all-features --locked`
- `cargo clippy --all-targets --all-features --locked -- -D warnings`
- `cargo test --all-targets --all-features --locked`
2. Update `CHANGELOG.md` with the release section.
3. Bump crate version in `Cargo.toml`.
4. Commit and push to `main`.
5. Create and push a semver tag:
- `git tag vX.Y.Z`
- `git push origin vX.Y.Z`
6. Confirm release workflow success (`.github/workflows/release.yml`):
- tag/changelog/version validation
- cross-platform binary build/upload
- crates.io publish (idempotent)
- final release publication
## Post-release checks
- Verify release assets and checksums exist on GitHub Releases.
- Verify crate version is visible on crates.io.
- Confirm README install commands still match current asset names.