# Release checklist
1. Run formatting and tests:
- `cargo fmt --all`
- `cargo test --all-features`
- `cargo test --no-default-features`
- `cargo clippy --all-targets --all-features -- -D warnings`
- `RUSTDOCFLAGS="-D warnings" cargo doc --all-features --no-deps`
2. Review `CHANGELOG.md` and bump the version if needed.
3. Verify metadata:
- `Cargo.toml` `license`, `readme`, `homepage`, `documentation`, `keywords`, `categories`
4. Confirm the fuzz target builds.
- `cargo check --manifest-path fuzz/Cargo.toml`
5. Review the coverage workflow in [`docs/coverage.md`](docs/coverage.md) and, if desired, generate a numeric report with `cargo llvm-cov` or `cargo tarpaulin`.
6. Tag the release:
- `git tag -s vX.Y.Z`
7. Publish:
- `cargo package --offline` as a final local packaging smoke test.
- `cargo package --list` and confirm the archive only contains the Rust crate sources, docs, examples, tests, and release metadata.
- `cargo publish` from a clean tree.