TL;DR: Persist any notification that a user must see after reconnect, then publish a realtime hint; keep collaborative cursor motion best-effort because stale coordinates have no value. A successful publish to a channel with no subscribers is a successful no-op, so it proves neither receipt nor future visibility. Read the durable inbox when the editor reconnects. Do not attempt to repair this contract by replaying channel history.
This architecture decision has a hard boundary: the inbox owns durability, while realtime publish owns low-latency notification for users who are connected now. For a B2B collaborative editor, that means cursor positions and selection changes can disappear, but mentions, approval requests, and access-change alerts need stable event IDs, an auditable write, and idempotent consumption.…