Promote to staging runs every Friday after a 17:00 America/Toronto cutoff and
promotes the first-parent dev commit at the cutoff. To run it by hand, dispatch
it from Actions on dev: leave target empty for the current dev tip, cutoff
for the Friday cutoff commit, or supply a commit already on dev. Use dry_run=true to
validate without pushing. The workflow preserves branch pointers, runs a fresh
Full check on the exact candidate, rechecks ancestry, and fast-forwards
staging only after success. It waits for the staging build to publish.
A missing promotion token, failed check, diverged branches or refused push leaves
the pointer unchanged. If the pointer moved but publication failed, inspect the
linked Release run before retrying. Run summaries report the outcome. Never
force a promotion.
For a manual promotion, fetch the pointers, select a dev commit, confirm ancestry and dispatch Full check for that commit:
git fetch origin
SHA=$(git rev-parse origin/dev)
git log --oneline origin/staging..$SHA
git merge-base --is-ancestor $SHA origin/dev
gh workflow run ci-full.yml --ref dev -f ref=$SHAWait for that run to conclude successfully on $SHA, then move the pointer:
git push origin $SHA:stagingA non-fast-forward refusal requires investigating the branch history. Do not force-push or merge into a promotion pointer.
After validating the staging build, advance main to the same tested history:
git fetch origin
SHA=$(git rev-parse origin/staging)
git merge-base --is-ancestor $SHA origin/dev
git push origin $SHA:mainThis publishes a release candidate. Stable releases are dispatched explicitly
through Release on main. The release guard requires the commit to be on
staging, and staging commits to be on dev.
Roll up the changelog on a contribution branch and merge it to dev before
promotion:
make changelog VERSION=v0.2.0Promote that commit through staging to main. Never write a release-only commit directly onto either pointer. To roll back, publish a forward repair or select an earlier stable release as Latest; do not rewrite branch history.