TorbatYar/docs/reference/asset-registry.md
2026-07-28 20:39:10 +03:30

112 lines
4.5 KiB
Markdown

# Universal Asset Registry
> **Architecture / contracts only.** Assets are reusable commercial resources — **not** products, bundles, or capabilities.
> ADR: [ADR-023](../architecture/adr/ADR-023.md) (v1.2 amendment)
> Contract version: `asset-registry.v1`
> Lifecycle: [asset-lifecycle.md](asset-lifecycle.md) · Marketplace stance: [asset-marketplace-contracts.md](asset-marketplace-contracts.md)
---
## 1. Purpose
The **Asset Registry** catalogs reusable commercial resources (templates, themes, libraries, packs) that products, bundles, and tenants may reference, install, or share.
Assets do **not** replace PlatformProducts, Business Bundles, Capabilities, Extensions, or Automation Packs.
---
## 2. Separation
| Concept | Asset? |
| --- | --- |
| PlatformProduct | No |
| Business Bundle | No |
| Capability | No |
| Extension | No (extensions may *reference* assets) |
| Automation Pack | No (packs may *reference* automation templates as assets) |
| Theme / Template / Media pack | **Yes** |
---
## 3. Aggregates
### 3.1 AssetDefinition
| Field | Type | Meaning |
| --- | --- | --- |
| `registry_object_id` | uuid | Universal stable ID — [universal-reference-contracts.md](universal-reference-contracts.md) |
| `asset_code` | string | Human-stable open code |
| `asset_type_code` | string | Open type registry — **unlimited** |
| `display_name` | string | |
| `description` | string? | |
| `publisher_product_code` | string? | Optional publishing PlatformProduct |
| `owner_service_identifier` | string? | Runtime owner when materialized |
| `lifecycle_state` | enum | See [asset-lifecycle.md](asset-lifecycle.md) |
| `version_code` | string | Current version |
| `metadata_ref` | uuid? | Metadata Registry bag |
| `policy_refs[]` | uuid[] | Policy Engine refs |
| `dependency_edge_ids[]` | string[] | Optional graph edges |
| `marketplace` | AssetMarketplaceDeclaration | See marketplace contracts |
| `payload_ref` | string? | Opaque content locator — **not** embedded here |
| `documentation_ref` | string? | |
| `ext` | object | Additive |
### 3.2 AssetType (open registry)
| Field | Type | Meaning |
| --- | --- | --- |
| `asset_type_code` | string | Open key |
| `display_name` | string | |
| `category` | string | Open (e.g. `template`, `theme`, `library`, `palette`, `media`) |
| `status` | enum | `active` \| `reserved` \| `deprecated` |
| `ext` | object | |
Architecture MUST NOT hardcode a closed asset-type list.
---
## 4. Illustrative asset type matrix (examples — not closed)
| asset_type_code | Display | Category |
| --- | --- | --- |
| `website_template` | Website Templates | template |
| `landing_template` | Landing Templates | template |
| `restaurant_theme` | Restaurant Themes | theme |
| `clinic_theme` | Clinic Themes | theme |
| `beauty_theme` | Beauty Themes | theme |
| `business_card_template` | Business Card Templates | template |
| `qr_template` | QR Templates | template |
| `report_template` | Report Templates | template |
| `dashboard_template` | Dashboard Templates | template |
| `email_template` | Email Templates | template |
| `sms_template` | SMS Templates | template |
| `workflow_template` | Workflow Templates | template |
| `automation_template` | Automation Templates | template |
| `invoice_template` | Invoice Templates | template |
| `print_template` | Print Templates | template |
| `menu_template` | Menu Templates | template |
| `course_template` | Course Templates | template |
| `survey_template` | Survey Templates | template |
| `form_template` | Form Templates | template |
| `prompt_template` | Prompt Templates | template |
| `ai_template` | AI Templates | template |
| `component_library` | Component Libraries | library |
| `widget_library` | Widget Libraries | library |
| `theme_pack` | Theme Packs | theme |
| `color_palette` | Color Palettes | palette |
| `font_pack` | Font Packs | library |
| `icon_pack` | Icon Packs | library |
| `media_pack` | Media Packs | media |
Unlimited future `asset_type_code` values MAY be registered without architecture changes.
---
## 5. Invariants
1. Assets never embed pricing amounts — use Pricing Catalog / policies by ref.
2. Assets never own subscription or license truth.
3. Asset payload content is opaque (`payload_ref`); commercial contracts stay lightweight.
4. Published Resources (ADR-022) may *use* assets; Experience does not own the Asset Registry.
5. No Marketplace implementation is authorized by registering marketplace-ready assets.