- link match sub-games to the hub through QPointer so a finished match can
never dereference a torn-down parent game
- a player who leaves the hub is dropped: no longer paired, current
undecided match awarded to the opponent, absent from the bracket
- refuse to spawn a match game when either participant is disconnected, and
set disconnectRemovesPlayer on match games so a mid-match disconnect ends
it instead of leaving a half-present participant
- match winner is a strict majority (gamesPerMatch/2+1); an exhausted
series with no majority is recorded as a draw so the round always advances
- match games are started without force-start: a missing deck no longer
kicks the player; the game stays open for deck selection
- buyes are handed to every leftover player, worst-ranked first, at most one
per player over the tournament
- tournament hubs cannot start on mere 'everyone ready': host force-start is
required and fewer than two players never starts
- sub-game creator copies the real player user info instead of fabricating
IsAdmin