/v1/ws shares the same outer envelope. Routing is done on (entity, event); service-specific payload lives in data.
Shape
Routing on the client
The canonical key for a router is{entity}.{event}:
Sequencing
A monotonically increasing sequence number may be present on the innerdata payload (sequence, seq, or offset depending on service). Clients that need exactly-once application semantics should treat any of these as authoritative for the (account_id, entity) pair they appear on, and ignore older sequences after a re-hydration.
For most clients, applying envelopes in arrival order on top of REST-hydrated state is sufficient.
