LobbyMessage

@Serializable
sealed interface LobbyMessage

Wire messages for the host-election freeze round (#1439). Sent over the raw lobby seam BEFORE any us.tractat.kuilt.session.Room adopts it, so the framing is parallel to — and prefix-disjoint from — us.tractat.kuilt.session.admit.AdmitMessage.

Freeze round: Freeze (host→all) → FreezeAck (each member→host) → Commit (host→all, adopt now) or Reopen (host→all, abort). See docs/host-election-design.md.

Inheritors

Types

Link copied to clipboard
@Serializable
@SerialName(value = "commit")
data class Commit(val hostId: String, val epoch: Long) : LobbyMessage

Host→all: "every member acked — adopt now."

Link copied to clipboard
object Companion
Link copied to clipboard
@Serializable
@SerialName(value = "freeze")
data class Freeze(val hostId: String, val roster: Set<String>, val epoch: Long) : LobbyMessage

Host→all: "closing the lobby; roster are the members; ack if I'm your elected host."

Link copied to clipboard
@Serializable
@SerialName(value = "freeze-ack")
data class FreezeAck(val hostId: String, val epoch: Long) : LobbyMessage

Member→host: "agreed you're host, I'm ready."

Link copied to clipboard
@Serializable
@SerialName(value = "reopen")
data class Reopen(val epoch: Long) : LobbyMessage

Host→all: "freeze aborted — back to the lobby."