| Worker | tuturuuu-workspace |
| Hosts | First flip: workspace.tuturuuu.com only. tuturuuu.com paths stay on Web. |
| Artifact | workspace-cloudflare.yaml, job workspace-cutover-artifact (workspace-cutover-<sha>). Route-free: workers_dev false, preview_urls false, no routes. Dispatch on main; the job does not deploy. |
| Vercel rollback pin | none for apps/workspace (no Vercel project). Apex stays on the Web pin in Web apex pin; re-read that pin at flip time. |
| Packet | workspace-start-void |
| Smoke | unknown host answers 404; GET /api/v1/mobile/version is forwarded and answered by Web; logout-all clears tuturuuu_multi_session_store. Commands are in the packet’s gateway plan. |
| Coordination secret | TUTURUUU_APP_COORDINATION_SECRET = exactly Web’s signer value (the SUPABASE_SECRET_KEY value), plus the same SUPABASE_SECRET_KEY; never leave it unset |
| Deploy conditions | (a) #7981 (b84abea571) is in the main commit, that commit’s required workflows are green, and the artifact is built from that commit. (b) INTERNAL_WEB_API_ORIGIN unset and TUTURUUU_WEB_API_HOSTS unset on the production Worker. (c) Post-deploy smoke: unknown host answers 404, an /api/v1 GET is forwarded and answered by Web, logout-all clears tuturuuu_multi_session_store. (d) TTR_CSRF_MODE stays off enforce until Web itself is deployed with apps/web/src/lib/security/csrf.ts. |
| Required names | Build injection from vite.config.mts: NODE_ENV, optional TUTURUUU_BASE_PATH, NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_WEB_APP_URL. Worker var TUTURUUU_NOINDEX=0. Request env from start-bridge.config.ts: INTERNAL_WEB_API_ORIGIN and TUTURUUU_WEB_API_HOSTS, both unset in production. Runtime secrets: SUPABASE_SECRET_KEY, TUTURUUU_APP_COORDINATION_SECRET. |