# Runbook: Normal Deploy For a routine code change already merged to `main` on the canonical Gitea repo. 1. CI (`infra/ci/gitea-workflows/build-and-test.yml`) runs automatically: tests, image build/tag/push, staging deploy, staging smoke test. 2. Review the staging smoke test result and, ideally, poke around `https://staging.` yourself. 3. Promote to production (manual, deliberate): ```bash cd infra/scripts ./deploy-production.sh sha-<12-char-sha> # or a release tag, e.g. v1.3.0 ./production-smoke-test.sh ``` 4. Watch Grafana (`/grafana/`) for 10-15 minutes — error rates, Postgres connections, Lab Host memory — before considering the deploy "settled." 5. If anything looks wrong: `docs/RUNBOOK_ROLLBACK.md`.