# Task 003 — Sondas (V2)

**Depende de:** 001, 002
**Bloqueia:** 006, 007, 009, 010

## Objetivo

Persistência V2 das duas tabelas. Seguir o padrão de `Solicitacoes/Sondas/SolicitacaoSonda.php`. **Nunca SQL cru** — só `update()` / `create()` / `find()` do `ModelInteligencia`.

## Deliverables

### `Sondas/OtpVerificacaoSonda.php`

Métodos esperados:
- `make(array|object $data): self`
- `getData(): ?object`
- `save(bool $returnData = false): bool`
- `destroy(?int $id = null): bool` — soft delete via `block = 0`
- `findById($id)` (herdado)
- `findAtivoPorContextoEReferencia(string $contexto, string $referencia): ?object` — devolve o OTP **mais recente, não-final**, para um par `(contexto, referencia_externa)`. Útil para "reenviar" e "validar".
- `listarHistoricoPorReferencia(string $contexto, string $referencia): array` — todos os OTPs do par, mais novo primeiro.

### `Sondas/OtpEventoSonda.php`

Append-only — não tem `update`. Métodos:
- `make()`, `save()` (só create).
- `listarPorOtp(int $otpId): array` — em ordem cronológica.

## Critério de aceite

- Lint OK.
- `find()` usa parametros nomeados como nas demais sondas (`":st", "st={$status}"`).
- Sem `var_dump`/`echo` esquecido.
