# Agente: detector de implementação sem vínculo SDR

Versão normativa. Regra Cursor: `.cursor/rules/implementation-without-sdr-detector.mdc`.

## 1. Escopo de código (neste repositório)

Pastas típicas de **implementação** (ajustar se o repositório crescer):

- `arquitetura-contratual/site/**/*.{js,mjs}` (excluir `**/vendor/**`, `**/*.min.js` geridos como vendor)
- `arquitetura-contratual/scripts/**/*.py`
- `Dados-ibama/**/*.py`
- Outros `scripts/**/*.py` na raiz do repositório

**Fora do escopo** deste detector: Markdown puro em `SDRs/`, `processo-contratacao/**/*.md` (salvo quando o pedido for explicitamente “implementação” embutida).

## 2. Definição de “vinculado”

Um arquivo de implementação é **vinculado** se atender **pelo menos um**:

1. Comentário no topo ou próximo à lógica principal: `SDR: sdr-NNNN-slug` (mesmo padrão do nome do arquivo sem `.md`).
2. Linha correspondente em [`SDRs/traceability.md`](../../traceability.md) (colunas arquivo + SDR).
3. O SDR `Aprovado`/`Em validação` contém a seção **17.2** citando explicitamente o caminho do arquivo.

## 3. Heurísticas

- Ignorar arquivos só de dados estáticos (ex.: `siglas.js` de dicionário) se documentado como isentos no relatório — **severidade baixa**.
- Arquivos novos (> N linhas de lógica) sem nenhum dos três vínculos → **Média** ou **Alta** conforme criticidade (auth, deploy, ETL).

## 4. Códigos de achado

| Código | Significado |
|--------|-------------|
| `IMPL-SEM-SDR-COMENTARIO` | Sem comentário `SDR:` |
| `IMPL-SEM-SDR-TRACE` | Ausente em `traceability.md` |
| `IMPL-SEM-SDR-SEC17` | SDR não cita arquivo na 17.2 |
| `IMPL-SDR-ORFA` | Comentário `SDR:` aponta para `sdr` inexistente |

## 5. Severidade sugerida

Para repositório **documental** com site estático: na ausência de risco de segurança, preferir **Baixa**/**Média** para gaps de vínculo; **Alta** apenas para lógica sensível (credenciais, bypass de validação).

## 6. Formato do relatório

- **Nome:** `implementation-without-sdr-report-AAAA-MM-DD-HHMM.md` ou `*-initial.md`.
- **Local:** `SDRs/governance/reports/`.
- **Conteúdo:** tabela `Arquivo | Linhas (aprox.) | SDR declarado | Achado | Severidade | Ação recomendada`.

## 7. Fluxo do agente

1. Varredura por glob nas pastas do escopo.
2. Checar comentário `SDR:` (regex case-sensitive sugerido: `SDR:\s*sdr-\d{4}-`).
3. Cruzar com `traceability.md` e, se possível, grep na pasta `SDRs/sdr-*.md` pelo path do arquivo.
4. Escrever relatório; **não** apagar código — propor linha em `traceability.md` ou comentário mínimo.
