# Commercial Dependency Graph > **Architecture / contracts only.** > Contract version: `commercial-dependency.v1` > Used by: Products, Capabilities, Bundles, Automation Packs, Extensions --- ## 1. Purpose A unified **dependency graph** expresses relationships between commercial entities without embedding implementations. --- ## 2. Node kinds | `node_kind` | Code space | | --- | --- | | `product` | `product_code` | | `capability` | `capability_code` | | `bundle` | `bundle_code` | | `automation_pack` | `automation_pack_code` | | `extension` | `extension_code` | | `pricing_item` | `pricing_item_code` | | `service` | `service_identifier` | --- ## 3. Edge โ€” CommercialDependency | Field | Type | Meaning | | --- | --- | --- | | `from_kind` / `from_code` | | Subject | | `to_kind` / `to_code` | | Object | | `relation` | DependencyRelation | See ยง4 | | `strength` | enum? | `hard` \| `soft` | | `reason` | string? | | | `effective_from` / `effective_to` | datetime? | | --- ## 4. DependencyRelation | Relation | Meaning | | --- | --- | | `requires` | Subject cannot activate without object | | `optional` | Object may enhance subject | | `conflicts` | Subject and object must not both be active | | `recommended` | Soft suggestion (recommendations / UX) | | `deprecated` | Subject should not be used; see replacement | | `replacement` | Object replaces subject | --- ## 5. Illustrative dependency matrix (examples) | From | Relation | To | Notes | | --- | --- | --- | --- | | `product.pay` | requires | capability `payments` | | | `product.driver` | optional | capability `maps` | | | `product.qr` | recommended | capability `short-links` | Future | | `product.marketplace` | conflicts | *(none fixed)* | Independent | | `bundle.restaurant.starter` | requires | `product.pay` | Via product ref | | `bundle.restaurant.starter` | recommended | automation_pack `pack.order_sms` | Example | | `product.short_link` | replacement | *(legacy link module if any)* | Future | | `ext.pay.checkout_widget` | requires | `product.pay` | | | `product.booking` | requires | capability `appointments` | Reserved | --- ## 6. Graph invariants 1. No cycles on `requires` edges (logical validation rule for future engines). 2. `conflicts` is symmetric when materialized. 3. `replacement` implies subject `deprecated` (recommended pairing). 4. Graph stores **references only** โ€” no workflow or pricing amounts. 5. Unlimited nodes/edges via registry โ€” architecture unchanged.