Release checklist
This is a lightweight, operator-friendly checklist for releasing Mission Control.
Goal: no data loss and near-zero (ideally zero) user-visible downtime.
Before you release
- Confirm the target version/commit SHA.
- Review merged PRs since last release (especially DB schema/auth changes).
- Ensure CI is green on the target SHA.
- Confirm you have:
- access to the host(s)
- access to Postgres backups (or snapshots)
- a rollback plan
Database safety
- Verify migrations are backward compatible with the current running app (if doing rolling deploys).
- Take a backup / snapshot.
- If migrations are risky or not backward compatible, schedule a maintenance window.
Deploy (Docker Compose)
- Pull / build the new images (or update the repo checkout).
- Apply migrations (if you run them manually):
# example: if running backend locally on the host
cd backend
uv run alembic upgrade head
- Restart services with minimal disruption:
docker compose -f compose.yml --env-file .env up -d --build
Post-deploy verification
- Backend health:
GET /healthzreturns 200 - Backend readiness:
GET /readyzreturns 200 - Frontend loads (no console spam)
- Login works (local/clerk mode)
- Core flows work end-to-end:
- View board
- Create/update a task
- Post a comment
- Heartbeat check-in succeeds
Rollback (if needed)
- Roll back the app version (compose / images).
- If migrations were applied and are not reversible, rollbacks may require a DB restore.
Notes to keep this honest
- If you add a new operational dependency (e.g., redis), update:
README.md(overview + quickstart)docs/deployment/README.md- this checklist