This document describes the release process for Aprender.
- All CI checks must pass
- Quality gates must be satisfied:
- Test coverage ≥ 97%
- Mutation score ≥ 85%
- TDG score ≥ 95 (A+)
- Zero SATD comments
- Complexity within limits
- CHANGELOG.md updated with release notes
- Version bumped in Cargo.toml
# Ensure all tests pass
make test
# Run quality gates
pmat quality-gate
# Check documentation builds
cargo doc --no-deps --all-features
# Verify examples work
cargo run --example boston_housing
cargo run --example iris_clustering
cargo run --example dataframe_basics
# Test crates.io package
cargo publish --dry-run# Update version in Cargo.toml (e.g., 0.1.0 -> 0.1.1)
# Update CHANGELOG.md with release notes
git add Cargo.toml CHANGELOG.md
git commit -m "Release v0.1.1"
git tag -a v0.1.1 -m "Release v0.1.1"
git push origin main
git push origin v0.1.1The release workflow (.github/workflows/release.yml) will:
- Build artifacts for Linux, macOS, and Windows
- Run tests on all platforms
- Publish to crates.io (when enabled)
- Create GitHub Release with artifacts and release notes
If automatic publishing is not configured:
cargo publish --token $CARGO_REGISTRY_TOKEN- Get your crates.io API token from https://crates.io/me
- Add token as GitHub Secret named
CARGO_REGISTRY_TOKEN - Update
.github/workflows/release.yml:- name: Publish to crates.io run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
Follow Semantic Versioning (SemVer):
- MAJOR (0.x.0): Breaking API changes
- MINOR (0.x.0): New features, backward compatible
- PATCH (0.0.x): Bug fixes, backward compatible
Current: 0.1.0 (initial release)
- Verify release on crates.io: https://crates.io/crates/aprender
- Check documentation: https://docs.rs/aprender
- Monitor GitHub Actions for completion
- Announce release (if applicable)
If a release has critical issues:
-
Yank the bad version from crates.io:
cargo yank --vers 0.1.1
-
Fix the issue and release a patch version
-
Never delete tags - use new versions instead
- TDG Score: 95.6/100 (A+)
- Test Coverage: 97.72%
- Mutation Score: 85.3%
- Repository Score: 95.0/100 (A+)
- Zero SATD comments
- Cyclomatic complexity ≤ 10
- Cognitive complexity ≤ 15