@startuml Comms_Overview title Leahi Real-time CDT — Signal/Slot Wiring Overview participant "Can::CanInterface" as CANI participant "CloudConnectController" as LRC participant "Can::MessageDispatcher" as MDISP participant "CloudConnectServer" as RS participant "Unix Domain\nSocket (app)" as UDS participant "Luis application" as APP == CAN frame → assembled message == CANI -> LRC : didFrameReceive(QCanBusFrame)\n→ onFrameReceive() LRC -> MDISP : onFrameReceive(canId, payload) MDISP -> LRC : didActionReceive(Can::Message)\n→ onMessageReceive() == Message handling & forwarding == LRC -> LRC : look up policy in _msgHandling\n(Drop / SendAlways / SendDelta) LRC -> RS : send(topic, sequence, protobuf payload) RS -> UDS : write(CloudConnectFrame frame) UDS -> APP : readyRead == Cloud delivery (planned — Phase 2/3) == note over LRC The Connectivity Agent socket has been removed. The spool/publish pipeline that replaces it (MessageSpool → Router → MqttPublisher, with SpoolDrain replaying on reconnect) is not yet implemented — see docs/SDD/AgentMigrationPlan.md. end note == Connection events == RS -> LRC : didConnect()\n→ (future) serial-number handshake RS -> LRC : didDisconnect()\n→ (future) RS -> LRC : didMessageReceive()\n→ (future inbound) @enduml