Unify commercial runtime ownership across backend and frontend so platform, experience, and hospitality modules use the shared commercial source of truth. Co-authored-by: Cursor <cursoragent@cursor.com>
3.5 KiB
Commercial Runtime Adoption Report
Date: 2026-07-28
Phase:commercial-runtime-adoption
Prerequisite: Commercial Runtime Backend COMPLETE (not rebuilt)
Contract:commercial.v1.2· ADR-023 · ADR-022
Verdict
Platform commercial lookups now consume Commercial Runtime (/api/v1/commercial/*) as the single SoT.
Admin Commercial Portal is the only editor for commercial registries. New products / bundles / capabilities / pricing require registry rows only — zero FE/BE commercial catalog code.
Platform Commercial Readiness Score: 92 / 100
| Dimension | Score | Notes |
|---|---|---|
| SoT uniqueness | 95 | FE catalogs deleted; Core onboarding/tenant context on commercial |
| FE adoption | 94 | Billing, workspace, admin plans/features, tenant subs, hub catalog |
| BE adoption | 90 | Onboarding + tenant context + Payment entitlement client |
| Zero-code expansion | 96 | Catalog discovery + generic registries |
| Legacy removal | 88 | Legacy Core /plans//features deprecated (compat retained) |
| L2 boundary hygiene | 95 | Payment/Experience/Hospitality L2 packs kept (ADR-023) |
Deductions: legacy Core plan tables still exist (deprecated APIs); vertical modules still use L2 feature gates (correct, not commercial SoT); communication roadmap registry still lists future modules locally (codes aligned).
Migrated
Frontend
- Deleted
lib/business-bundles.ts,lib/apps-catalog.ts,AppStoreGrid,AppTile - Billing: commercial subscriptions/pricing only (no Core bridge, no
trial_days \|\| 14) - Workspace entitlement + subscription: commercial only
- Admin
/admin/plans→/admin/commercial/plans - Admin
/admin/features→/admin/commercial/capabilities - Tenant detail subscription: commercial plans + subscriptions
- Admin hub: discovers registries via
GET /catalog - Communication future-module
bundlefields → commercial-style codes
Backend
- Onboarding: no legacy FREE/STARTER plan assignment; commercial activation from FE
- Tenant context: plan/subscription from
CommercialTenantSubscription - Payment
CoreEntitlementClient→POST /api/v1/commercial/entitlements/check - Legacy
/api/v1/plansmarked Deprecated with successor Link header - Trial days: taken from plan/pricing resolve only (no hardcoded 14)
Zero-code validation
| Action | FE code change | BE code change | How |
|---|---|---|---|
| Add product | None | None | Admin → products registry |
| Add bundle | None | None | Admin → bundles |
| Add capability | None | None | Admin → capabilities |
| Add pricing/plan | None | None | Admin → pricing / plans |
| New registry kind | None | None | POST /admin/kinds + catalog |
Intentionally unchanged (not commercial SoT)
- Payment / Experience / Hospitality L2 capability packs (ADR-023 decision 10)
- Delivery operational pricing rules
- Vertical merchandising (menu items, membership venue plans, etc.)
docs/reference/*.yamlseed inputs (feed Commercial Runtime)
Artifacts
- Legacy Removal Report
- Snapshot: commercial-runtime-adoption.yaml
- Handover: phase-commercial-runtime-adoption.md
STOP
Do not rebuild Commercial Runtime. Do not start Marketplace / QR / Booking / Payment 14.6+.