# Progress

> Completed work only. Future → [roadmap.md](roadmap.md). Next milestone → [next-steps.md](next-steps.md).

## Phase 1 — Core Platform ✅

### Infrastructure & structure
- [x] Full project structure with mandatory `backend/` / `frontend/` separation
- [x] Shared library `backend/shared-lib`
- [x] Architecture section: Frontend & Backend Separation

### Core service
- [x] Config, database, cache, logging, base security
- [x] Models, APIs, Entitlement, Celery, Outbox
- [x] Tests and documentation

### Frontend
- [x] Independent Next.js, API client, white-label theme baseline

---

## Phase 2 — Identity & Access + SSO ✅

- [x] `shared/auth/jwt.py`, `shared/auth/roles.py`, Identity events in `shared/events.py`
- [x] Identity service + `identity_access_db`
- [x] Keycloak realm/clients/theme import
- [x] Core API protection (`AUTH_REQUIRED`, role deps)
- [x] Frontend SSO flow (`/login`, `/auth/callback`, `/dashboard`)
- [x] Compose services Identity + Frontend; Postgres init for identity DB

---

## Phase 3 — OTP Login + Tenant Management ✅

- [x] Core `users` + OTP request/verify + Payamak
- [x] Local JWT (HS256) for OTP users
- [x] Admin tenant CRUD + owner filtering
- [x] Frontend admin OTP/tenant UI (later aligned to central SSO)
- [x] `test_otp_auth.py`

---

## Phase 4 — Tenant Onboarding & Workspace Activation ✅

> Brief alias: sometimes called “Phase 3” externally — see [phase-numbering decision](decisions/technical/phase-numbering.md).

- [x] Core `tenant_memberships`, tenant lifecycle, branding columns, domain primary/verification fields
- [x] `users.current_tenant_id`, FREE/STARTER plan seed, onboarding APIs
- [x] `UserService` / `MembershipService` / `OnboardingService` / `TenantContextService`
- [x] Frontend onboarding wizard, tenant dashboard, tenant switcher
- [x] `test_onboarding.py` + regression suite
- [x] JIT Core user from Keycloak JWT (`UserService.resolve_current`)
- [x] Automatic tenant subdomain SSL (Celery → SSH → `provision_ssl.py`)
- [x] Reverse proxy (Nginx) + base TLS + tenant SSL automation

### Intentionally incomplete after Phase 4 (tracked in roadmap, not claimed done)
Payment gateway · real DNS/TXT custom-domain verify · legacy `POST /admin/tenants` auto membership/plan · first business module

---

## Phase D — Documentation Architecture Consolidation ✅

- [x] Target `docs/` tree (architecture, adr, development, reference, deployment, templates, phases, decisions)
- [x] Moved canonical docs with git history where possible
- [x] Deprecated stubs for old paths
- [x] ADR system initialized (ADR-001 … ADR-010)
- [x] Project principles, coding standards, testing/branching/release strategies
- [x] Module registry + provider registry + glossary
- [x] Deployment runbooks (production, SSL, monitoring, backup, restore, DR)
- [x] Roadmap / next-steps separation from progress
- [x] Phase area docs for Accounting, CRM, Restaurant, Marketplace, Automation, AI, Future
- [x] Cross-links updated in root and package READMEs

---

## Phase 5.1–5.11 — Accounting Module ✅

- [x] Phases 5.1–5.6: Foundation through Sales Integration (see prior entry)
- [x] Phase 5.7: Purchase & Inventory accounting, InventoryValuationEngine
- [x] Phase 5.8: Fixed Assets, DepreciationEngine, asset lifecycle
- [x] Phase 5.9: HCM/Payroll, PayrollEngine, payroll accounting
- [x] Phase 5.10: Financial Reporting Engine, dashboards, export framework
- [x] Phase 5.11: Compliance, Audit Framework, Governance, SoD
- [x] Alembic migration `0002_phases_57_511`
- [x] 21 tests passing

---

## Accounting Enterprise Frontend (in SuperApp) ✅ baseline

- [x] Design system tokens (light/dark) + DS components (`components/ds`)
- [x] TanStack Query providers, Sonner toasts, ColorMode
- [x] Typed `accounting-api` client (JWT + `X-Tenant-ID`, no mocks)
- [x] Accounting shell + routes: dashboard, COA, fiscal, currencies, cost centers, projects, ledger, setup, suppliers
- [x] Vouchers list/create/detail with validate/post/reverse/cancel + draft edit (ADR-010)
- [x] Foundation masters: edit/archive drawers, fiscal year/period actions, COA template import wizard
- [x] Setup checklist + completion scoreboard on dashboard
- [x] Treasury, customers, assets, payroll, reports, audit, settings pages (real APIs)
- [x] Catalog tile available → `/accounting`
- [x] Frontend docs under `docs/frontend/`

