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árioComportamento
Queda de conexão / segundo planoEspera 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.

Ver Também