Skip to main content
Nova (apps/nova) has native TanStack Start + Vite+ + Void source using @tuturuuu/start-bridge. The native source is present, but this packet does not cut over traffic. Rex owns route changes and must capture the immutable Vercel deployment ID before any cutover.

Worker configuration

  • Staging Worker: the staging Worker name (VITE_NOVA_NATIVE_PROFILE=staging).
  • Production Worker: tuturuuu-nova (VITE_NOVA_NATIVE_PROFILE=production).
  • Hosts: nova.tuturuuu.com, nova.ai.vn, and nova.tutur3u.com.
  • The Worker config declares the ASSETS static asset binding. Runtime Runtime names include TUTURUUU_APP_COORDINATION_SECRET, SUPABASE_SECRET_KEY, NEXT_PUBLIC_SUPABASE_URL, and NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY. Abuse guard uses service binding ABUSE_GUARD (tuturuuu-abuse-guard), secret ABUSE_GUARD_KEY_PEPPER, ABUSE_GUARD_FAMILIES=proxy, and optional ABUSE_GUARD_TIMEOUT_MS. Upstash credentials are no longer required. This packet records names only.
  • TUTURUUU_NOINDEX is 1 in staging and 0 in production.
  • Build from the app directory with bun run build:cloudflare. If workspace outputs are missing, run bun turbo:local run build --filter='@tuturuuu/nova^...' --concurrency=2 first.

Smoke probes

After Rex enables a candidate route, check each host and the public build identity:
Confirm the root hosts serve Nova, /nova works on tuturuuu.com, build-info reports the expected commit, and responses carry the intended cache and indexing policy. Probe only after the route owner provides the candidate URL or has authorized the host route.

Rollback

Rex must capture the prior Vercel deployment ID and URL before cutover. Rollback is to remove the Nova Worker route so the existing Vercel route serves traffic again. Do not rebuild or change application data during rollback. Keep the captured deployment available until the rollback window closes.

Local verification

Run bun run build:cloudflare from apps/nova. Runtime qualification is CI=true CI_SOURCE_SHA=$(git rev-parse HEAD) bun run test:runtime. The local runtime command currently fails under Node 22 because its .mjs suites import TypeScript config modules directly (ERR_UNKNOWN_FILE_EXTENSION); preserve the failure in the cutover evidence and require the CI runtime result before any route change.