| Worker | Profile production (VITE_FINANCE_NATIVE_PROFILE=production): tuturuuu-finance. Profile staging (default): the staging Worker name. workers_dev and preview URLs are off; the config declares no routes |
| Host | finance.tuturuuu.com (root mode, one host per profile; staging admits only its reserved staging host). The tuturuuu.com/finance mount is not part of this cutover |
| Bindings | ASSETS (worker-first, no SPA fallback) |
| Vars (production profile, names) | INTERNAL_WEB_API_ORIGIN, NEXT_PUBLIC_WEB_APP_URL, NEXT_PUBLIC_APP_URL, FINANCE_APP_URL, NEXT_PUBLIC_SUPABASE_URL; values live in cloudflare/native-profiles.json, never mixed with the staging profile |
| Secrets (names) | TUTURUUU_APP_COORDINATION_SECRET, SUPABASE_SECRET_KEY. The Worker refuses to serve without them |
| Build | bun turbo:local run build --filter=@tuturuuu/finance^..., then VITE_FINANCE_NATIVE_PROFILE=production bun run --cwd apps/finance build:cloudflare. finance-cloudflare.yaml builds the same profile and uploads the sealed finance-cutover-production-<sha> artifact; it never publishes |
| Routing | Attach only finance.tuturuuu.com/*; keep the Vercel CNAME and enable its proxy |
| Prior Vercel deployment | Not recorded in the repository. Capture the production deployment id, source SHA and the DNS record id, content, proxy state and TTL before the flip |