# Commercial Platform Architecture

> **Architecture / contracts only.** No engines, migrations, APIs, or frontend portals are authorized by this document alone.  
> ADR: [ADR-023](adr/ADR-023.md)  
> Phase: `commercial-foundation` (+ patches **v1.1**, **v1.2**)  
> Contract family version: `commercial.v1.2`  
> **Status: ARCHITECTURE COMPLETE** (implementation remains future work)

---

## 1. Purpose

The **Commercial Platform Foundation** defines how every TorbatYar offering is registered as a product, packaged into bundles, priced, subscribed, licensed, recommended, extended, automated (by reference), asset-backed, metadata-annotated, policy-governed, versioned, and activated for a tenant business.

It is a **permanently extensible platform layer**. Future products, assets, metadata keys, and policies are **registry entries** — architecture must not require modification when they are added.

---

## 2. Ownership

| Concern | Owner | Storage (future) | Notes |
| --- | --- | --- | --- |
| Platform Product Registry | Core Platform (commercial) | `core_platform_db` (future) | Open-ended products |
| Capability Registry | Core Platform (commercial) | future | Reusable capabilities |
| Automation Catalog | Core Platform (commercial) | future | **Not** a product |
| Extension Registry | Core commercial vocabulary; runtime owner per extension | future | No ownership conflicts |
| Asset Registry | Core commercial vocabulary; payload owner per asset | future | **Not** product/bundle/capability |
| Metadata Registry | Core Platform (commercial) | future | Unlimited keys |
| Policy Engine contracts | Core Platform (commercial) | future | No engine in this wave |
| Dependency Graph | Core Platform (commercial) | future | Refs only |
| Universal references / versioning | Core Platform (commercial) | future | Stable IDs |
| Business Bundle catalog | Core Platform (commercial) | future | Lightweight refs |
| Pricing Catalog | Core Platform (commercial) | future | Independent of bundles |
| Subscription lifecycle | Core Platform (commercial) | future | Refs to Payment billing shells only |
| License & entitlement projection | Core Platform | existing + future | L1 commercial truth |
| Payment L2/L3 bundles & toggles | Payment | `payment_db` | [ADR-021](adr/ADR-021.md) |
| Experience / vertical L2 packs | Owning service | service DB | Referenced, not owned here |
| Marketplace domain | Marketplace product/service (when implemented) | marketplace DB | Independent; assets may declare marketplace readiness |
| Published Resources / Actions / Embed | Experience + owning services | per ADR-022 | Unchanged |
| Identity membership / SSO | Identity | `identity_access_db` | AuthN/AuthZ only |
| Accounting commercial contract | Accounting | accounting DB | Opaque contract refs |
| Admin commercial UI | Frontend (future) | — | Spec only |

**Forbidden ownership:**

- Frontend React as source of truth for products/bundles/pricing/assets
- Payment owning Platform Product / Asset / Policy registries or Pricing Catalog
- Experience owning subscription/license truth, Asset Registry, or foreign product connectors
- Bundles/assets embedding implementations or pricing amounts
- Treating Automation or Assets as PlatformProducts
- Hardcoding closed product/capability/asset/policy enums in Core architecture
- Marketplace owning Asset Registry vocabulary

---

## 3. Aggregate map (logical) — v1.2

```
CapabilityRegistry ◄──── PlatformProductRegistry ────► ExtensionRegistry
        ▲                        │
        │                        ├─ AutomationCatalog (packs; not products)
        │                        ├─ AssetRegistry (templates/themes/…; not products)
        │                        ├─ PolicyEngine (independent policies)
        │                        └─ MetadataRegistry (any target)
        │
        │              UniversalReference + RegistryVersioning
        │              DependencyGraph
        │
BusinessTypeCatalog
        │ recommends
        ▼
BusinessBundleVersion ──refs──► products, capabilities, automation packs,
                                extensions, assets, pricing, policies, plans
        │
        ▼
Subscription / License / Entitlement → ActivationPipeline (events)
```

---

## 4. Separation rules (normative)

