# Execução — plano `PP-5` (06/08)

**Veredito: ✅ Aprovado** — 11 de 11 casos passaram (12 testes: `PP-5-02` ganhou
um segundo teste para a borda exata).

| Caso | Resultado | Evidência |
| ---- | --------- | --------- |
| PP-5-01 | passou | `test/palpite.e2e-spec.ts` — "registra a rodada inteira" |
| PP-5-02 | passou | `test/palpite.e2e-spec.ts` — `PP-5-02` e `PP-5-02b` |
| PP-5-03 | passou | `test/palpite.e2e-spec.ts` — recusa via API direta |
| PP-5-04 | passou | `test/palpite.e2e-spec.ts` — "o admin também é recusado" |
| PP-5-05 | passou | `test/pp5_plano_test.dart` |
| PP-5-06 | passou | idem |
| PP-5-07 | passou | `test/palpite.e2e-spec.ts` — lote misto |
| PP-5-08 | passou | `test/pp5_plano_test.dart` + device |
| PP-5-09 | passou | `test/pp5_plano_test.dart` — zero chamadas ao servidor |
| PP-5-10 | passou | `test/pp5_plano_test.dart` |
| PP-5-11 | passou | `test/palpite.e2e-spec.ts` — `JOGO_FORA_DO_BOLAO` |

## Lacunas que a execução expôs

**`PP-5-02` não tinha cobertura.** A suíte testava "rodada passada" — semanas de
folga —, não o instante em que o prazo virou. Escrevi dois testes: kickoff a 1
segundo no passado, e kickoff praticamente igual a agora. Os dois recusam, o que
confirma a regra pretendida: **na dúvida o prazo fecha, nunca abre**
(`kickoff <= agora`).

**`PP-5-10` não era testável.** A transição automática de "aberto" para
"fechado" depende de tempo real: `pump(Duration)` move os timers falsos do
Flutter, mas não o `DateTime.now()`. Abri na `RodadaPage` a mesma costura que o
`RelogioDoServidor` já tinha — um relógio local injetável, usado só em teste.

Sem essa costura, a afirmação "o cartão fecha sozinho quando a contagem zera"
ficaria sem verificação nenhuma. É o tipo de comportamento que ninguém percebe
quebrado até alguém palpitar depois do apito.

## Avisos que não bloqueiam

⚠️ `PP-5-05` e `PP-5-06` são executados no nível do `RelogioDoServidor`, com o
relógio do aparelho injetado — não alterando o relógio do emulador. A lógica
verificada é a mesma que a tela usa (o offset contra o `serverTime`), mas uma
verificação em device com o relógio realmente mexido ainda vale antes do
release, porque cobre também o que o sistema operacional faz com timers quando o
usuário muda a hora.
