AdmitMessage
Wire messages that implement the admit/identify handshake.
Framing: each AdmitMessage is CBOR-encoded and sent as a us.tractat.kuilt.core.Swatch payload. The receiver detects admit frames by a discriminator prefix tag (PREFIX_BYTE) that application frames must not start with — this avoids a separate channel or wrapper envelope.
Handshake flow:
Joiner → Host : Hello(identity)
Host → Joiner : Welcome(assignedId, identity)
Host → all others : Welcome(assignedId, identity) [roster broadcast]If the host rejects the joiner (e.g. already admitted with same dedupKey):
Host → Joiner : Reject(reason)The host-side runs this passively for incoming Hellos. The joiner sends Hello immediately upon transport connection and waits for Welcome or Reject.
Inheritors
Types
Sent by a joiner to the host on a deliberate us.tractat.kuilt.session.Room.leave.
Sent by the host to every other member when a member's link drops and its seat is being held open — the presence counterpart of Farewell's eviction (#1557).
Sent by the host to confirm that a joiner's Resume was accepted.
Sent by the host to every other member when a paused member's link recovered inside its reconnect window — the release counterpart of Paused (#1557).