docs/deploy/release-lines.md

Release lines and upgrades

The lines

BranchMajorRelease tagsRunner image tags
main5.xv5.y.zsha-<commit>, 5.x
4.x4.x, maintainedv4.y.zsha-<commit>, 4.x, main
nextthe next major, when one is being builtvN.0.0-rc.Msha-<commit>, next

Every release is a git tag on its line plus a GitHub release with notes, cut automatically on green CI. There is no npm package: an installation pins a commit, and the tag says which commits are releases. 4.x was cut from main at the last commit before 5.0.

Pin a release

  • A vocion-core submodule: git -C vocion-core fetch --tags && git -C vocion-core checkout v5.y.z, then commit the submodule.
  • vocion-stack: core_ref = "v5.y.z" (a branch is rejected).
  • The runner image: VOCION_RUNNER_IMAGE=ghcr.io/vocion/vocion-runner:sha-<that commit>. Whatever moves the app pin moves the runner pin in the same commit.

Upgrade

  1. Read the release notes between your tag and the new one.
  2. Move the pin (app and runner).
  3. Deploy. Migrations run before the new app starts; on vocion-stack the deploy does it, elsewhere run npm run db:migrate or infra/aws/apply-migrations.sh.
  4. Re-apply workspaces if the base pack or plugins you use changed: npm run workspace:apply -- <path> --project <slug>.

Roll back

Deploy the previous tag. Migrations only move forward and are written expand-then-contract, so the previous release runs on the newer schema. The 5.0 migrations are additive: returning to a 4.x pin works without a restore.

Bump automation

A bot follows what it is pointed at. Prefer a release over a branch head:

  • latest — the newest release on any line (the current major)
  • latest-4 — the newest 4.x release
  • a branch (main, 4.x, next) — every commit that lands, released or not

A bot that follows main moves a 4.x installation to 5.x on its next run. To stay on 4.x, see Migrating to 5.0.