Repository navigation
ci: lock communique, so a release stops needing a human - #26
Conversation
📝 WalkthroughWalkthroughThe mise configuration pins ChangesTooling version management
Estimated code review effort: 1 (Trivial) | ~2 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryPins communique 1.2.4 for release-note generation.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains. Important Files Changed
Reviews (2): Last reviewed commit: "ci: lock communique, so a release stops ..." | Re-trigger Greptile |
communique rewrites the release body in the enhance-release-notes job, and 1.2.3 cleared a draft release's tag_name while doing it. GitHub then renames the draft to `untagged-<hash>`, the attach step fails with "release not found", and the version publishes to crates.io with no GitHub release behind it — so `github:jdx/tak@<version>` 404s until somebody notices. v0.0.3, v0.0.4 and v0.0.5 each shipped that way and were repaired by hand. jdx/communique#241 fixed it in 1.2.4, but `latest` kept resolving to 1.2.3 regardless: on v0.0.4's run 1.2.4 was 23.68 hours old against mise's 24-hour minimum_release_age, and on v0.0.5's run mise-action's cache still held a version list from before it existed. Locked rather than pinned in mise.toml. The lockfile carries checksums and attestation provenance for all six platforms, which a version string does not, and `mise lock` is the ordinary way to move it. MISE_LOCKED on the job makes a stale lockfile a hard failure rather than a quiet re-resolve — without it the pin could drift back and nobody would see. Verified in a clean environment, which is what CI has: MISE_LOCKED=1 mise install → communique@1.2.4 ✓ installed mise ls --current → communique 1.2.4 mise.toml latest Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3c71cca to
e62cd02
Compare
## 🤖 New release * `asset-picker`: 0.0.1 -> 0.0.2 (✓ API compatible changes) * `tak-cli`: 0.0.5 -> 0.0.6 (✓ API compatible changes) <details><summary><i><b>Changelog</b></i></summary><p> ## `asset-picker` <blockquote> ## [0.0.2](https://github.com/jdx/tak/compare/0.0.1..0.0.2) - 2026-08-02 ### 📚 Documentation - replace experimental disclaimers with pre-v1 warnings by [@jdx](https://github.com/jdx) in [#34](#34) <!-- generated by git-cliff --> </blockquote> ## `tak-cli` <blockquote> ## [0.0.6](https://github.com/jdx/tak/compare/0.0.5..0.0.6) - 2026-08-02 ### 🚀 Features - make the runner class a setting by [@jdx](https://github.com/jdx) in [#25](#25) ### 📚 Documentation - add the tak documentation site by [@jdx](https://github.com/jdx) in [#28](#28) - replace experimental disclaimers with pre-v1 warnings by [@jdx](https://github.com/jdx) in [#34](#34) - explain project adoption by [@jdx](https://github.com/jdx) in [#35](#35) - replace experiment framing by [@jdx](https://github.com/jdx) in [#37](#37) ### 🔍 Other Changes - lock communique, so a release stops needing a human by [@jdx](https://github.com/jdx) in [#26](#26) <!-- generated by git-cliff --> </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/). <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Version and changelog-only changes; no application logic modified in this PR. > > **Overview** > **Automated release** via release-plz: bumps **`tak-cli`** from `0.0.5` to **`0.0.6`** and workspace crate **`asset-picker`** from `0.0.1` to **`0.0.2`**, with matching updates in **`Cargo.lock`** and the path dependency version in root **`Cargo.toml`**. > > Adds git-cliff **changelog** entries for **0.0.6** (root) and **asset-picker 0.0.2**, documenting already-merged work— notably **runner class as a setting**, docs site and pre-v1 messaging, and **communique** lockfile changes—without introducing new runtime code in this diff. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit be8b102. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
The last three releases each shipped broken and were repaired by hand. This stops that.
Locked via
mise.lockrather than pinned inmise.toml.What happens
communique rewrites the release body in
enhance-release-notes. Version 1.2.3 cleared the draft'stag_namewhile doing it, so GitHub renamed the draft:The next job ran
gh release upload v0.0.4 …and gotrelease not found. Eight built binaries with nowhere to attach, on a version already published to crates.io — sogithub:jdx/tak@0.0.4404s for everyone until someone notices.The job is
continue-on-error: true, so it reported success every time while breaking a downstream job — the failure always surfaced two jobs later, pointing at the upload.Why
latestdid not save usjdx/communique#241 fixed it in 1.2.4.
lateststill resolved to 1.2.3 on both subsequent releases:minimum_release_age. Missed by ~19 minutes.Why the lockfile rather than a version in mise.toml
mise.tomlstill sayslatest;mise.lockdecides what that means. That buys three things a version string does not:mise lockas the ordinary, reviewable way to move it — the same mechanism every other repo in the fleet already uses.MISE_LOCKED: "1"on the job, so a stale lockfile is a hard failure rather than a quiet re-resolve. Without it the pin could drift back and nobody would see.A short comment in
mise.tomlsays so, sincelatestotherwise reads as floating.Verified
Locally
MISE_LOCKEDtrips over unrelated tools in my own global config, so I tested with a cleanHOME— which is what CI has:The lockfile resolves
latestto 1.2.4 exactly as intended.zizmor at
--persona=pedanticreports the same 11 findings on this branch as onorigin/main— none added.Worth considering separately
continue-on-error: trueon that job is why this was invisible three times. The intent — do not fail a release because notes generation hiccups — is right, but it also swallows "notes generation broke the release". Re-asserting the tag after the enhance step would make the workflow correct regardless of which communique version mise hands it. Not in this PR; say the word.🤖 Generated with Claude Code