Remaining: Phase 5.12 AI UI blocked on AI provider; optional richer PDF export file delivery.

---

## Accounting Frontend Integration (FE ↔ BE 5.1–5.11) ✅

- [x] Full route/menu scan vs `/api/v1` routers; gap matrix executed
- [x] Domain rewires: payroll employees, compliance policies/risks, settlements, sales-accounting post, purchase GR + valuation, asset schedule, monitoring health
- [x] FE client: settlements, salesAccounting, purchaseInventory, compliance approvals/risks, ops PATCH
- [x] Ops documents: detail + edit; treasury receipt/payment cash/bank binding; voucher list pagination
- [x] BE list endpoints for settlements, risks, purchase posting-profiles (integration completeness)
- [x] Report: [accounting-frontend-integration-report.md](accounting-frontend-integration-report.md)
- [x] Scoreboard honesty for partial/ops-backed modules; AI remains blocked

---

## Accounting Frontend Completion Loop (business workflows) ✅

- [x] Full sidebar/submenu audit (118 routes); generic BusinessDocs stubs replaced
- [x] Thin BE APIs on existing models: asset transfer/dispose/revaluation; payroll contracts/components/payrolls; compliance workflows/approvals list/SoD/controls/violations
- [x] Domain screens: `WorkflowScreens.tsx` + typed `SpecializedOpsPage` for budget/integration/documents/settings
- [x] Money thousand-separators + party/item AJAX across operational forms
- [x] Audit report: [audits/accounting-frontend-completion-report.md](audits/accounting-frontend-completion-report.md)
- [x] Menu QA tracker: [frontend/accounting-menu-qa.md](frontend/accounting-menu-qa.md)

Remaining (honest): Phase 5.12 AI blocked; budget/DMS/integration still typed-ops interim until dedicated engines exist.

---

## Phase 6.0 — CRM Service Foundation ✅

- [x] `backend/services/crm` service scaffold (API / services / repositories / models)
- [x] Base aggregates: Lead, Contact, Organization, Opportunity, Pipeline, PipelineStage, SalesActivity, Quote
- [x] Publish-only event contracts (`crm.lead.*`, `crm.opportunity.*`, …)
- [x] CRM APIs only (`/api/v1/leads|contacts|organizations|pipelines|opportunities|activities|quotes`)
- [x] Platform provider contracts only (Automation, Customer360, Notification, Analytics, AI, Communication, Helpdesk)
- [x] Permissions `crm.*` trees; tenant isolation via `X-Tenant-ID`
- [x] Alembic `0001_initial` + `crm_db` wiring (compose port 8003)
- [x] Architecture / dependency / repository / migration / API / permission / tenant / docs tests
- [x] Docs: [crm-phase-6-0.md](crm-phase-6-0.md), module registry, phase area README

---

## Phase 6.1 — Enterprise CRM Core Business Entities ✅

- [x] Expanded Lead / Contact / Organization (numbers, multi-contact, soft delete, audit actors)
- [x] Lookups: lead_sources, lead_statuses, contact_types, organization_types, organization_industries
- [x] Lead assignments, tag engine, reusable addresses, custom fields + values
- [x] Versioned notes, attachment file-storage references (no binary), CRM audit log
- [x] Services / repositories / validators / permissions / events for Phase 6.1
- [x] Alembic `0002_phase_61_entities`
- [x] API coverage under `/api/v1` for entities + lookups
- [x] Tests: model, repository, service, API, permission, migration, validation, audit, tenant, docs
- [x] Docs: [crm-phase-6-1.md](crm-phase-6-1.md)

---

## Phase 6.2 — Enterprise Sales Process Engine ✅

