Assisted Public Launch Checklist
Source: docs/runbooks/assisted-public-launch-checklist.md
# Assisted Public Launch Checklist (A-Z)
Purpose: provide an executable checklist for getting a real customer from zero to first value in production using the current platform capabilities.
Scope:
- Assisted launch (founder/ops-led onboarding)
- Public API consumption by customer systems or AI agents
- Current billing operations (manual invoice lifecycle)
Out of scope:
- Self-serve signup
- Stripe checkout/subscriptions
---
## 1. Infrastructure Ready
- [ ] Render API service is deployed with pre-deploy migration command:
- `cd apps/api && npx prisma migrate deploy`
- [ ] Render Postgres is attached and `DATABASE_URL` is set.
- [ ] Web app is deployed and points to API (`API_URL`).
- [ ] Required API env vars are present:
- `DATABASE_URL`
- `NODE_ENV=production`
- `JWT_PRIVATE_KEY`
- `JWT_PUBLIC_KEY`
- `CLERK_SECRET_KEY`
- `KEY_HASH_SECRET`
- `ALLOW_API_KEY_FALLBACK=false`
- [ ] `GET /health` returns:
- HTTP 200
- `status` is `ok` or `degraded`
- `checks.migrations.pending` is `0` before launch
---
## 2. Security and Auth Ready
- [ ] Integration token path verified in target environment:
- `POST /api/auth/token/integration` with valid key returns bearer token.
- [ ] Revoked key path verified:
- revoked key returns `401`.
- [ ] Missing/invalid key path verified:
- invalid key returns `401`.
- [ ] Tenant route auth enforcement verified for high-risk routes:
- `/api/sima/*`
- `/api/jobs/*`
- `/api/upload`, `/api/catalog/upload`, `/api/ship/upload`, `/api/orders/upload`
---
## 3. Customer Onboarding Complete
- [ ] Tenant created (`POST /api/admin/tenants`) or via CLI fallback.
- [ ] Integration key issued (`POST /api/admin/tenants/:id/integration-keys`).
- [ ] Detector config confirmed (`POST /api/admin/tenants/:id/detectors`) or defaults accepted.
- [ ] Onboarding status captured (`GET /api/admin/tenants/:id/onboarding-status`).
- [ ] Customer received:
- integration key secret (one-time reveal),
- minimal API usage guide,
- first-upload template.
---
## 4. First-Value API Flow Validated
- [ ] Customer exchanges key for token:
- `POST /api/auth/token/integration`.
- [ ] Customer enqueues at least one job:
- TRADE: `POST /api/upload` (or `/api/sima/batch`)
- SHIP: `POST /api/ship/upload`
- ORDERS: `POST /api/orders/upload`
- [ ] Customer can poll job status:
- `GET /api/jobs/:id`
- [ ] Customer can read results:
- TRADE: `GET /api/sima/results`
- SHIP: `GET /api/ship/findings`
- [ ] One successful end-to-end artifact captured (request IDs/job IDs + timestamp).
---
## 5. Operational Guardrails Active
- [ ] `api-contract-gate` is configured as required branch protection status check on `main`.
- [ ] Branch protection review policy matches team size:
- Solo maintainer mode: required approvals = `0`
- Multi-maintainer mode: required approvals >= `1`
- [ ] Branch protection conversation-resolution policy matches team size:
- Solo maintainer mode: "Require conversation resolution before merging" = disabled
- Multi-maintainer mode: enabled
- [ ] Staging FORCE-RLS checks are green.
- [ ] Nightly self-hosted validation has at least one successful run in last 36 hours.
- [ ] Alert routing is configured for staging checks and nightly failures.
- [ ] Rollback levers are confirmed:
- tenant detector disable,
- `TRADE_DETECTOR_MODE=legacy` global fallback for trade pipeline.
---
## 6. Billing Reality Confirmed
- [ ] Billing model for customer is confirmed (gain-share/platform fee/manual terms).
- [ ] Invoice generation path is tested:
- `POST /api/admin/billing/invoices/generate`
- [ ] Issue/mark-paid/cancel paths are tested:
- `POST /api/admin/billing/invoices/:id/issue`
- `POST /api/admin/billing/invoices/:id/mark-paid`
- `POST /api/admin/billing/invoices/:id/cancel`
- [ ] Payment collection owner/process is documented externally.
Important:
- No Stripe automation exists in current API.
- Treat invoice lifecycle endpoints as internal billing operations.
---
## 7. Launch Decision Record
- [ ] Named owner signs off on technical readiness.
- [ ] Known gaps are listed with owners and dates.
- [ ] Rollback authority is explicit.
- [ ] Customer-facing support channel and response SLA are defined.
---
## Exit Criteria
The assisted launch is complete when all sections above are checked and one customer has completed token -> enqueue -> poll -> results in production.
For full public self-serve/API-agent GA, follow `P11-B` through `P11-H` in the execution plan.