# Releasing monetize
This is monetize's part of a release: what must be true of this repository before its
commit goes into a release set. The live release itself (the KVM gate host, the test2
ONE-box boot check, feeding the live boxes) is the coordinator's and runs by its own
RELEASE.md. Since the owner's 2026-10-25 GO, R3 and R4 are one live release; each
phase still gets its KVM gate and the test2 boot check.
`xtask/tests/release_checklist.rs` holds this page to the verbs that exist: every xtask
verb named below is monetize's, or that of the sibling named on its line.
## Release checklist
1. **One commit.** The release is cut from a merged `main`, fetched just before. Every
later step runs on that commit, from a clean clone with `git lfs pull` done.
2. **The full CI is green** on that commit: `cargo xtask ci` (not `--quick`). It runs the
lock check, the guests, the workspace tests, the detached workspaces (admin,
monetize-fast, build-thing), the 12 buy trials, the Lake benches, the lint gate
and, on a host with podman, both fast flows (`fast --product holger`, `fast --product gunnar`). Run the
toolchain steps in the pinned CI image (`ci3-…`), never `:live`.
3. **The locks follow.** `cargo xtask ci --only lockcheck` is green, and every nested
lock is at its manifest's versions. No lock is hand-edited to make it green.
4. **The guests are the release's.** `cargo xtask build-guests` builds the product,
vendor and cloud guests from this commit. Each guest that ships is signed (`.p7s`
under `guest_trust_roots`) and pinned by sha256 in private-monetize-ops' `solo.toml`;
`cargo xtask pins` (private-monetize-ops) is green.
5. **The buy flow still buys.** `cargo xtask trials` is green: the 12 buy trials on
`monetize_admin::linked()` with the signed guests, Stripe in test mode and UpCloud
on the mock.
6. **The score does not fall.** `cargo xtask score --out <file>` is recorded with the
release, and no area is lower than at the last release.
7. **The public tree builds.** `cargo xtask publish` writes the `public` branch and
compiles it; only the owner pushes it (`--push`).
8. **The open crates go out in order.** The coordinator publishes them with
`cargo xtask open-crates` (dwarves), first as `--live-dry-run`. A product that links
a crate from crates.io (Gunnar's lone clone) is re-pointed only after its crates are
published.
9. **The products follow.** `cargo xtask publish` (private-monetize-ops) releases each
product (`publish <product>`); it ends with the ONE box's plugin update,
`cargo xtask box` (private-monetize-ops) `plugins --apply`, followed until `done`,
before any estate is updated.
10. **Gate, boot check, then live.** The KVM gate and the test2 ONE-box boot check are
green for the set, and the coordinator's RELEASE.md takes it live. Nothing is
deployed live from a lane.
## After a release
- The release's commits and the score file are named in its handback.
- A red that was waved through (an environment red, a known flake) is named with its
reason, never left out.