events
Stream of MembershipEvents describing roster and liveness changes.
Hot, backed by a shared flow with a bounded replay cache: a late collector still receives the most recent membership events (so a MembershipEvent.Joined emitted in the brief window before a host { onRoom } consumer subscribes is not lost — see #692), but only the recent tail, not the full history. Treat events as idempotent notifications; the authoritative levels are roster (membership and Member.liveness) and localFabric (this peer's own reachability).