- [x] Opportunity engine (number, title, revenue, probability, priority, close dates, soft delete, actors)
- [x] Unlimited pipelines + pipeline stages (start/won/lost/closed flags, required fields, exit validation)
- [x] Stage history, opportunity products (product_ref only), contact roles, competitors
- [x] Sales playbooks (versioned) + steps + assignments + completion tracking
- [x] Win/loss categories, reasons, immutable opportunity_win_loss snapshot
- [x] Rule-based forecasts (pipeline / weighted / committed; monthly/quarterly/annual)
- [x] Sales goals + targets with achievement %
- [x] Sales process definitions + sales_audit trail
- [x] Services / validators / events / permissions (`crm.pipelines|playbooks|forecasts|goals|targets.*`)
- [x] Alembic `0003_phase_62_sales_engine`; version `0.6.2.0`
- [x] API coverage for sales engine under `/api/v1`
- [x] Tests: pipeline, stage, playbook, forecast, win/loss, business rules, migration, permission, tenant, docs
- [x] Docs: [crm-phase-6-2.md](crm-phase-6-2.md)

---

## Phase 6.3 — Enterprise Sales Collaboration Platform ✅

- [x] Expanded sales activities (types, priority, CRM entity links, participants, reminders)
- [x] Tasks + checklists + completion tracking
- [x] Meetings + attendees + finish/outcome
- [x] Call logs (opportunity-linked) + call outcomes
- [x] Email threads/messages metadata only (no delivery)
- [x] Immutable sales timeline + timeline event links
- [x] Threaded/versioned comments, mentions, bookmarks, favorites
- [x] Sales team roles/members/assignments + notification preferences
- [x] Collaboration audit; events `crm.task|meeting|call|timeline|comment|mention.*`
- [x] Permissions `crm.tasks|meetings|calls|timeline|comments|mentions|team.*`
- [x] Alembic `0004_phase_63_collaboration`; version `0.6.3.0`
- [x] Tests + docs: [crm-phase-6-3.md](crm-phase-6-3.md)

### CRM Core Platform

- [x] Phases 6.0–6.3 complete (Foundation, Master Data, Sales Engine, Collaboration)

---

## Phase 7.0 — Loyalty Service Foundation ✅

- [x] `backend/services/loyalty` service scaffold (API / services / repositories / models)
- [x] Foundation aggregates: LoyaltyProgram, MembershipTier, Member, PointAccount, Reward, Campaign, LoyaltyAuditLog, OutboxEvent
- [x] No mutable balance on PointAccount — direct balance mutation forbidden (`extra=forbid`)
- [x] Optimistic locking on Program / Member / PointAccount; campaign `rule_version`
- [x] Publish-only events via transactional outbox (`loyalty.program|tier|member|point_account|reward|campaign.*`)
- [x] Loyalty APIs only (`/api/v1/programs|tiers|members|point-accounts|rewards|campaigns|audit`)
- [x] Platform provider contracts only (Notification, Analytics, Customer360, AI, ModuleIntegration, CRM, Communication, FileStorage)
- [x] Permissions `loyalty.*` trees with manage/view inheritance; tenant isolation via `X-Tenant-ID`
- [x] Alembic `0001_initial` + `loyalty_db` wiring (compose port 8004)
- [x] Soft-delete unique reclaim; IntegrityError → 409; null required-field → 422; production config guards
- [x] Enterprise validation & self-heal (incl. removal of incomplete 7.1 residue) — **52 tests passed**
- [x] Docs: [loyalty-phase-7-0.md](loyalty-phase-7-0.md), [loyalty-phase-7-0-audit.md](loyalty-phase-7-0-audit.md), ADR-011, module registry, phase area README

## Phase 7.1 — Membership Engine ✅

- [x] Lifecycle state machine (activate / renew / freeze / resume / cancel / expire / transfer)
- [x] Member lifecycle fields + `MembershipLifecycleEvent` append-only history
- [x] Program soft-delete cascade policy: reject when blocking members exist
- [x] Permissions `loyalty.members.{activate,renew,freeze,resume,cancel,expire,transfer,lifecycle.view}`
- [x] Events `loyalty.member.{activated,renewed,frozen,resumed,cancelled,expired,transferred}`
- [x] Alembic `0002_phase_71_membership`; version `0.7.1.0`
- [x] Tests green (59) including `test_phase71.py`
- [x] Docs: [loyalty-phase-7-1.md](loyalty-phase-7-1.md), [phase-handover/phase-7-1.md](phase-handover/phase-7-1.md), manifests, registry

---

## Phase 8.0–8.10 — Enterprise Communication Platform ✅

