# Execução — `PP-9` Admin vê quem ainda não palpitou

**Plano:** `PP-9-plano.md` · **Data:** 07/08/2026
**Ambiente:** backend local (`test/membros.e2e-spec.ts`,
`test/sigilo-pontuacao.e2e-spec.ts`), Flutter em teste de widget
(`test/participantes_page_test.dart`).

**Resultado: 9/9 ✅** — nenhum defeito; 1 caso novo cobrindo três lacunas de uma
vez (estado completo, estado depois do prazo, e quem saiu fora da cobrança).

| ID | Resultado | Onde |
| -- | --------- | ---- |
| PP-9-01 | ✅ | e2e "admin vê quem falta palpitar, SEM os placares" |
| PP-9-02 | ✅ | e2e mesma suíte (asserção sobre o JSON cru) |
| PP-9-03 | ✅ | e2e mesma suíte (`PARCIAL`) |
| PP-9-04 | ✅ **novo** | e2e "PP-9-04/07/09 completo, estado final depois do prazo…" |
| PP-9-05 | ✅ | e2e "participante comum não vê quem falta palpitar" |
| PP-9-06 | ✅ | e2e "admin novo NÃO ganha acesso a palpite oculto" |
| PP-9-07 | ✅ **novo** | e2e mesma asserção (prazo fechado, estado mantido) |
| PP-9-08 | ✅ | widget "falha no status de palpite não derruba a lista" |
| PP-9-09 | ✅ **novo** | e2e mesma asserção (quem saiu não aparece) |

## Observações

- **`PP-9-02` é o caso mais importante e o mais fácil de escrever mal.** A
  asserção é sobre o **JSON cru** da resposta (`not.toContain('homeScore')`), não
  sobre os campos que o teste escolheu inspecionar. É assim que se pega um campo
  novo que alguém acrescentou sem pensar — e esta é a única rota em que o admin
  recebe dado agregado sobre palpite alheio, então é por aqui que o sigilo de
  `PP-7` vazaria sem passar pela tela de palpites.
- **`PP-9-07` cobre o momento em que a lista é realmente usada:** depois de o prazo
  fechar, quando o admin explica no grupo por que alguém não pontuou. O estado
  continua correto e nenhum placar aparece nem então.
- **`PP-9-09`:** quem saiu não entra na cobrança. Cobrar palpite de quem saiu é
  cobrar ação impossível — e ainda expõe que a pessoa saiu, para quem não
  acompanhou.
