RosterSnapshot
A snapshot of the current peer roster that feeds the TaskRing.
The ring IS the roster — a RosterSnapshot is the primitive the ring is built from. Two pluggable sources produce snapshots:
Raft membership — the replicated voter set from a us.tractat.kuilt.raft.RaftNode's current us.tractat.kuilt.raft.ClusterConfig; strong consistency, zero duplicate execution during stable membership (that config is adopted on append rather than on commit — see us.tractat.kuilt.raft.RaftNode.rosterSnapshot, which is how you obtain this source).
Session room roster — the present-peer set from a us.tractat.kuilt.core.Seam's us.tractat.kuilt.core.Seam.peers flow; cheaper, eventually consistent, best for groups that change rarely. Obtain via us.tractat.kuilt.core.Seam.rosterSnapshot.
Both sources deliver a plain Set<PeerId> — TaskRing needs only that.
Parameters
The current live peer set. Empty means no tasks can be assigned.
Functions
Builds a TaskRing from this roster snapshot.