1. **Pricing MUST NOT live inside bundle, product, or asset definitions** — pricing refs / policies only.
2. **Products, assets, capabilities, policies, metadata keys are open-ended** — registry entries only.
3. **Assets are not products, bundles, or capabilities.**
4. **Automation is a catalog, not a product.**
5. **Policies are independent** — attach by target bindings; no evaluation engine in this wave.
6. **Metadata** is unlimited-key additive JSON; ignore-unknown.
7. **Extensions** declare publisher + runtime owner; assets declare publisher + optional payload owner.
8. **Marketplace** is independent; products/assets declare compatibility or marketplace readiness only.
9. **Business Bundles remain lightweight** — references only.
10. **Universal `registry_object_id`** for cross-refs — no service-specific commercial SoT IDs.
11. **All registries support versions** — [registry-versioning.md](../reference/registry-versioning.md).
12. **Recommendations never activate**; **activation is event-contracted**.
13. **Frontend catalogs are generated** from docs/YAML SoT.
14. **Future products** require only registration + capabilities + docs + optional bundle mapping (v1.1 rules).
15. **Future assets/policies/metadata keys** require only registry entries — no Core architecture changes.

---

## 5. Compatibility with existing ADRs

| ADR | Compatibility |
| --- | --- |
| ADR-001 | Future commercial storage in Core DB only; no shared DB |
| ADR-002 | Admin UI consumes contracts; backend owns truth |
| ADR-003 | All commercial rows tenant-scoped when materialized |
| ADR-006 | Activation / subscription transitions use outbox events |
| ADR-008 / onboarding-4 | Workspace init remains Core/onboarding; commercial activation emits requests |
| ADR-020 / ADR-021 | Payment L1 gated by Core; L2/L3 stay in Payment; billing shells reserved |
| ADR-022 | Published Resources unchanged; assets/extensions may support presentation by ref |
| ADR-023 | Base + **v1.1** + **v1.2** amendments; architecture complete for commercial foundation layer |

---

## 6. Document map

| Document | Role |
| --- | --- |
| [product-catalog.md](../reference/product-catalog.md) | PlatformProduct aggregates |
| [product-registry.md](../reference/product-registry.md) | Dynamic product registry + marketplace compatibility |
| [capability-registry.md](../reference/capability-registry.md) | Reusable capabilities |
| [automation-catalog.md](../reference/automation-catalog.md) | Automation types & packs (not products) |
| [extension-registry.md](../reference/extension-registry.md) | Widgets, actions, embeds, … |
| [asset-registry.md](../reference/asset-registry.md) | Universal assets |
| [asset-lifecycle.md](../reference/asset-lifecycle.md) | Asset lifecycle states |
| [asset-marketplace-contracts.md](../reference/asset-marketplace-contracts.md) | Asset distribution / marketplace readiness |
| [metadata-registry.md](../reference/metadata-registry.md) | Generic metadata |
| [policy-engine-contracts.md](../reference/policy-engine-contracts.md) | Policy definitions |
| [policy-targets.md](../reference/policy-targets.md) | Policy target bindings |
| [registry-versioning.md](../reference/registry-versioning.md) | Cross-registry versions |
| [universal-reference-contracts.md](../reference/universal-reference-contracts.md) | Stable IDs |
| [dependency-graph.md](../reference/dependency-graph.md) | Requires / optional / conflicts / … |
| [business-bundle-contracts.md](../reference/business-bundle-contracts.md) | Bundles |
| [pricing-catalog.md](../reference/pricing-catalog.md) | Pricing |
| [subscription-contracts.md](../reference/subscription-contracts.md) | Subscriptions |
| [license-entitlement-contracts.md](../reference/license-entitlement-contracts.md) | License / entitlement |
| [activation-flow-contracts.md](../reference/activation-flow-contracts.md) | Activation events |
| [commercial-compatibility-matrix.md](../reference/commercial-compatibility-matrix.md) | Compatibility validation |

---

## 7. Explicit non-goals

- Backend feature engines, migrations, APIs, DB changes
- Frontend portals
- Implementing future products or Marketplace commerce
- Policy evaluation engine, tax/discount engines
- New roadmap implementation phases authorized by this patch alone

---

## 8. Architecture completeness

With v1 + v1.1 + **v1.2** documented, the **Commercial Platform Foundation** is declared:

### ARCHITECTURE COMPLETE

Implementation (storage, APIs, engines, admin UI, codegen) remains **future registered work** and is not authorized by accepting these contracts alone.
