BecameHost

This peer is now the elected host, and the other members are still here. The peer that was hosting left the roster, ElectionLobby.host recomputed to ElectionLobby.selfId, and a member can never receive a Freeze from a host that is now itself — so the wait ended. Nothing collapsed: the seam is live and the co-members are parked in their own awaitRoom on it.

The recovery is ElectionLobby.start on this SAME lobby. The lobby's message collector is still running, the seam is intact, and every co-member is already waiting for a Freeze on it — so they ack the freeze round immediately and the session forms with no re-discovery.

Two obvious alternatives are wrong, and both lose the co-members:

  • Re-running electLobby(...) weaves a fresh seam. The co-members are still waiting on the old one. Nobody ever freezes them, and the promoted peer ends up hosting an empty lobby.

  • Calling ElectionLobby.leave first closes the shared seam, collapsing every co-member that was waiting on it into a Torn of their own.

Not emitted for the weave-in transient — this peer being momentarily the lowest id it has seen, before a lower peer propagates. That is not a promotion, and acting on it would start a session the real host is about to freeze anyway.