|
| 1 | +# Release Checklist |
| 2 | + |
| 3 | +Use this checklist for every FaultLine release. |
| 4 | + |
| 5 | +## 1. Pre-flight |
| 6 | +- Confirm working tree is clean: `git status --short` |
| 7 | +- Confirm current branch and target tag. |
| 8 | +- Confirm crates.io auth is valid: `cargo login --help` (or previous successful login in current session). |
| 9 | + |
| 10 | +## 2. Quality Gates |
| 11 | +- Run format gate: `cargo fmt --all -- --check` |
| 12 | +- Run lint gate: `cargo clippy --workspace --all-targets -- -D warnings` |
| 13 | +- Run test gate: `cargo test --workspace` |
| 14 | +- Run compile gate: `cargo check --workspace` |
| 15 | + |
| 16 | +## 3. Metadata and Docs |
| 17 | +- Verify each crate has: |
| 18 | + - `description` |
| 19 | + - `license` |
| 20 | + - `repository` |
| 21 | + - `homepage` |
| 22 | + - `documentation` |
| 23 | + - `keywords` |
| 24 | + - `categories` |
| 25 | + - `readme` |
| 26 | + - `rust-version` |
| 27 | +- Ensure crate `README.md` files exist and are current. |
| 28 | +- Ensure top-level `README.md` badges and links point to the live repository. |
| 29 | + |
| 30 | +## 4. Versioning and Dependency Alignment |
| 31 | +- Bump versions in crate manifests as needed. |
| 32 | +- For internal crate dependencies, include both `version` and `path`. |
| 33 | +- Validate dependency publish order from root to leaves: |
| 34 | + 1. `faultline_core` |
| 35 | + 2. `faultline_geometry` |
| 36 | + 3. `faultline_diff` |
| 37 | + 4. `faultline_sync` |
| 38 | + 5. `faultline_index` |
| 39 | + 6. `faultline_compute` |
| 40 | + 7. `faultline_agents` |
| 41 | + |
| 42 | +## 5. Publish Verification |
| 43 | +- Dry-run first-order crates: |
| 44 | + - `cargo publish --dry-run -p faultline_core` |
| 45 | + - `cargo publish --dry-run -p faultline_geometry` |
| 46 | +- For local WIP trees, if needed use `--allow-dirty` intentionally. |
| 47 | +- Note: dependent crate dry-runs may fail until upstream crates are actually published. |
| 48 | + |
| 49 | +## 6. Publish Execution |
| 50 | +- Publish in dependency order using `cargo publish -p <crate>`. |
| 51 | +- If crates.io returns `429 Too Many Requests`: |
| 52 | + - Wait until the exact retry timestamp from the error. |
| 53 | + - Retry only the failed crate. |
| 54 | + |
| 55 | +## 7. Post-publish Verification |
| 56 | +- Confirm visibility on crates.io: `cargo info <crate>` from outside workspace (for example `/tmp`). |
| 57 | +- Confirm docs.rs pages are building for all crates. |
| 58 | + |
| 59 | +## 8. Git and Release Artifacts |
| 60 | +- Commit final release docs/metadata updates. |
| 61 | +- Tag release: `git tag -a vX.Y.Z -m "FaultLine crates X.Y.Z release"` |
| 62 | +- Push branch and tag. |
| 63 | +- Create GitHub Release with notes and crate links. |
| 64 | + |
| 65 | +## 9. Follow-up |
| 66 | +- Open next milestone issue for patch release tasks. |
| 67 | +- Capture any publish incidents in this checklist. |
0 commit comments