Release process
CI gates (all required)
- Lint (Biome)
- Convention check (
scripts/check-conventions.ts— 23+ rules) - Typecheck (
pnpm turbo typecheck) - Tests (
pnpm turbo test) - Build (
pnpm turbo build) - Changeset present + user-facing summary
- OpenAPI drift check
- SDK drift check
- Service-pages drift check
- AI overview staleness
- Docs dead-link check
- PR title references Linear ticket
- Cross-link audit (concept pages have ≥3 related links, services ≥5)
Stages
- dev: auto-deploy on merge. Burns down dev DB nightly. Use for integration testing.
- staging: auto-promote from dev after 60 minutes of green dev. Soaked here ≥ 24h.
- prod: manual gate. Requires:
- Production-readiness checklist complete for any new service
- Alarms acknowledged for the deploy window
- On-call notified
- Rollback plan documented
Freeze windows
No prod deploys during:
- Mobile release branch cut (announced ≥ 48h in advance)
- High-traffic events (campaign launches, partner demos)
- The 30 minutes around a payment provider’s outage
Auto-rollback triggers
- Healthz fails on > 50% of new tasks for > 5 minutes → automated rollback to previous task definition
- Error rate spike > 5x baseline → page on-call + halt rollout
- Critical alarm fires within 30 minutes of deploy → page + halt