☰ MenuRoadmap

Redpoint Engine — Phase 10+ Roadmap (seat-business ordered)

Authored 2026-07-16 by the Fable orchestration session. Execute in a CLEAN session — this doc is the inheritance. Phases 1–9 are complete (erasure #56 being additively rebased at authoring time). Ordering is by seat-business leverage, not slice size.

Already shipped since this was scoped (do NOT re-plan)

Delivered non-roadmap wave — the editor program (2026-07-17, #65–#79)

An operator-requested wave that sits outside the seat-business roadmap below, delivered in full on main (a1cbd64), migrations 0034–0039 live:

Migration numbering

Superseded — live DB is at 0039 (2026-07-17). Actual assignments since this was authored: Phase 10 preview↔draft link = 0033; voice-note kind = 0034; Phase 11 commission = 0035 + arming-prep 0036; editor program = 0037 (ratings) / 0038 (specify-editor) / 0039 (supervision). Next free = 0040. Always probe supabase/migrations/ + open PRs at build time (rule 8).


Phase 10 — Tier-3 Seat Completion (headless review + return-origin) — ✅ COMPLETE (2026-07-17)

Shipped: 10a-1 review-player API (#60), 10b per-tenant return origin (#61), 10a-2 review/delivery handle in webhook payloads (#66), preview↔draft link (0033). The expocut pure-API full-loop e2e (below) is green. data.review/data.delivery handles are documented in docs/PARTNER-API.md §04. Goal: a fully-headless seat runs and renders the whole order→review→approve/cancel loop on its own front end from /api/v1 + webhook payloads alone. No product decision needed — pure unblock. BUILD FIRST.

Scope (design these together — one cohesive "headless review" concern):

Gate: an expocut (pure-API) e2e drives NEW→CLIENT_REVIEW→(REVISION→CLIENT_REVIEW)→APPROVED→DELIVERED where the partner-front simulation renders the current-cut preview and returns to its OWN origin using ONLY API responses + webhook payloads (asserts a review URL on draft.ready, HMAC-verified; zero engine-hosted page hits). Size L. Sub-items parallelize.


Phase 11 — Seat Revenue (platform_fee_bps wired) — 🟡 dry-run + arming-prep DONE; arming awaits operator ruling

Shipped: Option A partner-tenant commission, dry-run-first (#68, migration 0035 tenant_connect/partner_commissions, src/lib/partner-commission.ts, two-gate arming) + arming-prep (#71, migration 0036 — P&L ledger leg, EUR needs_fx_review holds, fee-unset surfacing). The code-side arming blockers are CLOSED. Live arming still needs the operator/accountant ruling (split + VAT topology, D1 below) before flipping the two gates. Option-B (white-label / merchant topology) build plan + decisions D1–D10 in docs/OPTION-B-BUILD-PLAN.md. Goal: the engine formally earns its cut on every licensed-seat job. ⚠ NEEDS OPERATOR DECISION before live arming (money topology — see below).

Scope:

Gate: a licensed-tenant job runs order→APPROVED→DELIVERED; ledger shows platform fee = round(gross × platform_fee_bps/1e4), editor payout unchanged; a sub-floor retention_days is rejected by the DB. Size M. Migration 0034.


Phase 12 — Show-Day Rapid Dispatch (surge variant of Phase 4)

Goal: the flagship expo/event seat survives a live show day — batch intake, rapid auto-assign, surge SLA — on one operator screen. ⚠ NEEDS OPERATOR DECISION: what "rapid" relaxes (QC skip/lighten? auto-assign vs manual? surge SLA numbers).

Scope:

Gate: a simulated show-day batch of N event orders is intaken + dispatched under surge SLA in one ops action, with the pushback prompt email firing exactly once (idempotent on retry). Size M. Should LEAD Phase 11 if an expo pilot is on the calendar — it's the demo that closes an expo partner.


Phase 13 — Adjacent-Vertical Launch Kit + Hosted-Seat Theming Maturity

Goal: stand up a new Tier-1 hosted+themed vertical seat from config + seed; make dark-branded hosted surfaces look finished.

Scope:

Gate: a fresh dark-branded vertical tenant seeded from the kit runs order→delivery on engine-hosted pages with zero src/ changes and no light-island/letterbox defect. Size M. Migration 0036 (seed only).


Phase 14 — Cross-Tenant Platform Analytics Console

Goal: one operator console for volume/SLA/margin/fee across all tenants + a partner-scoped slice. Scope: cross-tenant KPIs (throughput, SLA-breach %, editor quality, and post-P11 platform-fee revenue) as admin-gated views (respect p8-p9 §8 fare confidentiality — a tenant-scoped read never sees other tenants or fares). Optional redacted per-tenant KPI feed via /api/v1. Gate: the console reconciles per-tenant job counts + fee revenue against the ledger for a window; a tenant API key reads only its own redacted KPIs (cross-tenant + fare access 403/absent). Size M/L. Migration 0037 (reporting views). Wants P11's fee data — last by leverage.


Defer further / drop

Operator product decisions that GATE build

  1. platform_fee_bps model + money topology (P11): flat % vs per-package; AND does buyer money keep landing in Redpoint's Stripe (fee booked engine-side) or move to Connect destination/application-fee (buyer pays the partner, Redpoint takes an application_fee)? The latter re-plumbs checkout + webhooks. Decide before 0034.
  2. pushback_* email ruling (P12): does the client get an email when ops releases a pushback prompt / on boost-repool? Content + recipients.
  3. Surge rules (P12): what rapid-dispatch relaxes — QC, auto-assign, surge SLA figures.

Critical files