starOverlay
Wrap base in the star-relay policy layer: a GossipSeam with FullFanout and zero recompute jitter, started on the receiver scope. A thin alias for policyOverlay(base, FullFanout, …) — the star is the full-fanout special case; the general form (policyOverlay) drives any TopologyPolicy with the same started-seam interior and the same zero-jitter determinism.
This is the relay interior every hub-star composition shares — hostedOverlay applies it to an accept-pumped mesh, and a per-room game composition applies it to each us.tractat.kuilt.core.RoomHubSeam (and, spoke-side, to each session-mux channel). Wrapped this way, a spoke's broadcast is re-flooded by the hub to every other spoke while Seam.sendTo passes through unwrapped — the tested unicast invariant that keeps per-recipient traffic off the flood path.
Zero jitter is deliberate, not tuning: the FullFanout view is deterministic (everyone), so the anti-lockstep jitter buys nothing and only opens a window where a freshly admitted spoke is missing from the flood targets — a broadcast in that window would skip the spoke and leave a per-origin seq gap it then reorder-holds behind (#1309). The view recomputes synchronously with each roster change instead.
Parameters
the star's local endpoint — the hub's fanout seam, or a spoke's link to the hub.
RNG for overlay bookkeeping; tests inject a seeded instance.
Clock for the overlay's per-neighbour liveness detectors. Required — no wall-clock default, so a virtual-time caller can never silently fall through to the system clock. Production callers pass { kotlin.time.Clock.System.now() }.