# Execução — `CV-4` Sair do bolão por vontade própria

**Plano:** `CV-4-plano.md` · **Data:** 07/08/2026
**Ambiente:** backend local (`test/membros.e2e-spec.ts`,
`test/ciclo-vida.e2e-spec.ts`, `test/convite.e2e-spec.ts`,
`test/lembretes.e2e-spec.ts`, `test/meus-boloes.e2e-spec.ts`), Flutter em teste de
widget (`test/participantes_page_test.dart`).

**Resultado: 11/11 ✅** — nenhum defeito; 2 casos novos, ambos sobre garantias que
existiam mas nunca tinham sido verificadas pelo caminho da saída voluntária.

| ID | Resultado | Onde |
| -- | --------- | ---- |
| CV-4-01 | ✅ | e2e "participante sai, o vínculo é encerrado e o histórico permanece" |
| CV-4-02 | ✅ | e2e mesma suíte (contagem de palpites intacta) |
| CV-4-03 | ✅ **novo** | e2e "CV-4-03 saída voluntária não recalcula o ponto de quem ficou" |
| CV-4-04 | ✅ | e2e "quem saiu não palpita mais nem lê o bolão" |
| CV-4-05 | ✅ | e2e "não lembra quem saiu do bolão" |
| CV-4-06 | ✅ | e2e "não deixa o bolão sem administrador" |
| CV-4-07 | ✅ **novo** | e2e "CV-4-07 o criador não sai nem havendo outro admin" |
| CV-4-08 | ✅ | e2e "quem saiu do bolão não volta — a saída é definitiva" |
| CV-4-09 | ✅ | e2e "deixa de listar para quem saiu do bolão" |
| CV-4-10 | ✅ | widget "sair avisa que a saída é definitiva" |
| CV-4-11 | ✅ | widget "criador não recebe a opção de sair, e sabe por quê" |

## Observações

- **`CV-4-07` fecha uma ambiguidade que convidava a "consertos":** a recusa da
  saída do criador **não** é a regra do "último admin" — ela vale mesmo com outro
  admin presente. O caso prova as duas coisas de uma vez: o criador não sai, e o
  segundo admin sai. Sem isso, alguém leria a recusa como excesso de zelo e a
  afrouxaria, quebrando a decisão de 03/08 (admin permanente).
- **`CV-4-03` é a mesma garantia de `CC-9-03` pelo outro caminho.** Vale ter os
  dois: remoção pelo admin e saída voluntária passam pelo mesmo `leftAt` hoje, mas
  são duas rotas diferentes — se uma delas passar a recalcular, o ponto de quem
  ficou muda depois do jogo, e é o tipo de mudança que ninguém percebe olhando o
  diff.
- A saída sem admin, a reentrada e o lembrete já estavam cobertos, cada um na
  suíte do assunto correspondente. A execução mapeia onde cada caso vive em vez de
  duplicar o cenário.
