# Phase 5 Presentation Conformance Matrix ## Purpose This matrix records the Phase 5 presentation boundary status. A domain is Phase 5-ready when it has: - portable snapshot/model - source/sink boundary where actions exist - tests - at least one renderer/probe consumer - documented legacy ownership - checker coverage Phase 5-ready does not mean fully clean. ## Matrix | Domain | Model | Snapshot | Source | Sink | Tests | Consumer | Legacy audit | Status | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | Device | `DeviceStatusModel` | `DeviceStatusSnapshot` | `IDeviceStatusSource` / `RuntimeDeviceStatusSource` | read-only | `test_device_status_model.cpp` | status/probe consumers | known violations | ready | | GPS | `GpsStatusModel` | `GpsStatusSnapshot` | `IGpsStatusSource` / `RuntimeGpsStatusSource` | read-only | `test_gps_status_model.cpp` | dashboard status, map source, probes | `GPS_CONSUMER_BOUNDARY_AUDIT.md` | ready-with-legacy | | Mesh | `MeshStatusModel` | `MeshStatusSnapshot` | `IMeshStatusSource` / `RuntimeMeshStatusSource` | read-only | `test_mesh_status_model.cpp` | status/probe consumers | known violations | ready-with-legacy | | Settings | `SettingsModel` | `SettingsSnapshot` | `ISettingsSource` / `RuntimeSettingsSource` | `ISettingsActionSink` / `RuntimeSettingsActionSink` | `test_settings_model.cpp` | settings surface | known violations | ready-with-legacy | | Chat | `ChatWorkspaceModel` | `ChatWorkspaceSnapshot` | `ChatPresentationSource` | `RuntimeChatActionSink` | chat workspace and source/sink tests | `ChatUiController` migrated path | `CHAT_UI_CONTROLLER_LEGACY_OWNERSHIP_AUDIT.md` | ready-with-legacy | | Team Chat | Team `ChatWorkspaceModel` | `ChatWorkspaceSnapshot` | `TeamChatPresentationSource` | `TeamChatActionSink` | Team chat source/sink tests | `ChatUiController` Team text path | `TEAM_CHAT_PRESENTATION_AUDIT.md` | ready-with-legacy | | Map | `MapWorkspaceModel` | `MapWorkspaceSnapshot` | `RuntimeMapWorkspaceSource` | `RuntimeMapActionSink` | map workspace and runtime adapter tests | LVGL, uConsole, ASCII probe | `MAP_UI_LEGACY_OWNERSHIP_AUDIT.md` | ready-with-legacy | | Workspace | `PresentationWorkspace` | `PresentationWorkspaceSnapshot` | n/a | n/a | workspace/probe tests | ASCII workspace probe, uConsole smoke | `PHASE5_PRESENTATION_BOUNDARY_SUMMARY.md` | ready | | Renderer | n/a | presentation snapshots | n/a | presentation actions | renderer checker/probe tests | LVGL, GTK/uConsole, ASCII/headless | `PHASE5_RENDERER_HARDENING_SUMMARY.md` | ready-with-legacy | ## Status Definitions ### ready The presentation boundary is established and legacy ownership is minimal or not relevant to the domain. ### ready-with-legacy The presentation boundary is established, but legacy islands remain documented, bounded, and covered by regression checks or baseline records. ### blocked The presentation boundary is missing or unsafe. ## Checker Coverage Phase 5 readiness is covered by: - `tools/architecture/check_phase5_ready.py` - `tools/architecture/check_phase5_workspace_ready.py` - `tools/architecture/check_phase5_renderer_ready.py` The final readiness gate aggregates these checks in `tools/architecture/check_phase5_final_ready.py`. ## Phase 5 Exit Interpretation Phase 5 exits successfully if all domains are either: - ready - ready-with-legacy No domain may remain blocked. Chat, Team Chat, Map, Renderer, GPS, Mesh, and Settings are not declared clean. They are declared bounded enough for Phase 6 to build on the presentation boundary without reintroducing uncontrolled renderer/runtime coupling.