# Execução — `PP-2` Editar palpite enquanto o prazo estiver aberto

**Plano:** `PP-2-plano.md` · **Data:** 07/08/2026
**Ambiente:** backend local (`test/palpite.e2e-spec.ts`), Flutter em teste de
widget (`test/prazo_na_rodada_test.dart`).

**Resultado: 9/9 ✅** — nenhum defeito novo; 2 casos novos, ambos sobre garantias
que sustentam a resolução de disputa.

| ID | Resultado | Onde |
| -- | --------- | ---- |
| PP-2-01 | ✅ | e2e "substituir o palpite mantém um registro e guarda a revisão" |
| PP-2-02 | ✅ | e2e mesma suíte (um `Prediction` por jogo/participante) |
| PP-2-03 | ✅ | e2e mesma suíte (revisão com o valor anterior) |
| PP-2-04 | ✅ | e2e "reenviar o mesmo palpite não cria revisão nova" |
| PP-2-05 | ✅ **novo** | e2e "PP-2-05 apuração usa a última versão enviada antes do apito" |
| PP-2-06 | ✅ | e2e "PP-5-02 recusa palpite no segundo seguinte ao apito" |
| PP-2-07 | ✅ | widget "recusa por prazo mostra o palpite que valeu, não o digitado" |
| PP-2-08 | ✅ **novo** | e2e "PP-2-08 corpo com userId de outra pessoa é recusado, não ignorado" |
| PP-2-09 | ✅ | widget "mostra o horário local do jogo…" + campos pré-preenchidos |

## Observações

- **`PP-2-05` é a garantia que encerra a discussão "eu tinha mudado".** Três
  versões enviadas com prazo aberto, apito, e a apuração usa a terceira — e a
  tentativa **depois** do apito não muda o que valeu. Sem este caso, a
  substituição estava testada, mas não a interação dela com a apuração.
- **`PP-2-08` verifica a diferença entre recusar e ignorar.** Campo `userId` no
  corpo responde **400**, não 200 com o campo descartado. Ignorar em silêncio é o
  que faz uma tentativa de furar autorização parecer que funcionou — e some do
  log. O comportamento vem do `ValidationPipe` com `forbidNonWhitelisted`, que
  vale para toda a API.
- `PP-2-04` continua sendo o caso com defeito real na história (revisão criada em
  todo envio, mesmo sem mudança de valor): a fila offline de `PP-4` reenvia o
  mesmo lote, e o histórico de auditoria encheria de linhas idênticas — deixando
  de servir exatamente para o que existe.
