Deployment
Release Checklist
Verify environments, migrations, auth, billing, and storage before real traffic.
Shared Gates
pnpm type-check
pnpm check:error
pnpm lint:ws
pnpm test:unit
pnpm apps:parity
pnpm build:cfThese do not prove external services work. Confirm .source/ is generated by install/dev/build, not hand-edited. Record whether SCENARIOS.md changed or already covers the journey and report unrun checks.
Production Readiness
- Back up remote D1, run
pnpm db:migrate:d1:remote, thenpnpm db:migrate:d1:status --strict. - Verify
DBandR2_BUCKET; runpnpm cf:typegen. - Configure Cloudflare Email Sending credentials and a verified domain.
- Set public variables at build time and server secrets on the Worker.
Manual and Automated Acceptance
- Bilingual home/docs/blog/legal, navigation, sitemap/robots; no dangling removed-page links.
- Actual production origin, OAuth callbacks, trusted origins; login, OTP, logout, expiry, onboarding, 2FA.
- Unauthenticated denial, user/admin boundaries, session-service errors distinct from login redirects; visible and escapable impersonation.
- Sandbox checkout, signed webhooks, renewals/cancellation/refunds, access and customer portals; bad gateways/products never falsely succeed.
- Own avatar/assets upload/download/delete, cross-user denial, missing storage, and empty lists.
- Contact, newsletter, and signed unsubscribe; no credentials/personal data leaked into clients or logs.
Use pnpm cf:preview to verify real Worker bindings. The current pnpm test:e2e:cf server does not prove native D1/R2 behavior; see Testing.
Do not seed development accounts in production, enable Better Auth testUtils, or bypass environment validation to hide missing config. Rehearse existing-database incremental upgrades on clones and keep build rollback/database restore plans.