| Worker | The staging identity is what void.config.ts emits. Deploy the production artifact under tuturuuu-tasks with the deploy-time name override; the config declares no routes and workers_dev is off |
| Host | tasks.tuturuuu.com (root mode). TUTURUUU_STAGING_HOSTS may add *.workers.dev or *.tuturuuu.com staging hosts. The apex and every other host get 404. The tuturuuu.com/tasks mount is not part of this cutover |
| Bindings | ASSETS (worker-first, html_handling: none, so /offline.html is read directly) |
| Vars (names) | NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY (read by the server at runtime), TUTURUUU_STAGING_HOSTS (staging only) |
| Secrets (names) | SUPABASE_SECRET_KEY, TUTURUUU_APP_COORDINATION_SECRET (required: 503 without them). Optional integrations keep the names in apps/tasks/env.example |
| Build | bun turbo:local run build --filter=@tuturuuu/tasks^..., then bun run --cwd apps/tasks build:cloudflare (vp build --configLoader runner). Output: dist/server/wrangler.json, dist/client |
| Routing | Attach only tasks.tuturuuu.com/* |
| Known gap | serwist/[path] (the offline service worker) stays on the Next build; the native shell does not register a service worker |
| Prior Vercel deployment | Not recorded in the repository. The release owner captures the production deployment id and DNS record before the flip |