# Phase Handover — Experience 11.2 Component Library & Versioning ## Metadata | Field | Value | | --- | --- | | Phase ID | `experience-11.2` | | Title | Component Library & Versioning | | Status | Complete | | Service(s) | `experience` (`experience_db`) | | Version | `0.11.2.0` | | Date | 2026-07-26 | | ADR(s) | [ADR-016](../architecture/adr/ADR-016.md) | ## Discovery Summary Prior phase delivered sites/pages. Gap: versioned reusable components with immutable published revisions and page composition pins. Themes/layouts deferred to 11.3. ## Reusable Components | Component | Location | Reuse notes | | --- | --- | --- | | Component catalog | `app/models/components.py`, `services/components.py` | Lifecycle + kinds | | Immutable versions | `ExperienceComponentVersion.is_immutable` | Publish locks content | | Composition shells | `PageComponentPlacement` | Slot pins only — no layout engine | | Policies / specs | `app/policies/`, `app/specifications/` | Transition + list UX | | Commands / queries | `app/commands/`, `app/queries/` | CQ separation | ## Public APIs | Method | Path | Permission | | --- | --- | --- | | CRUD + activate/deprecate/archive | `/api/v1/components` | `experience.components.*` | | CRUD + publish/retire | `/api/v1/component-versions` | `experience.components.*` | | CRUD | `/api/v1/page-component-placements` | `experience.components.*` | ## Events | Event type | Notes | | --- | --- | | `experience.component.*` | Catalog lifecycle | | `experience.component_version.*` | Version lifecycle + immutability | | `experience.page_component.*` | Placement create/update/remove | ## Extension Points | Extension point | How to extend | Forbidden uses | | --- | --- | --- | | `definition_schema` / `props_defaults` | Theme/layout phases consume props | Store theme tokens as layout engine in 11.2 | | `render_hint` | Future render engines | Bind foreign DB rows | | `menu_ref` / `catalog_ref` kinds | Vertical entity refs via API | Shared Hospitality/Marketplace tables | ## Known Limitations - No theme/layout engines (11.3) - No visual section tree / page builder UI - Placement requires published version only - Metrics remain discovery-oriented ## Migration Notes | Item | Detail | | --- | --- | | Alembic revision(s) | `0003_phase_112_components` | | Upgrade steps | `alembic upgrade head` | | Downgrade support | Drops placements, versions, components | | Breaking changes | None (additive) | ## Dependencies | Dependency | Type | | --- | --- | | experience-11.1 sites/pages | Required parent | | ADR-016 | Boundaries | ## Quality Gates - [x] Discovery complete - [x] Architecture / boundaries preserved - [x] Tests green (unit, API, architecture, migration, docs, tenant, security-compatible) - [x] Documentation + manifests + registries updated - [x] Self audit: no theme/layout leakage; published versions immutable ## Next Phase Entry | Field | Value | | --- | --- | | Recommended next phase | `experience-11.3` Theme & Layout Engine | | Entry checklist | Read this handover + phase doc; implement themes/layouts only — no template catalog yet | ## Completion Sign-Off - [x] Quality gates passed - [x] Tests green - [x] Documentation updated - [x] Progress / next-steps / registries updated - [x] Self audit completed ## Related Documents - [Experience Phase 11.2](../experience-phase-11-2.md) - [Experience Roadmap](../experience-roadmap.md) - [ADR-016](../architecture/adr/ADR-016.md)