DL-194
The presence→dot projection is the total 4-state mapping WORKING→working, IDLE→idle, WAITING→waiting, OFFLINE→stopped plus a defensive UNSPECIFIED→undefined (unreachable on the GetRoster path, which defaults every agent absent from its in-memory presence source to OFFLINE; the client joinAgents mirrors this at its own seam, mapping a presence-map miss — a snapshot-boundary race or a post-snapshot accountChanged arrival — to stopped rather than the components’ ?? "idle" fallback, so the absent→stopped invariant holds end-to-end); the 4-state enum cannot distinguish a deliberately-stopped agent from a never-started one, so a freshly-seeded-but-unstarted agent renders the “stopped” dot — accepted as a known day-one cost, with the terminated/never-started split owed to the deferred AgentSessionStatus lane, which is also the only source for the remaining four AgentState values (done/paused/error/disconnected)
Status: Active (Matt, 2026-08-16)
Record: ../../ui/compass-live-roster/design.md#resolved-decisions