# Release Checklist
## Before Publishing
1. Verify that the crate name `gspx` is still available on crates.io.
2. Confirm that `Cargo.toml`, `README.md`, and `CHANGELOG.md` all reflect the release version.
3. Confirm that `CITATION.cff` and repository links are current.
## Local Release Gate
Run the full local gate from the repository root:
```bash
cargo fmt -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets
cargo test --doc
RUSTDOCFLAGS="-D warnings" cargo doc --no-deps
cargo package --allow-dirty --list
cargo publish --dry-run --allow-dirty
```
## Publish Sequence
1. Publish the crate:
- `cargo publish`
2. Tag the exact published commit:
- `git tag v<version>`
- `git push origin v<version>`
3. Verify the crate page on crates.io.
4. Verify the docs.rs build for `gspx`.
5. Add owners if needed:
- `cargo owner --add <github-handle>`
## Notes
- `cargo publish` remains a manual step; CI only performs a dry run.
- Example Laplacians and meshes live in the repo under `resources/library` and are loaded from local paths; the published crate does not package example data.
- Official release support is Linux and Windows.