Pack JSON
{
"schemaVersion": 1,
"generatedAt": "2026-06-17T22:59:02.903Z",
"status": "HANDOFFS_WAITING",
"label": "Handoffs Waiting",
"counts": {
"totalActions": 26,
"userActions": 17,
"secretActions": 9,
"readyForCodexReview": 0,
"uploadSlotsWithFiles": 1,
"phases": 7
},
"deployability": {
"status": "NO_GO_LIVE_MONEY",
"label": "No-Go Live Money",
"p0BlockerCount": 26
},
"releaseCandidate": {
"status": "INTERNAL_ALPHA_ONLY",
"label": "Internal Alpha Only"
},
"cloud": {
"status": "BLOCKED_ON_CLOUD_HANDOFFS",
"label": "Blocked On Cloud Handoffs",
"blockedCount": 6
},
"brief": {
"status": "WAITING_ON_HANDOFFS",
"label": "Waiting On Handoffs"
},
"actions": [
{
"id": "legal-review",
"phase": "1. Business Identity",
"severity": "P0",
"lane": "Business Legal",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.attorneyReviewStatus",
"uploadSlot": "legal-review",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not approved",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Attorney/accountant review approved for paid beta",
"userAction": "Mark Approved only after attorney/accountant review clears paid beta.",
"evidenceNeeded": "save billingRehearsal.attorneyReviewStatus; Upload evidence to legal-review if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Refresh policies, Stripe identity notes, support docs, release publisher metadata, and deployability preflight after the decision/evidence is saved.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "billing-live-mode",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.mode",
"uploadSlot": "stripe-screenshots",
"currentValueStatus": "Needs input",
"currentValueSummary": "test",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Billing rehearsal mode set to live for final money preflight",
"userAction": "Switch to live only after test-mode rehearsal, legal, support, and Stripe gates pass.",
"evidenceNeeded": "save billingRehearsal.mode; Upload evidence to stripe-screenshots if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "billing-backend-url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.backendBaseUrl",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Hosted billing backend HTTPS URL saved",
"userAction": "Enter the hosted billing backend HTTPS base URL.",
"evidenceNeeded": "save billingRehearsal.backendBaseUrl; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "billing-webhook-url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.webhookEndpointUrl",
"uploadSlot": "stripe-screenshots",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Stripe webhook HTTPS endpoint saved",
"userAction": "Enter the Stripe webhook endpoint URL after it is created.",
"evidenceNeeded": "save billingRehearsal.webhookEndpointUrl; Upload evidence to stripe-screenshots if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "customer-portal",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.customerPortalConfigured",
"uploadSlot": "stripe-screenshots",
"currentValueStatus": "Needs input",
"currentValueSummary": "No",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Customer Portal configured for cancellation, invoices, and payment methods",
"userAction": "Mark yes after Customer Portal cancellation, invoices, and payment methods are tested.",
"evidenceNeeded": "save billingRehearsal.customerPortalConfigured; Upload evidence to stripe-screenshots if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "env-stripe_secret_key",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: STRIPE_SECRET_KEY",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "STRIPE_SECRET_KEY=missing",
"requirement": "Deployment env has live Stripe secret key beginning with sk_live_",
"userAction": "Set STRIPE_SECRET_KEY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-stripe_webhook_secret",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: STRIPE_WEBHOOK_SECRET",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "STRIPE_WEBHOOK_SECRET=missing",
"requirement": "Deployment env has Stripe webhook signing secret beginning with whsec_",
"userAction": "Set STRIPE_WEBHOOK_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_stripe_price_pro_monthly",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_STRIPE_PRICE_PRO_MONTHLY",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_STRIPE_PRICE_PRO_MONTHLY=missing",
"requirement": "Deployment env has Stripe monthly Price ID beginning with price_",
"userAction": "Set NYRA_STRIPE_PRICE_PRO_MONTHLY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_billing_success_url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_BILLING_SUCCESS_URL",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_BILLING_SUCCESS_URL=missing",
"requirement": "Deployment env has HTTPS checkout success URL",
"userAction": "Set NYRA_BILLING_SUCCESS_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_billing_cancel_url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_BILLING_CANCEL_URL",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_BILLING_CANCEL_URL=missing",
"requirement": "Deployment env has HTTPS checkout cancel URL",
"userAction": "Set NYRA_BILLING_CANCEL_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_billing_return_url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_BILLING_RETURN_URL",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_BILLING_RETURN_URL=missing",
"requirement": "Deployment env has HTTPS Customer Portal return URL",
"userAction": "Set NYRA_BILLING_RETURN_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_license_api_token",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_LICENSE_API_TOKEN",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_LICENSE_API_TOKEN=missing",
"requirement": "Deployment env has long random license API token",
"userAction": "Set NYRA_LICENSE_API_TOKEN in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_license_signing_secret",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_LICENSE_SIGNING_SECRET",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_LICENSE_SIGNING_SECRET=missing",
"requirement": "Deployment env has long random license signing secret",
"userAction": "Set NYRA_LICENSE_SIGNING_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_android_download_ticket_secret",
"phase": "2. Price And Offer",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_ANDROID_DOWNLOAD_TICKET_SECRET",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_ANDROID_DOWNLOAD_TICKET_SECRET=missing",
"requirement": "Deployment env has long random Android APK download ticket secret",
"userAction": "Set NYRA_ANDROID_DOWNLOAD_TICKET_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Refresh the pricing model, Stripe product/price setup plan, marketing copy, checkout copy, and launch-site offer after values are saved.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "support-roundtrip",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Support Ops",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.supportInboxConfirmed",
"uploadSlot": "domain-email",
"currentValueStatus": "Needs input",
"currentValueSummary": "No",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Support inbox roundtrip confirmed",
"userAction": "Create the support inbox, send a test ticket, reply, and mark confirmed.",
"evidenceNeeded": "save billingRehearsal.supportInboxConfirmed; Upload evidence to domain-email if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "cloud-account",
"phase": "5. Cloud Command Center",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud.html",
"dashboardField": "cloudMigration.accountReady",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "No",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Cloudflare account ready",
"userAction": "Confirm the Cloudflare account that will host the dashboard and API.",
"evidenceNeeded": "save cloudMigration.accountReady; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Wire Cloudflare Pages/Worker/D1/R2 config, run cloud deploy preflight, and prepare sync without storing secrets.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "cloud-d1",
"phase": "5. Cloud Command Center",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud.html",
"dashboardField": "cloudMigration.d1DatabaseId",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "D1 database ID saved",
"userAction": "Paste the Cloudflare D1 database ID.",
"evidenceNeeded": "save cloudMigration.d1DatabaseId; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Wire Cloudflare Pages/Worker/D1/R2 config, run cloud deploy preflight, and prepare sync without storing secrets.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-worker-url",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.workerUrl",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Hosted mobile bridge Worker URL saved",
"userAction": "Enter the deployed HTTPS NyrA mobile bridge Worker URL.",
"evidenceNeeded": "save mobileBridge.workerUrl; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-secret-status",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.secretStatus",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Mobile bridge token secret configured",
"userAction": "Set the Worker bridge token secret and mark the mobile bridge secret status.",
"evidenceNeeded": "save mobileBridge.secretStatus; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-provider-secrets",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.providerSecretStatus",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Mobile bridge full swarm provider secrets configured",
"userAction": "Set OpenAI, Anthropic, Gemini, and Grok provider secrets for the deployed mobile bridge.",
"evidenceNeeded": "save mobileBridge.providerSecretStatus; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-support-r2",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.r2BucketName",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input (suggested default available)",
"currentValueSummary": "Suggested default: nyra-mobile-support-logs",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Mobile support-log R2 bucket saved",
"userAction": "Create and enter the SUPPORT_LOGS R2 bucket name for mobile diagnostics.",
"evidenceNeeded": "save mobileBridge.r2BucketName; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-android-r2",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.androidReleasesBucketName",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input (suggested default available)",
"currentValueSummary": "Suggested default: nyra-android-releases",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Android releases R2 bucket saved",
"userAction": "Create and enter the ANDROID_RELEASES R2 bucket name for hosted APK updates.",
"evidenceNeeded": "save mobileBridge.androidReleasesBucketName; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-apk-key",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.androidApkR2Key",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input (suggested default available)",
"currentValueSummary": "Suggested default: alpha/0.1.0-alpha.72/NyrA.apk",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Hosted Android APK route configured",
"userAction": "Upload the current APK to R2 and enter its object key.",
"evidenceNeeded": "save mobileBridge.androidApkR2Key; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-bundled-url",
"phase": "6. Release Trust",
"severity": "P0",
"lane": "Release Ops",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.bundledBridgeUrl",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Android paid-beta build points at stable bridge URL without bundled shared token",
"userAction": "Deploy the stable bridge, remove the shared bundled alpha token from paid-beta builds, then rebuild Android from verified bridge evidence.",
"evidenceNeeded": "save mobileBridge.bundledBridgeUrl; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Enable the selected signed/store-trusted path, regenerate release evidence, and keep paid beta blocked until installer trust is proven.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-phone-self-test",
"phase": "8. Other Launch Handoffs",
"severity": "P0",
"lane": "QA",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.lastPhoneSelfTest",
"uploadSlot": "phone-evidence",
"currentValueStatus": "Saved but failed review",
"currentValueSummary": "Failed evidence review 2026-06-16T05:27:51.911Z: surface=phone; passed=no; 7 pass / 4 warn / 0 fail; supportLogId=2026-06-16T05-27-52-391Z-dbe5c0c4-27b2-481b...",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Physical phone bridge self-test passed",
"userAction": "Run a phone bridge self-test against the deployed Worker and record the result.",
"evidenceNeeded": "save mobileBridge.lastPhoneSelfTest; Upload evidence to phone-evidence if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Route this blocker through the Today Command Brief and update the matching team lane after evidence is saved.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "signed-release",
"phase": "6. Release Trust",
"severity": "P0",
"lane": "Release Ops",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/release-package.html",
"dashboardField": "releasePackage.signingStatus",
"uploadSlot": "code-signing",
"currentValueStatus": "Needs input",
"currentValueSummary": "Unsigned internal alpha evidence only",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Paid beta installer is signed or store-trusted",
"userAction": "Upload or generate signed/store-trusted release evidence after the signing path is chosen.",
"evidenceNeeded": "save releasePackage.signingStatus; Upload evidence to code-signing if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Enable the selected signed/store-trusted path, regenerate release evidence, and keep paid beta blocked until installer trust is proven.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
}
],
"userActions": [
{
"id": "legal-review",
"phase": "1. Business Identity",
"severity": "P0",
"lane": "Business Legal",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.attorneyReviewStatus",
"uploadSlot": "legal-review",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not approved",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Attorney/accountant review approved for paid beta",
"userAction": "Mark Approved only after attorney/accountant review clears paid beta.",
"evidenceNeeded": "save billingRehearsal.attorneyReviewStatus; Upload evidence to legal-review if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Refresh policies, Stripe identity notes, support docs, release publisher metadata, and deployability preflight after the decision/evidence is saved.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "billing-live-mode",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.mode",
"uploadSlot": "stripe-screenshots",
"currentValueStatus": "Needs input",
"currentValueSummary": "test",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Billing rehearsal mode set to live for final money preflight",
"userAction": "Switch to live only after test-mode rehearsal, legal, support, and Stripe gates pass.",
"evidenceNeeded": "save billingRehearsal.mode; Upload evidence to stripe-screenshots if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "billing-backend-url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.backendBaseUrl",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Hosted billing backend HTTPS URL saved",
"userAction": "Enter the hosted billing backend HTTPS base URL.",
"evidenceNeeded": "save billingRehearsal.backendBaseUrl; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "billing-webhook-url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.webhookEndpointUrl",
"uploadSlot": "stripe-screenshots",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Stripe webhook HTTPS endpoint saved",
"userAction": "Enter the Stripe webhook endpoint URL after it is created.",
"evidenceNeeded": "save billingRehearsal.webhookEndpointUrl; Upload evidence to stripe-screenshots if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "customer-portal",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.customerPortalConfigured",
"uploadSlot": "stripe-screenshots",
"currentValueStatus": "Needs input",
"currentValueSummary": "No",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Customer Portal configured for cancellation, invoices, and payment methods",
"userAction": "Mark yes after Customer Portal cancellation, invoices, and payment methods are tested.",
"evidenceNeeded": "save billingRehearsal.customerPortalConfigured; Upload evidence to stripe-screenshots if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "support-roundtrip",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Support Ops",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.supportInboxConfirmed",
"uploadSlot": "domain-email",
"currentValueStatus": "Needs input",
"currentValueSummary": "No",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Support inbox roundtrip confirmed",
"userAction": "Create the support inbox, send a test ticket, reply, and mark confirmed.",
"evidenceNeeded": "save billingRehearsal.supportInboxConfirmed; Upload evidence to domain-email if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "cloud-account",
"phase": "5. Cloud Command Center",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud.html",
"dashboardField": "cloudMigration.accountReady",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "No",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Cloudflare account ready",
"userAction": "Confirm the Cloudflare account that will host the dashboard and API.",
"evidenceNeeded": "save cloudMigration.accountReady; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Wire Cloudflare Pages/Worker/D1/R2 config, run cloud deploy preflight, and prepare sync without storing secrets.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "cloud-d1",
"phase": "5. Cloud Command Center",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud.html",
"dashboardField": "cloudMigration.d1DatabaseId",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "D1 database ID saved",
"userAction": "Paste the Cloudflare D1 database ID.",
"evidenceNeeded": "save cloudMigration.d1DatabaseId; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Wire Cloudflare Pages/Worker/D1/R2 config, run cloud deploy preflight, and prepare sync without storing secrets.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-worker-url",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.workerUrl",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Hosted mobile bridge Worker URL saved",
"userAction": "Enter the deployed HTTPS NyrA mobile bridge Worker URL.",
"evidenceNeeded": "save mobileBridge.workerUrl; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-secret-status",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.secretStatus",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Mobile bridge token secret configured",
"userAction": "Set the Worker bridge token secret and mark the mobile bridge secret status.",
"evidenceNeeded": "save mobileBridge.secretStatus; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-provider-secrets",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.providerSecretStatus",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Mobile bridge full swarm provider secrets configured",
"userAction": "Set OpenAI, Anthropic, Gemini, and Grok provider secrets for the deployed mobile bridge.",
"evidenceNeeded": "save mobileBridge.providerSecretStatus; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-support-r2",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.r2BucketName",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input (suggested default available)",
"currentValueSummary": "Suggested default: nyra-mobile-support-logs",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Mobile support-log R2 bucket saved",
"userAction": "Create and enter the SUPPORT_LOGS R2 bucket name for mobile diagnostics.",
"evidenceNeeded": "save mobileBridge.r2BucketName; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-android-r2",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.androidReleasesBucketName",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input (suggested default available)",
"currentValueSummary": "Suggested default: nyra-android-releases",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Android releases R2 bucket saved",
"userAction": "Create and enter the ANDROID_RELEASES R2 bucket name for hosted APK updates.",
"evidenceNeeded": "save mobileBridge.androidReleasesBucketName; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-apk-key",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.androidApkR2Key",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input (suggested default available)",
"currentValueSummary": "Suggested default: alpha/0.1.0-alpha.72/NyrA.apk",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Hosted Android APK route configured",
"userAction": "Upload the current APK to R2 and enter its object key.",
"evidenceNeeded": "save mobileBridge.androidApkR2Key; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-bundled-url",
"phase": "6. Release Trust",
"severity": "P0",
"lane": "Release Ops",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.bundledBridgeUrl",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Android paid-beta build points at stable bridge URL without bundled shared token",
"userAction": "Deploy the stable bridge, remove the shared bundled alpha token from paid-beta builds, then rebuild Android from verified bridge evidence.",
"evidenceNeeded": "save mobileBridge.bundledBridgeUrl; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Enable the selected signed/store-trusted path, regenerate release evidence, and keep paid beta blocked until installer trust is proven.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-phone-self-test",
"phase": "8. Other Launch Handoffs",
"severity": "P0",
"lane": "QA",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.lastPhoneSelfTest",
"uploadSlot": "phone-evidence",
"currentValueStatus": "Saved but failed review",
"currentValueSummary": "Failed evidence review 2026-06-16T05:27:51.911Z: surface=phone; passed=no; 7 pass / 4 warn / 0 fail; supportLogId=2026-06-16T05-27-52-391Z-dbe5c0c4-27b2-481b...",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Physical phone bridge self-test passed",
"userAction": "Run a phone bridge self-test against the deployed Worker and record the result.",
"evidenceNeeded": "save mobileBridge.lastPhoneSelfTest; Upload evidence to phone-evidence if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Route this blocker through the Today Command Brief and update the matching team lane after evidence is saved.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "signed-release",
"phase": "6. Release Trust",
"severity": "P0",
"lane": "Release Ops",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/release-package.html",
"dashboardField": "releasePackage.signingStatus",
"uploadSlot": "code-signing",
"currentValueStatus": "Needs input",
"currentValueSummary": "Unsigned internal alpha evidence only",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Paid beta installer is signed or store-trusted",
"userAction": "Upload or generate signed/store-trusted release evidence after the signing path is chosen.",
"evidenceNeeded": "save releasePackage.signingStatus; Upload evidence to code-signing if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Enable the selected signed/store-trusted path, regenerate release evidence, and keep paid beta blocked until installer trust is proven.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
}
],
"secretActions": [
{
"id": "env-stripe_secret_key",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: STRIPE_SECRET_KEY",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "STRIPE_SECRET_KEY=missing",
"requirement": "Deployment env has live Stripe secret key beginning with sk_live_",
"userAction": "Set STRIPE_SECRET_KEY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-stripe_webhook_secret",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: STRIPE_WEBHOOK_SECRET",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "STRIPE_WEBHOOK_SECRET=missing",
"requirement": "Deployment env has Stripe webhook signing secret beginning with whsec_",
"userAction": "Set STRIPE_WEBHOOK_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_stripe_price_pro_monthly",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_STRIPE_PRICE_PRO_MONTHLY",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_STRIPE_PRICE_PRO_MONTHLY=missing",
"requirement": "Deployment env has Stripe monthly Price ID beginning with price_",
"userAction": "Set NYRA_STRIPE_PRICE_PRO_MONTHLY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_billing_success_url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_BILLING_SUCCESS_URL",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_BILLING_SUCCESS_URL=missing",
"requirement": "Deployment env has HTTPS checkout success URL",
"userAction": "Set NYRA_BILLING_SUCCESS_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_billing_cancel_url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_BILLING_CANCEL_URL",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_BILLING_CANCEL_URL=missing",
"requirement": "Deployment env has HTTPS checkout cancel URL",
"userAction": "Set NYRA_BILLING_CANCEL_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_billing_return_url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_BILLING_RETURN_URL",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_BILLING_RETURN_URL=missing",
"requirement": "Deployment env has HTTPS Customer Portal return URL",
"userAction": "Set NYRA_BILLING_RETURN_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_license_api_token",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_LICENSE_API_TOKEN",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_LICENSE_API_TOKEN=missing",
"requirement": "Deployment env has long random license API token",
"userAction": "Set NYRA_LICENSE_API_TOKEN in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_license_signing_secret",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_LICENSE_SIGNING_SECRET",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_LICENSE_SIGNING_SECRET=missing",
"requirement": "Deployment env has long random license signing secret",
"userAction": "Set NYRA_LICENSE_SIGNING_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_android_download_ticket_secret",
"phase": "2. Price And Offer",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_ANDROID_DOWNLOAD_TICKET_SECRET",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_ANDROID_DOWNLOAD_TICKET_SECRET=missing",
"requirement": "Deployment env has long random Android APK download ticket secret",
"userAction": "Set NYRA_ANDROID_DOWNLOAD_TICKET_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Refresh the pricing model, Stripe product/price setup plan, marketing copy, checkout copy, and launch-site offer after values are saved.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
}
],
"phases": [
{
"phase": "1. Business Identity",
"actions": [
{
"id": "legal-review",
"phase": "1. Business Identity",
"severity": "P0",
"lane": "Business Legal",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.attorneyReviewStatus",
"uploadSlot": "legal-review",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not approved",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Attorney/accountant review approved for paid beta",
"userAction": "Mark Approved only after attorney/accountant review clears paid beta.",
"evidenceNeeded": "save billingRehearsal.attorneyReviewStatus; Upload evidence to legal-review if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Refresh policies, Stripe identity notes, support docs, release publisher metadata, and deployability preflight after the decision/evidence is saved.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
}
]
},
{
"phase": "2. Price And Offer",
"actions": [
{
"id": "env-nyra_android_download_ticket_secret",
"phase": "2. Price And Offer",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_ANDROID_DOWNLOAD_TICKET_SECRET",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_ANDROID_DOWNLOAD_TICKET_SECRET=missing",
"requirement": "Deployment env has long random Android APK download ticket secret",
"userAction": "Set NYRA_ANDROID_DOWNLOAD_TICKET_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Refresh the pricing model, Stripe product/price setup plan, marketing copy, checkout copy, and launch-site offer after values are saved.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
}
]
},
{
"phase": "3. Billing And Stripe",
"actions": [
{
"id": "billing-live-mode",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.mode",
"uploadSlot": "stripe-screenshots",
"currentValueStatus": "Needs input",
"currentValueSummary": "test",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Billing rehearsal mode set to live for final money preflight",
"userAction": "Switch to live only after test-mode rehearsal, legal, support, and Stripe gates pass.",
"evidenceNeeded": "save billingRehearsal.mode; Upload evidence to stripe-screenshots if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "billing-backend-url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.backendBaseUrl",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Hosted billing backend HTTPS URL saved",
"userAction": "Enter the hosted billing backend HTTPS base URL.",
"evidenceNeeded": "save billingRehearsal.backendBaseUrl; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "billing-webhook-url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.webhookEndpointUrl",
"uploadSlot": "stripe-screenshots",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Stripe webhook HTTPS endpoint saved",
"userAction": "Enter the Stripe webhook endpoint URL after it is created.",
"evidenceNeeded": "save billingRehearsal.webhookEndpointUrl; Upload evidence to stripe-screenshots if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "customer-portal",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.customerPortalConfigured",
"uploadSlot": "stripe-screenshots",
"currentValueStatus": "Needs input",
"currentValueSummary": "No",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Customer Portal configured for cancellation, invoices, and payment methods",
"userAction": "Mark yes after Customer Portal cancellation, invoices, and payment methods are tested.",
"evidenceNeeded": "save billingRehearsal.customerPortalConfigured; Upload evidence to stripe-screenshots if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "env-stripe_secret_key",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: STRIPE_SECRET_KEY",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "STRIPE_SECRET_KEY=missing",
"requirement": "Deployment env has live Stripe secret key beginning with sk_live_",
"userAction": "Set STRIPE_SECRET_KEY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-stripe_webhook_secret",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: STRIPE_WEBHOOK_SECRET",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "STRIPE_WEBHOOK_SECRET=missing",
"requirement": "Deployment env has Stripe webhook signing secret beginning with whsec_",
"userAction": "Set STRIPE_WEBHOOK_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_stripe_price_pro_monthly",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_STRIPE_PRICE_PRO_MONTHLY",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_STRIPE_PRICE_PRO_MONTHLY=missing",
"requirement": "Deployment env has Stripe monthly Price ID beginning with price_",
"userAction": "Set NYRA_STRIPE_PRICE_PRO_MONTHLY in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_billing_success_url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_BILLING_SUCCESS_URL",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_BILLING_SUCCESS_URL=missing",
"requirement": "Deployment env has HTTPS checkout success URL",
"userAction": "Set NYRA_BILLING_SUCCESS_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_billing_cancel_url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_BILLING_CANCEL_URL",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_BILLING_CANCEL_URL=missing",
"requirement": "Deployment env has HTTPS checkout cancel URL",
"userAction": "Set NYRA_BILLING_CANCEL_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_billing_return_url",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_BILLING_RETURN_URL",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_BILLING_RETURN_URL=missing",
"requirement": "Deployment env has HTTPS Customer Portal return URL",
"userAction": "Set NYRA_BILLING_RETURN_URL in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_license_api_token",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_LICENSE_API_TOKEN",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_LICENSE_API_TOKEN=missing",
"requirement": "Deployment env has long random license API token",
"userAction": "Set NYRA_LICENSE_API_TOKEN in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
},
{
"id": "env-nyra_license_signing_secret",
"phase": "3. Billing And Stripe",
"severity": "P0",
"lane": "Payments Licensing",
"owner": "User",
"readiness": "Waiting on secret store",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "deployment secret store: NYRA_LICENSE_SIGNING_SECRET",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Secret missing",
"currentValueSummary": "Missing from environment or secret store",
"filesInSlot": "0",
"secretStatus": "NYRA_LICENSE_SIGNING_SECRET=missing",
"requirement": "Deployment env has long random license signing secret",
"userAction": "Set NYRA_LICENSE_SIGNING_SECRET in the deployment secret store or a temporary shell. Do not paste secrets into the dashboard.",
"evidenceNeeded": "Set this value in the deployment secret store or a temporary shell only; do not paste the raw value into dashboard files.",
"codexAfter": "Run billing and cloud billing checks, rehearse checkout/portal/webhooks in test mode, and keep live checkout disabled until all P0 gates close.",
"noGoRule": "Never paste raw secrets into the dashboard, CSV files, Markdown files, screenshots, or chat."
}
]
},
{
"phase": "4. Support And Domain",
"actions": [
{
"id": "support-roundtrip",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Support Ops",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.supportInboxConfirmed",
"uploadSlot": "domain-email",
"currentValueStatus": "Needs input",
"currentValueSummary": "No",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Support inbox roundtrip confirmed",
"userAction": "Create the support inbox, send a test ticket, reply, and mark confirmed.",
"evidenceNeeded": "save billingRehearsal.supportInboxConfirmed; Upload evidence to domain-email if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-worker-url",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.workerUrl",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Hosted mobile bridge Worker URL saved",
"userAction": "Enter the deployed HTTPS NyrA mobile bridge Worker URL.",
"evidenceNeeded": "save mobileBridge.workerUrl; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-secret-status",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.secretStatus",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Mobile bridge token secret configured",
"userAction": "Set the Worker bridge token secret and mark the mobile bridge secret status.",
"evidenceNeeded": "save mobileBridge.secretStatus; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-provider-secrets",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.providerSecretStatus",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Mobile bridge full swarm provider secrets configured",
"userAction": "Set OpenAI, Anthropic, Gemini, and Grok provider secrets for the deployed mobile bridge.",
"evidenceNeeded": "save mobileBridge.providerSecretStatus; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-support-r2",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.r2BucketName",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input (suggested default available)",
"currentValueSummary": "Suggested default: nyra-mobile-support-logs",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Mobile support-log R2 bucket saved",
"userAction": "Create and enter the SUPPORT_LOGS R2 bucket name for mobile diagnostics.",
"evidenceNeeded": "save mobileBridge.r2BucketName; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-android-r2",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.androidReleasesBucketName",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input (suggested default available)",
"currentValueSummary": "Suggested default: nyra-android-releases",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Android releases R2 bucket saved",
"userAction": "Create and enter the ANDROID_RELEASES R2 bucket name for hosted APK updates.",
"evidenceNeeded": "save mobileBridge.androidReleasesBucketName; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "mobile-bridge-apk-key",
"phase": "4. Support And Domain",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.androidApkR2Key",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input (suggested default available)",
"currentValueSummary": "Suggested default: alpha/0.1.0-alpha.72/NyrA.apk",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Hosted Android APK route configured",
"userAction": "Upload the current APK to R2 and enter its object key.",
"evidenceNeeded": "save mobileBridge.androidApkR2Key; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Update support macros, policy URLs, launch site links, billing return URLs, and marketing materials after the inbox/domain are confirmed.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
}
]
},
{
"phase": "5. Cloud Command Center",
"actions": [
{
"id": "cloud-account",
"phase": "5. Cloud Command Center",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud.html",
"dashboardField": "cloudMigration.accountReady",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "No",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Cloudflare account ready",
"userAction": "Confirm the Cloudflare account that will host the dashboard and API.",
"evidenceNeeded": "save cloudMigration.accountReady; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Wire Cloudflare Pages/Worker/D1/R2 config, run cloud deploy preflight, and prepare sync without storing secrets.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "cloud-d1",
"phase": "5. Cloud Command Center",
"severity": "P0",
"lane": "Cloud Platform",
"owner": "User",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud.html",
"dashboardField": "cloudMigration.d1DatabaseId",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "D1 database ID saved",
"userAction": "Paste the Cloudflare D1 database ID.",
"evidenceNeeded": "save cloudMigration.d1DatabaseId; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Wire Cloudflare Pages/Worker/D1/R2 config, run cloud deploy preflight, and prepare sync without storing secrets.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
}
]
},
{
"phase": "6. Release Trust",
"actions": [
{
"id": "mobile-bridge-bundled-url",
"phase": "6. Release Trust",
"severity": "P0",
"lane": "Release Ops",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.bundledBridgeUrl",
"uploadSlot": "cloud-handoff",
"currentValueStatus": "Needs input",
"currentValueSummary": "Not set",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Android paid-beta build points at stable bridge URL without bundled shared token",
"userAction": "Deploy the stable bridge, remove the shared bundled alpha token from paid-beta builds, then rebuild Android from verified bridge evidence.",
"evidenceNeeded": "save mobileBridge.bundledBridgeUrl; Upload evidence to cloud-handoff if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Enable the selected signed/store-trusted path, regenerate release evidence, and keep paid beta blocked until installer trust is proven.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
},
{
"id": "signed-release",
"phase": "6. Release Trust",
"severity": "P0",
"lane": "Release Ops",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/release-package.html",
"dashboardField": "releasePackage.signingStatus",
"uploadSlot": "code-signing",
"currentValueStatus": "Needs input",
"currentValueSummary": "Unsigned internal alpha evidence only",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Paid beta installer is signed or store-trusted",
"userAction": "Upload or generate signed/store-trusted release evidence after the signing path is chosen.",
"evidenceNeeded": "save releasePackage.signingStatus; Upload evidence to code-signing if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Enable the selected signed/store-trusted path, regenerate release evidence, and keep paid beta blocked until installer trust is proven.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
}
]
},
{
"phase": "8. Other Launch Handoffs",
"actions": [
{
"id": "mobile-bridge-phone-self-test",
"phase": "8. Other Launch Handoffs",
"severity": "P0",
"lane": "QA",
"owner": "User + Codex",
"readiness": "Waiting on user",
"dashboardPage": "pages/cloud-mobile-bridge.html",
"dashboardField": "mobileBridge.lastPhoneSelfTest",
"uploadSlot": "phone-evidence",
"currentValueStatus": "Saved but failed review",
"currentValueSummary": "Failed evidence review 2026-06-16T05:27:51.911Z: surface=phone; passed=no; 7 pass / 4 warn / 0 fail; supportLogId=2026-06-16T05-27-52-391Z-dbe5c0c4-27b2-481b...",
"filesInSlot": "0",
"secretStatus": "",
"requirement": "Physical phone bridge self-test passed",
"userAction": "Run a phone bridge self-test against the deployed Worker and record the result.",
"evidenceNeeded": "save mobileBridge.lastPhoneSelfTest; Upload evidence to phone-evidence if there is a document, screenshot, receipt, or confirmation that proves it.",
"codexAfter": "Route this blocker through the Today Command Brief and update the matching team lane after evidence is saved.",
"noGoRule": "Do not mark this cleared until the dashboard field or upload evidence proves it."
}
]
}
],
"outputs": {
"json": "docs/launch_command_center/handoff-action-pack.json",
"csv": "docs/launch_command_center/handoff-action-pack.csv",
"report": "docs/launch_command_center/HANDOFF_ACTION_PACK.md",
"dashboard": "docs/launch_command_center/pages/handoff-pack.html"
}
}