Deployment and Ops Checklist
Context
This runbook provides a repeatable checklist for safe deployments and post-deployment verification.
Details
Pre-deployment:
- confirm tests are green;
- review configuration changes and environment variables;
- confirm wiki updates are included when operational behavior changed.
- when /speckit.review is used, preserve the generated terminal report as the review artifact;
- if direct PR publication is unavailable, post a concise manual PR note with verdict and blockers.
Deployment: - apply code and configuration updates; - validate service startup and expected logs; - verify no immediate alert regressions.
Post-deployment: - run smoke checks on critical workflows; - validate quota state updates and alert behavior; - verify no broken links or wiki drift for changed features. - verify FR and EN published content has no spelling or grammar errors.
Rollback trigger examples: - repeated workflow failures after deploy; - missing/invalid operational state updates; - alerting failures with impact on incident response.
TOTP environment preparation and verification
- Obtain explicit owner validation of the representative local version before merging to
main, following the development workflow. - Run the isolated validation commands, including persistent login → transaction → dashboard → logout, factor replacement and restart. A reset-on-navigation public demo cannot validate private persistence.
- Verify migration and concurrency on an isolated MariaDB database and inspect branch/PR CI results. SQLite checks and versioned workflow tests do not prove that a remote run passed.
- Provision independent persistent
SECRET_KEYandTOTP_ENCRYPTION_KEYthrough the environment, back up the encryption key separately from the database, and apply migration 0005. Do not record secret values as evidence. - Use the interactive activation/replacement procedure. Verify confirmation, password-only refusal, previous-session revocation and rejection of the consumed confirmation code.
- Verify actual Nginx/TLS and remote inaccessibility of port 8000. The versioned backend binding is
127.0.0.1:8000:8000;AUTH_PROXY_HOPS=0is the default. Enable1only for a verified single trusted proxy, with origin/protocol forwarding and no host trust. - Check startup fails closed for invalid schema, factor or keys; check HTTPS, Secure/HttpOnly/SameSite=Lax cookies, CSRF-protected POST logout, and authentication responses without caching.
- Branch, PR and manual workflow validation must not deploy; deployment is restricted to successful checks on a push to
main. Do not infer production state from that configuration.
Rollback: preserve schema and factors. After activation, deny private access rather than exposing a version without TOTP. Diagnose and fix forward; unreadable keys or databases do not authorize a bypass. Retain administrative server access independent of the phone; without it, recovery requires hosting support.
See the activity report for historical results and their limits, and the non-published feature follow-up for implementation milestones.