Skip to main content

Release flow

Constellation cuts dated releases from develop into main.

Cutting a release

git fetch origin
git checkout -b release/YYYY-MM-DD origin/develop
npx tsx scripts/render-changelog.ts YYYY-MM-DD --title "Headline summary"
git add CHANGELOG.md .changeset/
git commit -m "release: YYYY-MM-DD - Headline summary"
git push -u origin release/YYYY-MM-DD
gh pr create --base main --title "Release YYYY-MM-DD: …"

Merge strategy: release PRs use merge commit, not squash, to preserve history and avoid spurious conflicts on subsequent releases.

Migration gate

The Verify Release Migrations CI job blocks release PRs if either staging (DEV_DATABASE_URL) or production (PROD_DATABASE_URL) is missing a migration that exists on the branch. Apply outstanding migrations to both before opening the release PR.

The gate is read-only — it never applies migrations. It refuses to let the merge through until the schema is caught up.

After merging to main

Back-merge main into develop immediately so the two branches stay in sync:

git checkout develop
git pull
git merge origin/main
git push

Hotfixes

For urgent production issues:

git fetch origin
git checkout -b hotfix/description origin/main
# fix + PR to main with merge commit
# then back-merge main into develop