ci: split the release into a prepare step and a publish step so the changelog can be reviewed - #123
Conversation
…hangelog can be reviewed
|
Note graph_review_9000 · Splits the one-shot release script into prepare/publish/abort functions to insert a review checkpoint before pushing, with docs and mise tasks updated to match. At a glance
🧵 0 new · 0 open · 0 resolved this run · 0 declined 🟡 Needs verification / intentional (2)Rust/Async/Storage Footguns — publish's Test Coverage — No automated test file changed for the new prepare/publish/abort split; the description's manual scratch-clone walkthrough exercises the flow but there is no scripted test harness for scripts/release.sh in this diff or visible elsewhere in the repo. ⚪ N/A · ✅ PassStated Intent — Diff matches the stated intent precisely: prepare stops short of commit, publish re-derives and commits/tags/pushes, abort restores the file set — all as described, with no unrelated scope creep. Pipeline/Control-Step Invariants — Diff is entirely shell script/docs/mise config touching the release process; no plan pipeline or control-step code is touched. Template/Shape Engine — No template engine or shape inference files are touched by this change. Plan Composition/Model Routing — No plan-composition, ModelRouter, or provider/failover code is touched; the script only invokes existing plans (changelog_entry, compose_changelog) as opaque commands. Repo Conventions/Docs Parity — RELEASING.md and CLAUDE.md are updated in the same change to describe the new two-step flow, satisfying the docs-parity invariant for this user-facing (release process) behavior change. CLI Surface/Copy — New mise task descriptions and the prepare-step printed instructions are clear, consistent with existing task copy, and route to stderr/exit 1 for error paths as before; no stdout/exit-code contract issue found. |
mise run release:<level>used to bump, regenerate, infer the changelog snippets, commit, tag, and push in one go, so the inferred summary and migration prompt were published before anyone read them (v0.13.0 went out that way). The release is now two steps with the review in between.The flow
Cargo.tomlnames an already-tagged version, re-derives the tag message from the same facts prepare used (last tag, constants atHEAD, unreleased commits) rather than trusting a scratch file, re-runscompose_changelogso a snippet added or removed during the review reaches the page, then commitschore(release): vX.Y.Z, tags, and pushes.scripts/release.shis restructured into functions for this; the checks are unchanged. RELEASING.md and CLAUDE.md describe the new flow.Verification
End to end in a scratch clone of this branch with a bare throwaway origin and one
feat:commit on top of v0.13.0: prepare left exactlyCargo.toml,Cargo.lock,CHANGELOG.md,docs/docs.json,docs/changelog.mdx, anddocs/snippets/changelog/v0.13.1/modified with no commit; abort returned a clean tree; a second prepare plus a hand edit to the summary snippet, then publish with a stray file present was refused naming the file; publish without it produced thechore(release): v0.13.1commit, thev0.13.1tag withfile versions: config 1, plan 1, tool 1, store 1in its message, and the push to the throwaway origin.