nodes

val nodes: Flow<NodeChange>(source)

Node-change deltas. Every subscriber — early or late — first receives a NodeChange.Snapshot of the engine's current node map (seeded per-subscription via onSubscription), then live NodeChange.Added / NodeChange.Updated / NodeChange.Removed / NodeChange.WentOffline / NodeChange.CameOnline in causal order. A delta whose change is already reflected in the seeded snapshot re-applies idempotently. The handshake additionally emits a live NodeChange.Snapshot at Stage-2 commit (and after each reconnect), which existing subscribers must treat as a full replacement.

Buffering and backpressure: the underlying MutableSharedFlow uses extraBufferCapacity = 256 with BufferOverflow.SUSPEND (per ADR-005). Slow collectors apply backpressure to the engine actor; deltas are never silently dropped on this flow. If the engine inbox itself fills as a result, drops surface as MeshEvent.PacketsDropped on events — see ADR-005 §"Backpressure policy".