feat: add guarded release workflow - #10
Merged
Merged
Conversation
add resumable preparation, post-merge publishing, lockstep versions, and changelog validation.
deduplicate release validation and remove redundant test assertions.
enforce the public version floor and make tag publication resumable. generate and approve release notes within the prepare command.
limit linux release artifacts and local bundles to appimage and deb.\n\nupdate staged asset validation and provenance expectations accordingly.
matt2e
approved these changes
Aug 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
implementation
This adds a maintainer-owned release state machine around the existing build, signing, staging, and promotion scripts.
just release-prepare X.Y.Zgenerates notes throughjust release-notes, prints them for explicit[y/N]approval, createsrelease/vX.Y.Zfrom currentorigin/main, synchronizes the app/CLI/plugin versions and Cargo lock entries, updatesCHANGELOG.md, runs focused validation, creates one conventional release commit, pushes the branch, and opens the release PR.just release-publish X.Y.Zresolves the merged release PR's squash commit through GitHub, verifies that commit is reachable fromorigin/main, revalidates its committed version/changelog state, creates an annotated tag on that exact commit, and pushes only the tag ref.release invariants
0.6.0-rc.1package.json, Tauri config, the Berd/berdctl/plugin Cargo manifests, and their Cargo lock entries move in lockstepfailure and recovery behavior
validation
just checkjust release-validate