- [x] Independent `communication-service` / `communication_db` (port 8005) — not owned by CRM/Loyalty/Restaurant
- [x] Provider framework + registry (mock, payamak; stubs for email/push/whatsapp/telegram/rubika/voice)
- [x] Communication router with priority, automatic failover, retry, circuit breaker
- [x] SMS platform: sender numbers, balance, rate limits, provider logs
- [x] Template engine: variables, locale, versioning, approval, preview, rendering
- [x] Dynamic contact sources (manual, CSV, CRM/Loyalty/Restaurant/Marketplace/Accounting/Website/External REST) — resolve only, no duplication
- [x] Queue engine: async queue, scheduling, priority, backoff retry, DLQ, batch
- [x] Delivery tracking: queued/sent/delivered/failed/expired/cancelled + timeline
- [x] OTP platform: generate/verify/expire, rate limit, brute-force lock, multi-channel path
- [x] Incoming provider webhooks with signature verification
- [x] Health `/health`, Capability `/capabilities`, providers status, monitoring stats
- [x] Permissions `communication.*`; events `communication.*`; audit on every send
- [x] Alembic `0001_initial`; version `0.8.10.0`
- [x] Tests: architecture, health/security, providers/SMS/failover/queue, templates/contacts/OTP/webhooks, validators
- [x] Docs: [communication-phase-8.md](communication-phase-8.md), ADR-012, module/provider registry, progress

---

## Phase AF — AI Development Framework ✅

> Documentation-only. No business functionality. No modifications to existing services, schemas, or APIs.

- [x] Permanent area [`docs/ai-framework/`](ai-framework/README.md)
- [x] Master prompt, development loop, phase handover, quality gates
- [x] Templates: phase, service, module, entity, repository, service-layer, API, event, testing, documentation
- [x] Manifests: [phase-manifest.yaml](ai-framework/phase-manifest.yaml), [service-manifest.yaml](ai-framework/service-manifest.yaml)
- [x] Prompt rules + Cursor guidelines
- [x] Docs index / module registry / progress integration
- [x] ADR-013 Accepted
- [x] Architecture, documentation, cross-reference, link, template, and manifest validation

---

## Phase AF-Enterprise — Enterprise Development Framework Upgrade ✅

> Documentation-only. Upgrades the AI Development Framework into an Enterprise Development Framework. No business feature code. No changes to completed business phases or implementations.

- [x] [Definition of Done](ai-framework/definition-of-done.md)
- [x] [Mandatory Phase Artifacts](ai-framework/mandatory-phase-artifacts.md)
- [x] [Enterprise Completeness](ai-framework/enterprise-completeness.md)
- [x] [Boundary Rules](ai-framework/boundary-rules.md)
- [x] Master prompt, development loop, quality gates, phase/handover/testing/documentation templates upgraded
- [x] Layer templates (service, module, entity, repository, service-layer, API, event) upgraded
- [x] Prompt rules + Cursor guidelines upgraded
- [x] Project principles, testing strategy, docs index, glossary updated
- [x] [ADR-018](architecture/adr/ADR-018.md) Accepted (extends ADR-013)
- [x] Phase registered: `ai-framework-enterprise` in [phase-manifest.yaml](ai-framework/phase-manifest.yaml)
- [x] Handover: [phase-handover/phase-af-enterprise.md](phase-handover/phase-af-enterprise.md)
- [x] Backward-compatible path `docs/ai-framework/` retained; no business services modified

---

## Phase AF-Discovery — Enterprise Phase Discovery Mandate ✅

> Documentation-only. Adds mandatory Enterprise Phase Discovery before every phase. No business feature code. No changes to completed business phases or implementations.

- [x] [Enterprise Phase Discovery](ai-framework/enterprise-phase-discovery.md)
- [x] Development loop stage 1 = Discovery; quality gates include Discovery
- [x] Phase template, handover, DoD, completeness, mandatory artifacts, prompt/cursor rules updated
- [x] Master prompt + project principles updated
- [x] [ADR-019](architecture/adr/ADR-019.md) Accepted (extends ADR-018)
- [x] Phase registered: `ai-framework-discovery` in [phase-manifest.yaml](ai-framework/phase-manifest.yaml)
- [x] Handover: [phase-handover/phase-af-discovery.md](phase-handover/phase-af-discovery.md)
- [x] No business services modified

---

## Phase SC-Reg — Sports Center Platform Registration ✅

> Documentation-only registration. No business code, models, APIs, migrations, or repositories.

