A background task, a second broadcast channel and a whole module existed to remap SessionEvent onto CatalogEvent one variant at a time. SessionManager now emits CatalogEvent directly. Deletes local_events.rs, the publisher task, the LocalEventBus channel, enum SessionEvent, LocalApiState::events, and the duplicate capacity constant — events_capacity was declared twice for one logical stream. Lag semantics improve. There were two lag points: the publisher falling behind the manager, which broadcast one Lagged to every client, and each WS subscriber falling behind the bus. Only the per-subscriber one is left, which pump_events already handled — a slow client now makes only itself resync. Adds the first daemon-level tests for WS /api/events: the Snapshot-then- deltas contract, and that a late subscriber gets a Snapshot of current state. Both were described only in a comment. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>