Files
finance/docs/operations/beta-release-runbook.md
T
k1nq d582f15681 feat: add tests for import polling, login page, money utilities, and query keys
- Implemented tests for import polling functionality, ensuring correct behavior for active and terminal import statuses.
- Created tests for the login page, validating user interactions and error handling.
- Added unit tests for money utility functions, covering parsing, formatting, and summation of monetary values.
- Developed tests for query keys, ensuring proper scoping and invalidation roots.

chore: setup testing environment and configuration

- Added setup file for testing with Vitest and Testing Library.
- Configured TypeScript and Vite for the frontend project.
- Created Docker and Nginx configurations for local development and production environments.
- Established a PostgreSQL initialization script for setting up application roles.

docs: add README and environment configuration for infra

- Included README for the infra directory, detailing local development setup and service descriptions.
- Created an example environment configuration file for local development with placeholders for sensitive information.
2026-09-14 09:26:33 +05:00

2.6 KiB

Beta Release Runbook (closed beta)

Status: template. No release has been executed. Every unchecked item is still open; do not check items from this document without doing them.

Preconditions (launch gate)

  • One-shot Alembic migration applied from an empty database on staging.
  • Provider-neutral images built and tagged (API/worker: infra/docker/Dockerfile.backend; frontend: infra/docker/Dockerfile.frontend) and pushed to the registry.
  • Same-origin reverse proxy live at the edge with TLS + HSTS; /api/v1 verified end-to-end (login round-trip).
  • /healthz (API) and readiness probes wired to the platform; queue-depth and parser-failure metrics visible.
  • Backups configured and a restore drill passed (backup-and-restore.md).
  • KEK and secrets present in the secret manager; nothing secret in VITE_* or Git (ADR 0004).
  • Legal/privacy gate for RF data localization signed by qualified counsel — hard gate before any real invite.
  • Deletion workflow (30-day window, purge, ledger) reviewed against deletion-ledger.md.
  • Bank adapters enabled only per docs/parsers/private-fixture-gate.md; unsupported formats are not advertised.
  • Invites limited to an explicit allowlist; public registration stays off.

Launch sequence

  1. Deploy images; run migrations one-shot (alembic upgrade head), never on container start.
  2. Smoke test on production data (synthetic only): invite → register → create space/account → plan month → manual operation → import synthetic statement → review/confirm → close month → reports.
  3. Verify Mailpit-equivalent SMTP path against the production SMTP relay (invite email delivered).
  4. Enable email invites for the allowlist; monitor error rates, queue depth, parser failures for the first sessions.

Rollback

  • Redeploy previous image tags; migrations are forward-fix preferred.
  • Downgrade only where the migration is marked reversible in Alembic; otherwise restore from backup and re-apply the deletion ledger (see backup-and-restore.md).
  • Never roll forward a parser version without a review diff (ADR 0003).

Incidents

  • Financial-data suspected exposure: revoke sessions, rotate SESSION_SECRET, preserve audit events, follow the (to-be-written) privacy incident procedure.
  • Break-glass access: separate role, mandatory reason, short-lived grant, append-only audit — never through ordinary admin tooling.

Post-launch

  • Record adapter gate statuses and any layout-drift events.
  • Keep the restore drill quarterly; update backup-and-restore.md drill log.