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