WindowClosed

There is no window to resume onto, and no host refusal was involved.

As a HostVerdict: the window for this peer elapsed, or the token was already spent. Terminal — no later attempt with these credentials can succeed. Distinct from WindowNotYetOpen, which looks identical from the outside but is transient (#1572).

As a JoinerOutcome it is a purely local answer, and the host said nothing at all: the room is already terminal (it was left, or the host was lost), or the Resume frame could not be sent. A host's refusal — including one that says the window elapsed — arrives as Refused instead (#2364), so this value never carries a reason the host gave. Either way the remedy is the same: re-join fresh.