Add the experience service with sites through analytics/AI hooks, migrations through 0011, and phase docs/manifests marking the track complete. Co-authored-by: Cursor <cursoragent@cursor.com>
4.0 KiB
4.0 KiB
Phase: Experience Component Library & Versioning (11.2)
| Field | Value |
|---|---|
| Identifier | experience-11.2 |
| Status | Complete |
| Owner | Platform |
| Module(s) | Components, Component Versions, Page Component Placements |
| Service(s) | experience (Torbat Pages) |
| Depends On | experience-11.1 |
| ADR(s) | ADR-016 |
| Manifest | phase-manifest.yaml |
Enterprise Phase Discovery Record
| Input | Finding |
|---|---|
| Roadmap / manifest | Next unfinished Experience phase = experience-11.2 Component Library & Versioning |
| Prior handover | phase-11-1.md — versioned components only; no theme/layout |
| Boundaries | Experience owns components; no CRM/Hospitality/Marketplace/Storage ownership |
| Existing codebase | Sites/pages complete; commands//policies//queries//specifications/ were empty shells |
| Missing vs DoD | Immutable versions, composition shells, list filter/sort/search, policies, specs, commands/queries |
Derived capabilities (this phase only): component catalog lifecycle, immutable published versions, page↔version placement pins, permissions/events/audit/tenant isolation. Not themes, layouts, templates, SEO, forms.
Objective
Deliver a production-ready versioned component library on experience_db with immutable published revisions and composition shells that pin versions onto pages — without theme/layout engines.
Scope
In Scope
ExperienceComponentcatalog (kinds, status, category, tags)ExperienceComponentVersionwith draft → published (immutable) → retiredPageComponentPlacementcomposition shells (slot_key, sort_order, props_override)- Policies, specifications, commands, queries
- Pagination, filtering, sorting, searching on list APIs
- Permissions
experience.components.*; eventsexperience.component*/experience.page_component.* - Alembic
0003_phase_112_components; version0.11.2.0 - Seed catalog:
component_kindsvia/capabilities
Out of Scope
- Theme / layout engines — Phase 11.3
- Template catalog — Phase 11.4
- Visual page builder UI / section trees
- Forms, SEO, PWA, analytics, AI content
Models
| Entity | Soft delete | Audit | Tenant | Optimistic lock |
|---|---|---|---|---|
| ExperienceComponent | Yes | Yes | Yes | Yes |
| ExperienceComponentVersion | Yes | Yes | Yes | Yes |
| PageComponentPlacement | Yes | Yes | Yes | Yes |
Permissions
experience.components.view|create|update|delete|manage
Events
experience.component.created|updated|activated|deprecated|archived
experience.component_version.created|updated|published|retired
experience.page_component.placed|updated|removed
APIs
| Method | Path |
|---|---|
| * | /api/v1/components (+ activate/deprecate/archive/delete) |
| * | /api/v1/component-versions (+ publish/retire) |
| * | /api/v1/page-component-placements (+ delete) |
List endpoints support page/page_size, filters, q, sort_by/sort_dir.
Artifact coverage (DoD)
| Artifact | Status |
|---|---|
| Discovery | This record |
| Policies / Specs / Commands / Queries | Implemented |
| Soft delete / Optimistic lock / Audit / Tenant | Yes |
| Pagination / Filter / Sort / Search | Yes |
| Background jobs | N/A — no async work in phase boundary |
| Themes/layouts | Explicitly out of scope |
Tests
- Unit policies
- API component/version/placement flow + immutability
- Tenant isolation + optimistic lock
- Architecture / permission / migration / docs
Completion Criteria
- Component library with immutable versions; tenant isolation tests green
- No theme/layout engine
- Docs / manifests / handover updated