Release Process
This document replaces ad-hoc release notes with a repeatable checklist. It covers semantic versioning, approvals, and the artifacts we ship for each tag.
Versioning & Tags
- We follow SemVer. While the project is pre-1.0, use
v0.<minor>.<patch>. Increment<minor>for roadmap milestones (Phase-level features) and<patch>for fixes. The first stable GA will be taggedv1.0.0per the roadmap. - Tags live on
main. Cut a release branch only when preparing a beta/RC that needs additional soak; otherwise cherry-pick critical fixes directly onto the tag and createv0.x.y+1. - Annotate every tag (
git tag -a v0.x.y -m "Runloop v0.x.y") sogit describeremains meaningful for debugging.
Changelog Rules
- CHANGELOG entries are generated from Conventional Commits. Before tagging,
aggregate commits since the previous release (e.g.,
git log --format='%s' <prev-tag>..HEAD) and group them byfeat,fix,perf,docs,chore, etc. - Manually summarize any noteworthy highlights (perf wins, security fixes) at the top of the release section. Include links to key PRs.
- If a change requires operator action (schema migration, new config flag), add an Action Required bullet with the exact commands/config snippets.
Release Approvals
- Every release requires sign-off from: (1) the release manager for the phase,
(2) a runtime or platform engineer covering
runloopd/runtime, and (3) the security reviewer listed inSECURITY.mdwhen capabilities or signing changes are included. - Before tagging, confirm CI is green on
mainand the following commands pass locally in release mode:cargo build --workspace --release,cargo test --workspace,cargo clippy --workspace -- -D warnings, and the perf harness documented in docs/perf.md. - Capture the manual verification steps (smoke tests, upgrade/downgrade, sample opening replay) in the release PR description; attach terminal output or TUI screenshots for traceability.
Artifacts
- Crates & Binaries: Publish the
runloopd,rlp, andagtopbinaries to the GitHub release along with SHA256 sums. - Debian packages: Build via
packaging/systemd/usingjust deb. Verify install on Debian 13/trixie (x86_64 and arm64), ensurerunloopd.servicestarts, and exercise anapt upgradefrom the prior release to confirm a running daemon is restarted automatically. - Containers/dev images: Build from
packaging/container/for CI and developer environments. Tag images with the exact git SHA. - Live ISO: Optional for minor releases; mandatory for public betas. The
scripts live under
packaging/live-build/. - Document where each artifact is uploaded (GitHub Releases, package repo, internal mirror) and include download instructions in the release notes.
Verification Checklist
cargo fmt --all,cargo clippy --workspace -- -D warnings,cargo test --workspacecargo build --workspace --release- Performance harness:
cargo test -p runloop-runtime cold_start_p50_under_40msandcargo bench -p runloop-runtime cold_starton the baseline hardware. - Security review: confirm signed agent bundles install and that capability denials emit KB audit records.
- Docs:
mdbook build docsand updateCHANGELOG.md,docs/index.md, any relevant specs (policy, openings, perf budgets) to reflect the release. - Tag and push:
git tag -a v0.x.y -m "Runloop v0.x.y" && git push origin v0.x.y.
Record the completion timestamp and signer in the release issue for auditing.