AdmissionFailure
Why a joiner's admit handshake failed terminally. See MembershipEvent.AdmissionFailed.
Inheritors
Types
The host actively refused admission with an us.tractat.kuilt.session.admit.AdmitMessage.Reject — for example the #1172 room-mismatch gate, which arrives as us.tractat.kuilt.session.admit.RejectCode.RoomMismatch. message is the host's stated reason (for logs); code is its structured counterpart, and is what to branch on. A host that predates typed codes surfaces us.tractat.kuilt.session.admit.RejectCode.Unknown. Retrying the same request is futile; the joiner needs to change something (e.g. its target room).
No us.tractat.kuilt.session.admit.AdmitMessage.Welcome arrived within the admit deadline — the host may be absent, or the joiner's Hello was dropped. Unlike Rejected this is silence, not a refusal, so a later retry may succeed.