- [x] Phase roadmap 9.0–9.10 registered in [phase-manifest.yaml](ai-framework/phase-manifest.yaml)
- [x] Service registered in [service-manifest.yaml](ai-framework/service-manifest.yaml)
- [x] Planned modules registered in [module-registry.md](module-registry.md#sports_center)
- [x] Sports terminology added to [glossary.md](glossary.md#sports-center)
- [x] Roadmap doc: [sports-center-roadmap.md](sports-center-roadmap.md)
- [x] ADR-014 Accepted — Independent Sports Center Platform
- [x] Module boundaries + phase area README updated
- [x] Manifest / cross-reference / documentation / module validation passed

---

## Phase 9.0 — Sports Center Platform Foundation ✅

- [x] `backend/services/sports_center` service scaffold (API / services / repositories / models)
- [x] Foundation aggregates: SportsCenter, Branch, Sport, MembershipType, Membership, Coach, SportsRole, SportsPermission, Facility, Court, Room, LockerRoom, Locker, DeviceProvider, Device, AttendanceGateway, SportsConfiguration, SportsEvent, SportsSetting, SportsAuditLog
- [x] Adapter-based connector framework (QR/RFID/Barcode/Fingerprint/Face/Turnstile/Door/Payment/Attendance) — interfaces only
- [x] Platform provider contracts only (Accounting, CRM, Loyalty, Communication, Notification, Storage, AI, Identity, Customer360)
- [x] Publish-only events (`sports_center.member|membership|coach|facility|device|attendance|locker.*`)
- [x] Sports APIs under `/api/v1` + device connect/disconnect + locker assign/release
- [x] Permissions `sports_center.*` trees; tenant isolation via `X-Tenant-ID`
- [x] Alembic `0001_initial` + `sports_center_db` wiring (compose port 8006)
- [x] Architecture / API / permissions / migration / dependency / connectors / docs tests
- [x] Docs: [sports-center-phase-9-0.md](sports-center-phase-9-0.md), [phase-handover/phase-9-0.md](phase-handover/phase-9-0.md), ADR-014, module registry
- [x] No business workflow engines (booking/attendance lifecycle deferred)

---

## Phase 9.1 — Sports Center Membership Catalog ✅

- [x] Catalog aggregates: SportCategory, AgeGroup, PricingModel, MembershipPackage, MembershipPlan, MembershipRule, RenewalPolicy, FreezingRule, ExpirationPolicy
- [x] MembershipType extended with catalog refs (package/plan/pricing/age/category/policies), transferability, sort order
- [x] Validators for age range, pricing/billing/rule kinds, money amounts, catalog ref integrity
- [x] Publish-only catalog events; permissions trees for catalog modules
- [x] APIs under `/api/v1/sport-categories|age-groups|pricing-models|membership-packages|membership-plans|membership-rules|renewal-policies|freezing-rules|expiration-policies`
- [x] `/capabilities` endpoint; version `0.9.1.0`
- [x] Alembic `0002_phase_91_membership_catalog`
- [x] Tests: catalog API, tenant isolation, age validation, architecture, docs
- [x] Docs: [sports-center-phase-9-1.md](sports-center-phase-9-1.md), [phase-handover/phase-9-1.md](phase-handover/phase-9-1.md)
- [x] No member enrollment / coach / attendance / booking engines

---

## Phase 9.2 — Sports Center Member Management ✅

- [x] Members aggregate + family members, emergency contacts, medical information shells
- [x] Membership assignment (`member_id`) consuming Phase 9.1 catalog types
- [x] Status management: activate / suspend / cancel / freeze / unfreeze
- [x] Membership cards (QR/physical/digital), digital membership passes, waivers (sign), member documents (Storage refs)
- [x] Validators, permissions (`sports_center.members.*` trees), publish-only events
- [x] Alembic `0003_phase_92_member_management`; version `0.9.2.0`
- [x] Tests: members API, tenant isolation, transitions, architecture, migration, docs
- [x] Docs: [sports-center-phase-9-2.md](sports-center-phase-9-2.md), [phase-handover/phase-9-2.md](phase-handover/phase-9-2.md)
- [x] No coach / attendance / booking engines

---


## Phase DP-Reg — Delivery & Fleet Platform Registration ✅

> Documentation-only registration. No business code, models, APIs, migrations, or repositories.

- [x] Phase roadmap 10.0–10.10 registered in [phase-manifest.yaml](ai-framework/phase-manifest.yaml)
- [x] Service registered in [service-manifest.yaml](ai-framework/service-manifest.yaml) (`delivery`, `delivery_db`, port 8007)
- [x] Planned modules registered in [module-registry.md](module-registry.md#delivery)
- [x] Delivery terminology added to [glossary.md](glossary.md#delivery--fleet-platform)
- [x] Roadmap doc: [delivery-roadmap.md](delivery-roadmap.md)
- [x] ADR-015 Accepted — Independent Delivery & Fleet Platform
- [x] Module boundaries + phase area README updated
- [x] Handover: [phase-handover/phase-dp-reg.md](phase-handover/phase-dp-reg.md)
- [x] Manifest / cross-reference / documentation / module validation passed

---

## Phase XP-Reg — Experience Platform Registration ✅

> Documentation-only registration. No business code, models, APIs, migrations, or repositories.

- [x] Phase roadmap 11.0–11.10 registered in [phase-manifest.yaml](ai-framework/phase-manifest.yaml)
- [x] Service registered in [service-manifest.yaml](ai-framework/service-manifest.yaml) (`experience`, `experience_db`, port 8008)
- [x] Planned modules registered in [module-registry.md](module-registry.md#experience)
- [x] Experience terminology added to [glossary.md](glossary.md#experience-platform)
- [x] Roadmap doc: [experience-roadmap.md](experience-roadmap.md)
- [x] Phase doc: [experience-phase-xp-reg.md](experience-phase-xp-reg.md)
- [x] ADR-016 Accepted — Independent Enterprise Experience Platform (Torbat Pages)
- [x] Module boundaries + database architecture + schema notes + phase area README updated
- [x] Historical `website_builder` marked prefer-`experience` (ADR-016)
- [x] Handover: [phase-handover/phase-xp-reg.md](phase-handover/phase-xp-reg.md)
- [x] Manifest / cross-reference / documentation / module validation passed

---

## Phase 11.0 — Experience Platform Foundation ✅

- [x] Independent `backend/services/experience` (`experience_db`, port **8008**, version **0.11.0.0**, commercial product **Torbat Pages**)
- [x] Foundation aggregates: Workspace, LocaleProfile, ExternalProviderConfig, RenderEngineRegistration, Configuration, Setting, Role/Permission shells, AuditLog
- [x] `GET /health`, `/capabilities`, `/metrics`; permissions `experience.*`; publish-only events
- [x] Provider contracts only (Storage, CRM, Hospitality, Marketplace, Sports, Delivery, Communication, Loyalty, Accounting, AI, Automation, …)
- [x] Alembic `0001_initial`; compose + `.env.example` + `init-dbs.sql` wiring
- [x] Tests: architecture, API, tenant isolation, permissions, migration, dependency, security, docs
- [x] Docs: [experience-phase-11-0.md](experience-phase-11-0.md), [phase-handover/phase-11-0.md](phase-handover/phase-11-0.md)
- [x] No sites/pages/page-builder/theme/template/CMS/forms engines

---

## Phase 11.1 — Experience Sites & Page Resources ✅

- [x] Sites under workspaces (multiple sites); draft/publish/archive lifecycle
- [x] Pages-as-resources with page types (landing, menu, bio, portfolio, QR, blog, …)
- [x] Site domain/subdomain binding refs (`experience_site_domains`)
- [x] Permissions `experience.sites.*` / `experience.pages.*` / `experience.domains.*`
- [x] Events `experience.site.*` / `experience.page.*` / `experience.site_domain.*`
- [x] Alembic `0002_phase_111_sites_pages`; version `0.11.1.0`
- [x] Tests: sites API, tenant isolation, publish/archive rules, architecture, migration, docs
- [x] Docs: [experience-phase-11-1.md](experience-phase-11-1.md), [phase-handover/phase-11-1.md](phase-handover/phase-11-1.md)
- [x] No page builder / theme / template engines

---

## Phase 11.2 — Experience Component Library & Versioning ✅

- [x] Versioned component catalog (`ExperienceComponent`) with kinds + lifecycle
- [x] Immutable published component versions (`ExperienceComponentVersion`)
- [x] Page composition shells (`PageComponentPlacement` slot pins)
- [x] Policies, specifications, commands, queries; list filter/sort/search
- [x] Permissions `experience.components.*`; events `experience.component*` / `experience.page_component.*`
- [x] Alembic `0003_phase_112_components`; version `0.11.2.0`
- [x] Tests: policies, API flow, immutability, tenant isolation, architecture, migration, docs
- [x] Docs: [experience-phase-11-2.md](experience-phase-11-2.md), [phase-handover/phase-11-2.md](phase-handover/phase-11-2.md)
- [x] No theme / layout engines

---

## Phase 11.3 — Experience Theme & Layout Engine ✅

- [x] Replaceable theme packs (`ExperienceTheme`) with tokens + directionality
- [x] Dynamic layouts (`ExperienceLayout`) with regions/slots shells
- [x] Site theme + page layout assignments (swap without rewriting pages)
- [x] Policies, specifications, commands, queries; list filter/sort/search
- [x] Permissions `experience.themes.*` / `experience.layouts.*`
- [x] Events `experience.theme.*` / `experience.layout.*` / `experience.site_theme.*` / `experience.page_layout.*`
- [x] Alembic `0004_phase_113_themes_layouts`; version `0.11.3.0`
- [x] Tests: policies, API flow, tenant isolation, architecture, migration, docs
- [x] Docs: [experience-phase-11-3.md](experience-phase-11-3.md), [phase-handover/phase-11-3.md](phase-handover/phase-11-3.md)
- [x] No template catalog engine

---

## Phase 12.0 — Hospitality Platform Foundation ✅

- [x] Independent `backend/services/hospitality` (`hospitality_db`, port **8009**, version **0.12.0.0**, commercial product **Torbat Food**)
- [x] Foundation aggregates: Venue, Branch, DiningArea, DiningTable, Menu, MenuCategory, MenuItem, BundleDefinition, TenantBundle, FeatureToggle, roles/permissions, configuration/settings/events/audit
- [x] Feature-based architecture: bundle licensing + feature toggles + `/capabilities` discovery
- [x] Venue formats catalog (cafe → catering) without hardcoded engines
- [x] Publish-only events `hospitality.*`; permissions `hospitality.*`
- [x] Provider contracts only (Accounting, CRM, Loyalty, Communication, Delivery, Experience/Website, AI, …)
- [x] Alembic `0001_initial`; compose + `.env.example` wiring
- [x] Tests: architecture, API, tenant isolation, permissions, bundles, migration, dependency, security, performance, docs
- [x] Docs: [hospitality-phase-12-0.md](hospitality-phase-12-0.md), [phase-handover/phase-12-0.md](phase-handover/phase-12-0.md), [hospitality-roadmap.md](hospitality-roadmap.md), ADR-017
- [x] Historical `restaurant-foundation` / restaurant scaffold superseded by hospitality
- [x] No POS / kitchen / ordering / reservation engines

---

## Phase 12.1 — Digital Menu Catalog ✅

- [x] Catalog aggregates: Allergen, ModifierGroup, ModifierOption, MenuItemModifier, MenuItemAllergen, AvailabilityWindow, MenuMediaRef, MenuLocalization
- [x] Additive MenuItem fields (prep time, calories, dietary flags, tags, primary_media_ref)
- [x] Catalog APIs + validators + permissions + publish-only events
- [x] Alembic `0002_phase_121_digital_menu_catalog`; version **0.12.1.0**; capabilities `digital_menu_catalog`
- [x] Tests: catalog happy path, tenant isolation, validation, architecture/migration/docs updates
- [x] Docs: [hospitality-phase-12-1.md](hospitality-phase-12-1.md), [phase-handover/phase-12-1.md](phase-handover/phase-12-1.md)
- [x] No POS / kitchen / QR ordering / reservation engines

---


## Phase 10.0 — Delivery Platform Foundation ✅

- [x] `backend/services/delivery` service scaffold (API / services / repositories / models)
- [x] Foundation aggregates: DeliveryOrganization, DeliveryHub, DeliveryRole, DeliveryPermission, ExternalProviderConfig, RoutingEngineRegistration, DeliveryConfiguration, DeliverySetting, DeliveryAuditLog
- [x] Platform provider contracts (Accounting, CRM, Loyalty, Communication, Notification, Storage, AI, Identity, RoutingEngine, Fleet)
- [x] Publish-only events (`delivery.organization|hub|external_provider|routing_engine|configuration|setting.*`)
- [x] Health `/health`, Capabilities `/capabilities`, Metrics `/metrics`
- [x] APIs under `/api/v1` for organizations, hubs, external-providers, routing-engines, configurations, settings, audit
- [x] Permissions `delivery.*` trees; tenant isolation via `X-Tenant-ID`
- [x] Alembic `0001_initial` + `delivery_db` wiring (compose port 8007); version `0.10.0.0`
- [x] Architecture / API / tenant / permissions / migration / dependency / security / docs tests
- [x] Docs: [delivery-phase-10-0.md](delivery-phase-10-0.md), [phase-handover/phase-10-0.md](phase-handover/phase-10-0.md)
- [x] No driver/fleet/dispatch/routing/tracking engines (deferred)

---

## Phase 10.1 — Driver Management ✅

- [x] Aggregates: Driver, DriverCredential, DriverDocument, DriverLifecycleEvent, OutboxEvent
- [x] Lifecycle: activate / suspend / resume / deactivate / block / unblock / archive + append-only history
- [x] Soft delete + optimistic locking; list pagination / filter / sort / search
- [x] Commands, queries, policies, specifications, validators
- [x] APIs `/api/v1/drivers` + `/api/v1/permissions/catalog`; capabilities/metrics `phase: 10.1`
- [x] Permissions `delivery.drivers.*`; events `delivery.driver.*` via transactional outbox
- [x] Alembic `0002_phase_101_drivers`; version **0.10.1.0**
- [x] Tests: lifecycle, credentials/documents, tenant, architecture, migration, permissions, performance indexes, docs
- [x] Docs: [delivery-phase-10-1.md](delivery-phase-10-1.md), [phase-handover/phase-10-1.md](phase-handover/phase-10-1.md)
- [x] No fleet / dispatch / routing / tracking engines (deferred)

---

## Related Documents

- [Next Steps](next-steps.md)
- [Roadmap](roadmap.md)
- [Frontend docs](frontend/README.md)
- [docs/README.md](README.md)
- [CRM Phase 6.0](crm-phase-6-0.md)
- [CRM Phase 6.1](crm-phase-6-1.md)
- [CRM Phase 6.2](crm-phase-6-2.md)
- [CRM Phase 6.3](crm-phase-6-3.md)
- [Loyalty Phase 7.0](loyalty-phase-7-0.md)
- [Loyalty Phase 7.1](loyalty-phase-7-1.md)
- [Communication Phase 8](communication-phase-8.md)
- [Sports Center Phase 9.0](sports-center-phase-9-0.md)
- [Sports Center Phase 9.1](sports-center-phase-9-1.md)
- [Sports Center Phase 9.2](sports-center-phase-9-2.md)
- [Phase Handover 9.0](phase-handover/phase-9-0.md)
- [Phase Handover 9.1](phase-handover/phase-9-1.md)
- [Phase Handover 9.2](phase-handover/phase-9-2.md)
- [Sports Center Roadmap](sports-center-roadmap.md)
- [Delivery Roadmap](delivery-roadmap.md)
- [Delivery Phase 10.0](delivery-phase-10-0.md)
- [Delivery Phase 10.1](delivery-phase-10-1.md)
- [Phase Handover DP-Reg](phase-handover/phase-dp-reg.md)
- [Phase Handover 10.0](phase-handover/phase-10-0.md)
- [Phase Handover 10.1](phase-handover/phase-10-1.md)
- [Experience Roadmap](experience-roadmap.md)
- [Experience Phase XP-Reg](experience-phase-xp-reg.md)
- [Experience Phase 11.0](experience-phase-11-0.md)
- [Experience Phase 11.1](experience-phase-11-1.md)
- [Experience Phase 11.2](experience-phase-11-2.md)
- [Experience Phase 11.3](experience-phase-11-3.md)
- [Phase Handover XP-Reg](phase-handover/phase-xp-reg.md)
- [Phase Handover 11.0](phase-handover/phase-11-0.md)
- [Phase Handover 11.1](phase-handover/phase-11-1.md)
- [AI / Enterprise Development Framework](ai-framework/README.md)
- [Phase Handover AF-Enterprise](phase-handover/phase-af-enterprise.md)
- [Phase Handover AF-Discovery](phase-handover/phase-af-discovery.md)
- [ADR-013](architecture/adr/ADR-013.md)
- [ADR-018](architecture/adr/ADR-018.md)
- [ADR-019](architecture/adr/ADR-019.md)
- [ADR-014](architecture/adr/ADR-014.md)
- [ADR-015](architecture/adr/ADR-015.md)
- [ADR-016](architecture/adr/ADR-016.md)
- [ADR-017](architecture/adr/ADR-017.md)
- [Hospitality Phase 12.0](hospitality-phase-12-0.md)
- [Hospitality Phase 12.1](hospitality-phase-12-1.md)
- [Hospitality Roadmap](hospitality-roadmap.md)
- [Phase Handover 12.0](phase-handover/phase-12-0.md)
- [Phase Handover 12.1](phase-handover/phase-12-1.md)
