Migração de Host
Resumo
Define o que acontece quando o host de uma sala/partida cai. A arquitetura do Conduta é host-autoritativa (ver
project-conduct/CLAUDE.md), então a queda do host bloqueia a sala se nada for feito. A política decidida é migrar, nunca cancelar: a sala continua viva e o papel de host é transferido para o segundo jogador que conectou (o membro mais antigo depois do host original). A janela de espera antes de migrar é a mesma do AFK — exceto quando o host claramente desistiu, caso em que a migração é imediata.Esta nota registra as decisões do card Definir tratamento de desconexão do host (2026-05-10).
Decisão central: migrar, não cancelar
- Quando o host cai, a sala não é cancelada e a partida não termina.
- O sistema elege um novo host e a partida segue do estado em que estava.
- A regra vale tanto no lobby quanto mid-match.
Cancelar a sala foi descartado porque o impacto nos demais jogadores é muito maior que o ganho operacional — uma partida em curso interrompida por queda do host é a pior experiência possível para os outros 11 participantes.
Critério de eleição
- O novo host é o jogador humano mais antigo da sala depois do host original — em prática, o segundo jogador que conectou.
- A ordem de conexão precisa ser conhecida pelo servidor para que a regra seja determinística e auditável.
- Se o segundo conectado também já tiver saído quando a migração disparar, a regra cascata: passa para o terceiro, depois quarto, e assim por diante.
- Bots não viram host. A migração só considera jogadores humanos ainda na partida (ver Quórum sobre o preenchimento por bot).
A escolha por “mais antigo” — em vez de critérios técnicos como menor ping ou aleatório — é proposital: é uma regra simples, previsível e que tende a recair em jogadores com sessão mais estável (afinal, eles já estavam ali há mais tempo sem cair).
Janela de tolerância
A janela de espera antes da migração disparar segue duas regras conforme o cenário:
| Cenário | Comportamento |
|---|---|
| Queda de conexão / segundo plano | Espera a mesma janela do AFK: 3 minutos antes de migrar. Se o host voltar dentro desse tempo (via Reconexão ou Segundo Plano), ele retoma o papel de host normalmente. |
| Desistência confirmada (host fechou o app, saiu pela UI, kick voluntário) | Migração imediata. Não há razão para esperar — o sinal de saída já é definitivo. |
A simetria com a janela do AFK foi escolhida para manter um único contador mental de “quando alguém é considerado fora”: tanto AFK quanto host caído seguem a mesma régua de 3 min. Isso simplifica tanto a implementação quanto a comunicação ao jogador.
Pendências (a definir em rodadas futuras)
- Sinalização ao jogador eleito: o novo host é avisado? Existe alguma UI específica que indique “você é o host agora”?
- Sinalização aos demais: a mesa precisa saber que houve migração? Ou é uma transição silenciosa?
- Migrações encadeadas: o que acontece se o novo host cair antes de assumir efetivamente? A regra cascata vale, mas o tratamento exato precisa ser detalhado.
- Perda de estado aceitável durante a migração — categoria que o card listava mas ficou explicitamente fora do escopo desta decisão. Precisa ser fechada com o time técnico antes da implementação.
- Fallback para server-authoritative se a migração for tecnicamente inviável em algum cenário — também fora do escopo desta decisão; depende de avaliação técnica.
- Interação com Quórum: se a sala fica só com bots após várias quedas (sem humano elegível para host), a partida deve seguir, encerrar, ou virar partida pura de bot? Pendente.