Files
trail-mate/docs/audits/PHASE7_FINAL_LEGACY_SURFACE_MATRIX.md
2026-05-30 15:01:59 +08:00

7.4 KiB

Phase 7 Final Legacy Surface Matrix

Surface Current owner New owner Status Removal condition Blocking reason Future phase
Chat delivery send-result bridge LegacyChatDeliveryEventBridge ChatDeliveryEventProjector / IChatDeliveryEventPort contained EventBus publishes structured delivery events directly EventBus schema still carries coarse send-result fields Phase 8 delivery event schema
Chat delivery action bridge LegacyChatDeliveryActionBridge ChatDeliveryActionService contained UI submits ChatDeliveryActionRequest to official action sink Visible message-menu action surface is still compatibility-driven Phase 8 chat action surface
Team action bridge TeamActionRuntimeSink TeamActionRequest / ITeamActionSink burned-down legacy bridge name removed from active code; runtime sink owns Team action sends Team command runtime port is adapter-backed, not controller-owned closed in Team legacy burn-down
Key verification source LegacyKeyVerificationSource KeyVerificationModel / presentation source contained Protocol-specific key verification sources are renamed or split MeshCore/Meshtastic adapters still share compatibility session Phase 8 key verification adapters
Key verification sink LegacyKeyVerificationActionSink KeyVerificationModel / action sink contained Protocol-specific action sinks replace legacy naming Existing adapter still hides protocol-specific mesh APIs Phase 8 key verification adapters
Chat key verification modal helper KeyVerificationModalRenderer Dedicated modal view object burned-down Full modal object owns widget lifecycle Controller still coordinates modal workflow UX Pack / modal runtime pass
Team rich message row structured payload MessageRow summary fallback TeamRichPayloadDisplay / TeamMessageRichPayload burned-down MessageRow carries structured Team rich payload fields and renderers consume them Full card styling can still improve UX but no longer blocks ownership closed in Team legacy burn-down
Team position picker LVGL renderer TeamPositionPickerRenderer Shared picker renderer burned-down UX pack-specific picker replaces or formalizes renderer Current renderer is LVGL-specific UX Pack picker
Team Page create/pairing/request command handlers team_page_components.cpp LVGL handlers TeamPageCreateTeamAction / TeamPagePairingCommandAction / TeamPageRequestKeysAction burned-down command actions own create/pairing/request eligibility and runtime orchestration Page controller still adapts state, notifications, save, and navigation Team Page controller burn-down
Team Page event effects and navigation team_page_components.cpp event handlers/nav helpers TeamPageEventEffectSink / TeamPageFlowController burned-down event-effect sink and flow controller own effects/nav decisions Page controller still renders and applies page transition side effects Team Page controller burn-down
Team Page LVGL render helpers team_page_components.cpp render helpers TeamPageLvglRenderer burned-down renderer owns page labels/buttons/lists/member detail/kick confirm/kicked out rendering Controller still composes renderer input/context/handlers Team Page controller burn-down
Team Page kick-confirm command handler team_page_components.cpp LVGL handler TeamPageKickConfirmAction burned-down command action owns Kick/KeyDist/key rotation/status orchestration Page controller still adapts state, notifications, save, and navigation Team Page controller burn-down
Hostlink Team shadow state hostlink_bridge_radio.cpp local runtime Team state ITeamUiSnapshotStore / ui::team_presence burned-down EvTeamState is projected from canonical snapshot after Team shell handles events Hostlink still owns Hostlink frame enqueue and Team AppData forwarding Hostlink bridge split
GPS Team overlay page-state read ESP GPS map reads Team Page globals TeamMapOverlaySource over ITeamUiSnapshotStore and Team posring burned-down ESP GPS map never includes team_state.h, reads g_team_state, or calls team_ui_posring_load_latest directly GPS marker widgets remain page-local rendering Phase 8 map overlay renderer
Contacts Team Page state read Contacts page reads Team Page globals ContactsTeamSnapshotSource over ITeamUiSnapshotStore burned-down Contacts never includes team_state.h or reads/writes g_team_state Contacts still owns Contacts page UI workflow and composes Team chat/action sinks Team consumer closeout
Map tile source/path lookup Platform tile runtime MapTileResolver / LegacyFilesystemMapTileSource contained Dedicated map tile runtime injects source into renderers Platform tile code still owns loading cadence Phase 8 map tile runtime
Map visible tile plan Platform tile runtime MapTileRenderQueue contained Dedicated map runtime computes queue without legacy MapTile records LVGL tile record compatibility still exists Phase 8 map tile renderer
ESP decoded LVGL tile cache LvglDecodedTileCache wrapper IMapTileDecoderCache boundary contained Decoder cache is injected into a dedicated map tile renderer LVGL image lifetime is platform-specific Phase 8 map decoder cache
Map overlay current position Legacy GPS source adapter LegacyMapOverlaySource / MapOverlayProjector contained Renderer consumes MapOverlaySnapshot directly for markers Existing ESP marker widgets are still page-local Phase 8 map overlay renderer
Map overlay team positions Team map projection source TeamMapOverlaySource / MapOverlayProjector burned-down GPS/map/dashboard consumers use TeamMapOverlaySource; only the Team map source seam reads Team posring Route/tracker/measurement overlays remain separate deferred items closed in Team consumer closeout
Map route/tracker overlay ESP route/tracker draw callbacks Deferred overlay presentation source explicitly deferred Route/tracker stores expose presentation sources and renderer consumes overlay snapshot rows Route/tracker stores are still platform/page-specific Phase 8 route/tracker overlay
Measurement overlay LegacyMapPresentationState Deferred overlay projection explicitly deferred Measurement state projects as MeasurementPoint overlay rows Measurement tool runtime boundary is not split Phase 8 measurement tool
GPS page refresh cadence GpsPageRuntimePump Runtime scheduler / UI refresh sink contained Page-local refresh adapters are replaced by GPS presentation refresh model ESP GPS page workflow remains large compatibility surface Phase 8 GPS page runtime
GNSS skyplot timer GNSS page runtime Deferred GNSS runtime pump explicitly deferred GNSS page cadence uses a runtime pump and skyplot renderer consumes snapshots GNSS skyplot was outside Phase 7 map/GPS final scope Phase 8 GNSS scheduling
ACK timeout projection Adapter hook Delivery event source explicitly deferred Unified ACK source emits structured timeout event Radio/EventBus source remains protocol-specific Phase 8 delivery telemetry
Key missing/radio failure projection Delivery mapper Delivery event source explicitly deferred EventBus carries structured failure kind Current EventBus send-result schema is coarse Phase 8 delivery telemetry