{
  "schemaVersion": 1,
  "generatedAt": "2026-06-17T22:58:56.176Z",
  "status": "HANDOFF_ROUTING_REHEARSAL_READY",
  "label": "Handoff Routing Rehearsal Ready",
  "noGoRule": "Synthetic rehearsal only. It proves routing behavior but does not clear real launch blockers.",
  "counts": {
    "totalQueueRows": 27,
    "userHandoffRows": 26,
    "readyForCodexReview": 26,
    "waitingOnUser": 0,
    "waitingOnSecretStore": 0,
    "codexRows": 1,
    "uploadSlotsWithFiles": 9
  },
  "readyForCodex": [
    {
      "Id": "legal-review",
      "Severity": "P0",
      "Lane": "Business Legal",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Attorney/accountant review approved for paid beta",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.attorneyReviewStatus",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Approved",
      "UploadSlot": "legal-review",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Mark Approved only after attorney/accountant review clears paid beta."
    },
    {
      "Id": "billing-live-mode",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Billing rehearsal mode set to live for final money preflight",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.mode",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "live",
      "UploadSlot": "stripe-screenshots",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Switch to live only after test-mode rehearsal, legal, support, and Stripe gates pass."
    },
    {
      "Id": "billing-backend-url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Hosted billing backend HTTPS URL saved",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.backendBaseUrl",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "https://billing.nyra.example",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Enter the hosted billing backend HTTPS base URL."
    },
    {
      "Id": "billing-webhook-url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Stripe webhook HTTPS endpoint saved",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.webhookEndpointUrl",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "https://billing.nyra.example/api/billing/webhook",
      "UploadSlot": "stripe-screenshots",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Enter the Stripe webhook endpoint URL after it is created."
    },
    {
      "Id": "customer-portal",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Customer Portal configured for cancellation, invoices, and payment methods",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.customerPortalConfigured",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Yes",
      "UploadSlot": "stripe-screenshots",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Mark yes after Customer Portal cancellation, invoices, and payment methods are tested."
    },
    {
      "Id": "env-stripe_secret_key",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has live Stripe secret key beginning with sk_live_",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: STRIPE_SECRET_KEY",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "STRIPE_SECRET_KEY=present",
      "NextStep": "Set STRIPE_SECRET_KEY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-stripe_webhook_secret",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has Stripe webhook signing secret beginning with whsec_",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: STRIPE_WEBHOOK_SECRET",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "STRIPE_WEBHOOK_SECRET=present",
      "NextStep": "Set STRIPE_WEBHOOK_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_stripe_price_pro_monthly",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has Stripe monthly Price ID beginning with price_",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_STRIPE_PRICE_PRO_MONTHLY",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_STRIPE_PRICE_PRO_MONTHLY=present",
      "NextStep": "Set NYRA_STRIPE_PRICE_PRO_MONTHLY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_billing_success_url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has HTTPS checkout success URL",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_BILLING_SUCCESS_URL",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_BILLING_SUCCESS_URL=present",
      "NextStep": "Set NYRA_BILLING_SUCCESS_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_billing_cancel_url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has HTTPS checkout cancel URL",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_BILLING_CANCEL_URL",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_BILLING_CANCEL_URL=present",
      "NextStep": "Set NYRA_BILLING_CANCEL_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_billing_return_url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has HTTPS Customer Portal return URL",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_BILLING_RETURN_URL",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_BILLING_RETURN_URL=present",
      "NextStep": "Set NYRA_BILLING_RETURN_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_license_api_token",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has long random license API token",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_LICENSE_API_TOKEN",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_LICENSE_API_TOKEN=present",
      "NextStep": "Set NYRA_LICENSE_API_TOKEN in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    }
  ],
  "waitingOnUser": [],
  "waitingOnSecretStore": [],
  "codexQueue": [
    {
      "Id": "current-screenshots",
      "Severity": "P1",
      "Lane": "Visual Assets",
      "Owner": "Codex",
      "Readiness": "Codex queued",
      "Requirement": "Launch visuals use current shipping app screenshots",
      "DashboardPage": "pages/visuals.html",
      "DashboardField": "visualProduction.finalScreenshotsApproved",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Yes",
      "UploadSlot": "product-screenshots",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Capture and approve current product screenshots after the shipping UI and billing/support flows are final."
    }
  ],
  "rows": [
    {
      "Id": "legal-review",
      "Severity": "P0",
      "Lane": "Business Legal",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Attorney/accountant review approved for paid beta",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.attorneyReviewStatus",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Approved",
      "UploadSlot": "legal-review",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Mark Approved only after attorney/accountant review clears paid beta."
    },
    {
      "Id": "billing-live-mode",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Billing rehearsal mode set to live for final money preflight",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.mode",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "live",
      "UploadSlot": "stripe-screenshots",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Switch to live only after test-mode rehearsal, legal, support, and Stripe gates pass."
    },
    {
      "Id": "billing-backend-url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Hosted billing backend HTTPS URL saved",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.backendBaseUrl",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "https://billing.nyra.example",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Enter the hosted billing backend HTTPS base URL."
    },
    {
      "Id": "billing-webhook-url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Stripe webhook HTTPS endpoint saved",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.webhookEndpointUrl",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "https://billing.nyra.example/api/billing/webhook",
      "UploadSlot": "stripe-screenshots",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Enter the Stripe webhook endpoint URL after it is created."
    },
    {
      "Id": "customer-portal",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Customer Portal configured for cancellation, invoices, and payment methods",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.customerPortalConfigured",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Yes",
      "UploadSlot": "stripe-screenshots",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Mark yes after Customer Portal cancellation, invoices, and payment methods are tested."
    },
    {
      "Id": "env-stripe_secret_key",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has live Stripe secret key beginning with sk_live_",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: STRIPE_SECRET_KEY",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "STRIPE_SECRET_KEY=present",
      "NextStep": "Set STRIPE_SECRET_KEY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-stripe_webhook_secret",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has Stripe webhook signing secret beginning with whsec_",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: STRIPE_WEBHOOK_SECRET",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "STRIPE_WEBHOOK_SECRET=present",
      "NextStep": "Set STRIPE_WEBHOOK_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_stripe_price_pro_monthly",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has Stripe monthly Price ID beginning with price_",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_STRIPE_PRICE_PRO_MONTHLY",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_STRIPE_PRICE_PRO_MONTHLY=present",
      "NextStep": "Set NYRA_STRIPE_PRICE_PRO_MONTHLY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_billing_success_url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has HTTPS checkout success URL",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_BILLING_SUCCESS_URL",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_BILLING_SUCCESS_URL=present",
      "NextStep": "Set NYRA_BILLING_SUCCESS_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_billing_cancel_url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has HTTPS checkout cancel URL",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_BILLING_CANCEL_URL",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_BILLING_CANCEL_URL=present",
      "NextStep": "Set NYRA_BILLING_CANCEL_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_billing_return_url",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has HTTPS Customer Portal return URL",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_BILLING_RETURN_URL",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_BILLING_RETURN_URL=present",
      "NextStep": "Set NYRA_BILLING_RETURN_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_license_api_token",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has long random license API token",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_LICENSE_API_TOKEN",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_LICENSE_API_TOKEN=present",
      "NextStep": "Set NYRA_LICENSE_API_TOKEN in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_license_signing_secret",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has long random license signing secret",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_LICENSE_SIGNING_SECRET",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_LICENSE_SIGNING_SECRET=present",
      "NextStep": "Set NYRA_LICENSE_SIGNING_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "env-nyra_android_download_ticket_secret",
      "Severity": "P0",
      "Lane": "Payments Licensing",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Deployment env has long random Android APK download ticket secret",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "deployment secret store: NYRA_ANDROID_DOWNLOAD_TICKET_SECRET",
      "CurrentValueStatus": "Secret present",
      "CurrentValueSummary": "Present in environment or secret store",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "NYRA_ANDROID_DOWNLOAD_TICKET_SECRET=present",
      "NextStep": "Set NYRA_ANDROID_DOWNLOAD_TICKET_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard."
    },
    {
      "Id": "support-roundtrip",
      "Severity": "P0",
      "Lane": "Support Ops",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Support inbox roundtrip confirmed",
      "DashboardPage": "pages/billing-rehearsal.html",
      "DashboardField": "billingRehearsal.supportInboxConfirmed",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Yes",
      "UploadSlot": "domain-email",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Create the support inbox, send a test ticket, reply, and mark confirmed."
    },
    {
      "Id": "cloud-account",
      "Severity": "P0",
      "Lane": "Cloud Platform",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "Cloudflare account ready",
      "DashboardPage": "pages/cloud.html",
      "DashboardField": "cloudMigration.accountReady",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Yes",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Confirm the Cloudflare account that will host the dashboard and API."
    },
    {
      "Id": "cloud-d1",
      "Severity": "P0",
      "Lane": "Cloud Platform",
      "Owner": "User",
      "Readiness": "Ready for Codex review",
      "Requirement": "D1 database ID saved",
      "DashboardPage": "pages/cloud.html",
      "DashboardField": "cloudMigration.d1DatabaseId",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "example-d1-id",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Paste the Cloudflare D1 database ID."
    },
    {
      "Id": "mobile-bridge-worker-url",
      "Severity": "P0",
      "Lane": "Cloud Platform",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Hosted mobile bridge Worker URL saved",
      "DashboardPage": "pages/cloud-mobile-bridge.html",
      "DashboardField": "mobileBridge.workerUrl",
      "CurrentValueStatus": "Needs input",
      "CurrentValueSummary": "Not set",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Enter the deployed HTTPS NyrA mobile bridge Worker URL."
    },
    {
      "Id": "mobile-bridge-secret-status",
      "Severity": "P0",
      "Lane": "Cloud Platform",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Mobile bridge token secret configured",
      "DashboardPage": "pages/cloud-mobile-bridge.html",
      "DashboardField": "mobileBridge.secretStatus",
      "CurrentValueStatus": "Needs input",
      "CurrentValueSummary": "Not set",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Set the Worker bridge token secret and mark the mobile bridge secret status."
    },
    {
      "Id": "mobile-bridge-provider-secrets",
      "Severity": "P0",
      "Lane": "Cloud Platform",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Mobile bridge full swarm provider secrets configured",
      "DashboardPage": "pages/cloud-mobile-bridge.html",
      "DashboardField": "mobileBridge.providerSecretStatus",
      "CurrentValueStatus": "Needs input",
      "CurrentValueSummary": "Not set",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Set OpenAI, Anthropic, Gemini, and Grok provider secrets for the deployed mobile bridge."
    },
    {
      "Id": "mobile-bridge-support-r2",
      "Severity": "P0",
      "Lane": "Cloud Platform",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Mobile support-log R2 bucket saved",
      "DashboardPage": "pages/cloud-mobile-bridge.html",
      "DashboardField": "mobileBridge.r2BucketName",
      "CurrentValueStatus": "Needs input (suggested default available)",
      "CurrentValueSummary": "Suggested default: nyra-mobile-support-logs",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Create and enter the SUPPORT_LOGS R2 bucket name for mobile diagnostics."
    },
    {
      "Id": "mobile-bridge-android-r2",
      "Severity": "P0",
      "Lane": "Cloud Platform",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Android releases R2 bucket saved",
      "DashboardPage": "pages/cloud-mobile-bridge.html",
      "DashboardField": "mobileBridge.androidReleasesBucketName",
      "CurrentValueStatus": "Needs input (suggested default available)",
      "CurrentValueSummary": "Suggested default: nyra-android-releases",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Create and enter the ANDROID_RELEASES R2 bucket name for hosted APK updates."
    },
    {
      "Id": "mobile-bridge-apk-key",
      "Severity": "P0",
      "Lane": "Cloud Platform",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Hosted Android APK route configured",
      "DashboardPage": "pages/cloud-mobile-bridge.html",
      "DashboardField": "mobileBridge.androidApkR2Key",
      "CurrentValueStatus": "Needs input (suggested default available)",
      "CurrentValueSummary": "Suggested default: alpha/0.1.0-alpha.72/NyrA.apk",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Upload the current APK to R2 and enter its object key."
    },
    {
      "Id": "mobile-bridge-bundled-url",
      "Severity": "P0",
      "Lane": "Release Ops",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Android paid-beta build points at stable bridge URL without bundled shared token",
      "DashboardPage": "pages/cloud-mobile-bridge.html",
      "DashboardField": "mobileBridge.bundledBridgeUrl",
      "CurrentValueStatus": "Needs input",
      "CurrentValueSummary": "Not set",
      "UploadSlot": "cloud-handoff",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Deploy the stable bridge, remove the shared bundled alpha token from paid-beta builds, then rebuild Android from verified bridge evidence."
    },
    {
      "Id": "mobile-bridge-phone-self-test",
      "Severity": "P0",
      "Lane": "QA",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Physical phone bridge self-test passed",
      "DashboardPage": "pages/cloud-mobile-bridge.html",
      "DashboardField": "mobileBridge.lastPhoneSelfTest",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Passed against synthetic bridge",
      "UploadSlot": "phone-evidence",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Run a phone bridge self-test against the deployed Worker and record the result."
    },
    {
      "Id": "signed-release",
      "Severity": "P0",
      "Lane": "Release Ops",
      "Owner": "User + Codex",
      "Readiness": "Ready for Codex review",
      "Requirement": "Paid beta installer is signed or store-trusted",
      "DashboardPage": "pages/release-package.html",
      "DashboardField": "releasePackage.signingStatus",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Signed paid beta rehearsal evidence uploaded",
      "UploadSlot": "code-signing",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Upload or generate signed/store-trusted release evidence after the signing path is chosen."
    },
    {
      "Id": "current-screenshots",
      "Severity": "P1",
      "Lane": "Visual Assets",
      "Owner": "Codex",
      "Readiness": "Codex queued",
      "Requirement": "Launch visuals use current shipping app screenshots",
      "DashboardPage": "pages/visuals.html",
      "DashboardField": "visualProduction.finalScreenshotsApproved",
      "CurrentValueStatus": "Saved",
      "CurrentValueSummary": "Yes",
      "UploadSlot": "product-screenshots",
      "FilesInSlot": "1",
      "SecretStatus": "",
      "NextStep": "Capture and approve current product screenshots after the shipping UI and billing/support flows are final."
    }
  ],
  "syntheticInputs": {
    "savedFields": [
      {
        "field": "decisions.businessName",
        "value": "NyrA Example LLC"
      },
      {
        "field": "decisions.entityPath",
        "value": "SC LLC"
      },
      {
        "field": "decisions.taxDecision",
        "value": "Accountant first"
      },
      {
        "field": "decisions.monthlyPriceCents",
        "value": "2500"
      },
      {
        "field": "decisions.hostedAiCap",
        "value": "300 hosted AI messages/month"
      },
      {
        "field": "decisions.domain",
        "value": "nyra.example"
      },
      {
        "field": "decisions.releaseChannel",
        "value": "Direct download beta"
      },
      {
        "field": "decisions.codeSigningDecision",
        "value": "Buy OV certificate"
      },
      {
        "field": "billingRehearsal.attorneyReviewStatus",
        "value": "Approved"
      },
      {
        "field": "billingRehearsal.mode",
        "value": "live"
      },
      {
        "field": "billingRehearsal.backendBaseUrl",
        "value": "https://billing.nyra.example"
      },
      {
        "field": "billingRehearsal.webhookEndpointUrl",
        "value": "https://billing.nyra.example/api/billing/webhook"
      },
      {
        "field": "billingRehearsal.customerPortalConfigured",
        "value": "Yes"
      },
      {
        "field": "billingRehearsal.supportInboxConfirmed",
        "value": "Yes"
      },
      {
        "field": "billingDeployment.storageHostDecision",
        "value": "Cloudflare Worker + D1"
      },
      {
        "field": "cloudMigration.accountReady",
        "value": "Yes"
      },
      {
        "field": "cloudMigration.dashboardDomain",
        "value": "command.nyra.example"
      },
      {
        "field": "cloudMigration.accessDecision",
        "value": "Cloudflare Access"
      },
      {
        "field": "cloudMigration.d1DatabaseId",
        "value": "example-d1-id"
      },
      {
        "field": "mobileBridge.lastPhoneSelfTest",
        "value": "Passed against synthetic bridge"
      },
      {
        "field": "releasePackage.signingStatus",
        "value": "Signed paid beta rehearsal evidence uploaded"
      },
      {
        "field": "visualProduction.finalScreenshotsApproved",
        "value": "Yes"
      }
    ],
    "uploadSlots": [
      {
        "slot": "llc-documents",
        "originalName": "nyra-example-llc-filing-receipt.pdf",
        "savedPath": "uploads/rehearsal/llc-filing-receipt.pdf"
      },
      {
        "slot": "legal-review",
        "originalName": "paid-beta-review-approval.pdf",
        "savedPath": "uploads/rehearsal/legal-review-approval.pdf"
      },
      {
        "slot": "stripe-screenshots",
        "originalName": "stripe-product-price-portal.png",
        "savedPath": "uploads/rehearsal/stripe-product-price-portal.png"
      },
      {
        "slot": "marketing-assets",
        "originalName": "hosted-ai-cap-disclosure.png",
        "savedPath": "uploads/rehearsal/hosted-ai-cap-disclosure.png"
      },
      {
        "slot": "cloud-handoff",
        "originalName": "cloudflare-command-center-handoff.pdf",
        "savedPath": "uploads/rehearsal/cloudflare-command-center-handoff.pdf"
      },
      {
        "slot": "domain-email",
        "originalName": "support-domain-roundtrip.png",
        "savedPath": "uploads/rehearsal/support-domain-roundtrip.png"
      },
      {
        "slot": "code-signing",
        "originalName": "code-signing-path-approval.pdf",
        "savedPath": "uploads/rehearsal/code-signing-path-approval.pdf"
      },
      {
        "slot": "product-screenshots",
        "originalName": "shipping-ui-screenshot.png",
        "savedPath": "uploads/rehearsal/shipping-ui-screenshot.png"
      },
      {
        "slot": "phone-evidence",
        "originalName": "synthetic-phone-self-test.txt",
        "savedPath": "uploads/rehearsal/phone-self-test.txt"
      }
    ],
    "secretPresenceFlags": [
      "NYRA_ANDROID_DOWNLOAD_TICKET_SECRET",
      "NYRA_BILLING_CANCEL_URL",
      "NYRA_BILLING_RETURN_URL",
      "NYRA_BILLING_SUCCESS_URL",
      "NYRA_COMMAND_TOKEN",
      "NYRA_LICENSE_API_TOKEN",
      "NYRA_LICENSE_SIGNING_SECRET",
      "NYRA_STRIPE_PRICE_PRO_MONTHLY",
      "STRIPE_SECRET_KEY",
      "STRIPE_WEBHOOK_SECRET"
    ]
  },
  "outputs": {
    "json": "docs/launch_command_center/handoff-routing-rehearsal.json",
    "csv": "docs/launch_command_center/handoff-routing-rehearsal.csv",
    "report": "docs/launch_command_center/HANDOFF_ROUTING_REHEARSAL.md",
    "dashboard": "docs/launch_command_center/pages/handoff-readiness.html"
  }
}
