# F5.I2.T3 — Spec `05-seguranca-lgpd.md`

| Campo | Valor |
|---|---|
| **Fase** | F5 — Borda |
| **Issue** | F5.I2 — Dados abertos e LGPD (plano 17) |
| **kd task** | `task_01pavt4d` |
| **Âncora** | `wiki/implementation/05-borda.md` |
| **Status da revisão** | ✅ revisado |

## O que foi implementado

- `wiki/specs/05-seguranca-lgpd.md` (dono **Core/Segurança + Portal/Lgpd**; `Em execução`) no
  índice: fronteira com as specs 14/16/11/12/04/06; headers/CSP (dono = edge/spec 16),
  cookies/sessão, login CMS (ADR-037), rate limit 3 camadas (ADR-021), cache/`ETag`/CSRF (ADR-022),
  upload; LGPD (classificação, DSAR, retenção/legal hold, auditoria de acesso, DPO, incidentes
  ANPD, analytics privacy-first) + STRIDE; pendências explícitas (F5.I3/I4, ROPA/DPIA).

## Arquivos para revisar

- `wiki/specs/05-seguranca-lgpd.md`
- `wiki/specs/README.md`

## Pontos de revisão

### PHP 8.4 / Laravel 12
- [ ] `declare(strict_types=1)`; DI por construtor (sem `new`/`app()`/`resolve()` no corpo); PHPStan `max`.
- [ ] Nativo primeiro; sem closure em rota; `env()` só em `config/`; validação em `FormRequest`.

### Determinismo (ADR-001)
- [ ] `Clock`/`IdGen` injetados; ordem explícita; idempotência provada por teste.

### Fronteiras (ADR-013/014/015)
- [ ] Camadas respeitadas; módulo consome `Services\{Name}\{Contracts,DTOs,Enums}\*`; nada de storage fora do Media.

### HTML/a11y (ADR-025) e CSS (ADR-010)
- [ ] Semântica, rótulos, alvos; sem `!important`/inline/CDN; `oklch`/`rem`.

### i18n (ADR-012)
- [ ] Nenhuma string visível fixa — inclusive **títulos de erro lançados em PHP** (o `ModuleI18nTest` só varre views).

### Dados (ADR-007/017) e segurança (ADR-020/021/026/030/035)
- [ ] `text`/`jsonb`/`uuidv7()`; `down()` → `backup_*`; CHECKs; PII cifrada; `throttle`; MIME real; `alt` obrigatório.

### Observabilidade/auditoria (ADR-024/035)
- [ ] Span + `log_event` com o **mesmo** `{service}.{action}`; auditoria via `AuditWriter`; sem PII.

### Específicos desta task

- [ ] Dono e status no índice (`tools/docs-check.sh`).
- [ ] Sem prometer alvo `make` inexistente; sem duplicar contrato de outra spec (16/14/21).
- [ ] Pendências nomeadas com a task que as fecha.

## Comandos úteis

```bash
make check              # caminho único (rápido)
make check E2E=1        # + Playwright/axe/perf (2× ao fechar o escopo)
```

---

> Revisar contra `AGENTS.md`, `wiki/adr/` e o plano citado. Registrar achados no `kd` (`kd write --anchor`) e, se houver correção, teste de regressão.

## Notas da revisão

| Data | Revisor | Resultado | Observações |
|---|---|---|---|
| 2026-10-19 | agente (PROTOCOLO v2.0) | ✅ | Doc-only. **Verificado OK**: `docs-check` verde; nenhum alvo `make` aposentado citado
(o `E2eDocsTest`/`DocsReferencesTest` cobrem a classe); limites de responsabilidade explícitos com
a spec 16 (edge) e a 14 (observabilidade/auditoria); pendências apontam F5.I3/I4 e ROPA/DPIA. |

> Resultado: `✅ revisado` · `🔧 com correções` · `⏭️ delegado` (com justificativa).
