Releasing and Changelog Guide
This project follows Semantic Versioning and keeps a human-focused changelog.Versioning Rules
- Use SemVer: MAJOR.MINOR.PATCH (tag format:
vX.Y.Z). - Breaking changes:
- While the project is on the
v0.xline: bump MINOR. - After the project graduates off the
v0.xline: bump MAJOR.
- While the project is on the
- Features: bump MINOR.
- Fixes/docs-only releases: bump PATCH.
Changelog Format (Predefined)
Use this structure for each release entry:- Newest first.
- Use only the sections that apply.
- Short, user-facing bullets in past tense.
- Dates are UTC in YYYY-MM-DD.
Release Process (Best-Practice Sequence)
This sequence follows typical maintainer workflows: verify state, prepare release notes, update versions, tag, push, then publish a GitHub Release.0) Pre-flight checks (clean repo, sync tags)
- Ensure the working tree is clean and the branch is up to date.
- Make sure you have all remote tags locally before picking the next version.
1) Determine the next version + release name
- Decide
vX.Y.Zusing the SemVer rules above. - Choose a short suggested name for the release title (e.g., “Safari Login Flow”).
- Title format for GitHub Release:
vX.Y.Z - Suggested Name.
2) Draft the changelog entry (authoritative notes)
- Add a new entry to the top of
CHANGELOG.mdwith today’s UTC date. - Summarize user-facing changes in 2–6 bullets.
- Keep language past tense and user-focused.
3) Bump version strings in code
Update release version metadata:- root
Cargo.tomlworkspace.package.version
4) Verify and commit the release prep
- Keep release prep changes in a dedicated commit.
- The release-assets preflight confirms archive packaging before publishing a GitHub Release.
- Include the npm smoke lane so user-owned global-prefix installs stay verified before release.
- Include the Homebrew smoke lane so the tap formula still installs the Rust-primary binary.
5) Create an annotated tag for the release commit
- Annotated tags are recommended for releases and are the best practice (they store metadata like tagger, date, and message).
6) Push commits and the new tag
- Push the tag explicitly to avoid conflicts with existing tags.
gh release createcan auto-create a tag if it doesn’t exist; using--verify-tagensures you only release a tag you already created and pushed.- If you let
gh release createauto-create a tag, fetch tags afterward to sync locally:git fetch --tags origin. - If you do let it auto-create a tag, use
--target <branch|sha>to pin the release to the desired commit. si orbit github release createis stricter: it checks the remote tag first, creates the tag ref only when--target <sha>is provided, and otherwise fails clearly.
7) Prepare release notes and publish release
If you need a quick summary of commits since the last release:CHANGELOG.md). Use the changelog and commit history as inputs, then write a concise, user-facing summary of what changed since the last published GitHub Release.
Option A: Use the changelog entry as the release body.
- Extract the new
vX.Y.Zsection intorelease-notes.md(manual or script). - Create the release with a title and notes file:
- If the tag is not pushed yet, use:
- Equivalent
ghfallback:
--notes-from-taguses the annotated tag message when present; otherwise it falls back to the commit message. Option C: Use GitHub auto-generated release notes and prepend highlights.
--verify-tagaborts if the tag doesn’t already exist on the remote.--generate-notesuses GitHub’s Release Notes API and can be combined with--notes.- Add
--notes-start-tag vA.B.Cto define the start tag for generated notes when needed. - Add
--fail-on-no-commitsif you want to prevent duplicate releases when there are no new commits.
8) Verify the published release
- Confirm title, notes, and tag target are correct.
- Optional: if your repo uses release attestations, run
gh release verify vX.Y.Z.
9) Verify automated CLI release assets
When a GitHub Release is published, workflow.github/workflows/cli-release-assets.yml
builds and uploads CLI archives automatically, then:
- publishes npm package
@aureuma/si(whenNPM_TOKENsecret is configured) - updates Homebrew tap formula in
Aureuma/homebrew-si(whenHOMEBREW_TAP_PUSH_TOKENis configured, or by fallback toGH_PAT_AUREUMAwhen that token has tap push access) - verifies release assets + npm + Homebrew sync in a final gate job
- runs a macOS Homebrew smoke install lane through
si build installer smoke-homebrew
linux/amd64linux/arm64linux/armv7darwin/amd64darwin/arm64
si_<version>_linux_amd64.tar.gzsi_<version>_linux_arm64.tar.gzsi_<version>_linux_armv7.tar.gzsi_<version>_darwin_amd64.tar.gzsi_<version>_darwin_arm64.tar.gzchecksums.txt
- The workflow validates that the workspace
Cargo.tomlversion matches the release tag. - The workflow uses
si build self assetsas the single build path andsi build self verifyas the local archive verification path before upload. - A failed workflow means release notes/tag were published, but binary assets were not fully attached.
- npm verification now includes a real installed-launcher check against the published release assets, not just registry visibility.
- Use
si build npm publish --version vX.Y.Z --dry-runfor local npm publish rehearsal. - Use
si build npm vault --version vX.Y.Zfor vault-backed publish (default key:NPM_GAT_AUREUMA_VANGUARDA). - Use
si build homebrew core --version vX.Y.Z --output packaging/homebrew-core/si.rbto refresh core-submission formula metadata.
10) Verify repo-boundary stability for Viva integrations
When a release changessi viva, Viva-related settings, or shared orchestration/config behavior, validate the adjacent Viva repo before closing the release:
- Viva should follow the same release discipline: tag/version validation, asset verification, and CI green before publishing.
- Prefer
si orbit github release create Aureuma/viva ...for Viva releases so the GitHub release flow stays operationally consistent across the stack.
Tagging Rules
- Use annotated tags:
git tag -a vX.Y.Z -m "vX.Y.Z" <commit>. - Tags should point at the release commit that includes the changelog update.
- Push tags explicitly:
git push origin vX.Y.Z.
Release Notes Style
- Lead with 2–4 key changes.
- Balance Added/Changed/Fixed where possible.
- Keep tone concise and user-focused.

