Skip to content

feat: gate production on readiness - #10

Merged
vladbisceanu merged 1 commit into
growthpath-mailfrom
chore/6-production-hardening
Aug 26, 2026
Merged

feat: gate production on readiness#10
vladbisceanu merged 1 commit into
growthpath-mailfrom
chore/6-production-hardening

Conversation

@vladbisceanu

Copy link
Copy Markdown
Owner

Production deploys could start after a failed Prisma migration, the health endpoint did not check its dependencies, and growthpath-mail had no always-running PR gate or recovery proof.

This makes startup fail closed, turns /api/health into a bounded Postgres and Redis readiness check with the Railway commit SHA, and makes one stable Actions job run for every production PR. The job covers type-checking, all web test suites, and the production Docker build.

Railway is already configured with /api/health, a 300-second health timeout, and the Prisma pre-deploy command. PITR is enabled and a private sibling restore was validated with 25 public tables and 41 migrations before cleanup. No production row data or secrets were emitted.

Verification:

  • actionlint .github/workflows/test-web.yml
  • sh -n docker/start.sh
  • pnpm --filter=web typecheck
  • pnpm test:web:all (202 tests; disposable Postgres and Redis)
  • docker build --file docker/Dockerfile --tag usesend-issue-6:verify .
  • codex review --base origin/growthpath-mail (clean)

Deployment effect: merging triggers the production Railway service. There are no new Prisma migrations. The deploy will be the first to exercise the configured pre-deploy migration command and dependency-aware health gate.

Closes #6

@vladbisceanu
vladbisceanu merged commit 0e2d8d0 into growthpath-mail Aug 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant