# Governança: anti-vibecoding sem SDR

Versão normativa. Regra Cursor: `.cursor/rules/no-vibecoding-without-sdr.mdc`.

## 1. Princípio

Nenhuma implementação (código executável que altere comportamento do site, scripts ou ETL) pode ser criada ou alterada de forma **ad hoc** sem decisão registrada em **SDR** (`sdr-*.md`) no estado adequado ou sem **proposta / exceção** explícita.

## 2. Mensagem de bloqueio (para o agente reproduzir quando aplicável)

> **BLOQUEIO DE GOVERNANÇA — Implementação sem SDR**  
> Esta alteração implementa requisito técnico/funcional sem SDR `Aprovado`, sem proposta de alteração (`SDR-CHANGE-PROPOSAL-TEMPLATE.md`) aprovada ou sem exceção temporária (`SDR-EXCEPTION-TEMPLATE.md`).  
> **Ação obrigatória:** (1) identificar ou criar o `sdr-*.md` correspondente; (2) registrar rastreabilidade em `SDRs/traceability.md` ou comentário `SDR:` no código; (3) só então retomar a implementação.

## 3. Lista permitida (sem SDR novo)

- Correção **puramente tipográfica** em documentação sem mudança de significado.
- Ajuste de formatação / whitespace sem alteração de comportamento.
- Refatoração **mecânica** que preserva comportamento e **não** muda contrato público, desde que o arquivo já possua vínculo SDR e o SDR cubra o módulo.
- Atualização de dependência de **patch** com changelog de segurança, com registro posterior no SDR de infraestrutura (se existir).

## 4. Lista proibida sem SDR

- Novo endpoint, nova regra de negócio, novo fluxo de usuário.
- Alteração de validação, permissão, criptografia, retenção de dados.
- “Melhoria rápida” de UX que muda requisito implícito de contratação ou de compliance.

## 5. Fluxo obrigatório antes de implementar

```mermaid
flowchart TD
  A[Pedido de mudança em código] --> B{Existe SDR que cobre o escopo?}
  B -->|Não| C[Criar SDR ou trecho em SDR existente + proposta]
  B -->|Sim| D{Status Aprovado ou exceção ativa?}
  D -->|Não| E[Proposta ou exceção + data fim]
  D -->|Sim| F[Implementar + traceability / comentário SDR:]
  E --> F
  C --> F
```

## 6. Harmonia com fonte única

- **Duplicação entre `sdr-*.md`:** prevalece [sdr-fonte-unica.mdc](../../../.cursor/rules/sdr-fonte-unica.mdc) + índice.
- **Edição de código vs duplicação:** para código, prevalece **esta** trava; para texto normativo duplicado entre SDRs, prevalece **fonte única**.

## 7. Calibração para repositório documental

A regra Cursor usa **globs** restritivos (JS do site, scripts Python, `Dados-ibama`) para **não** bloquear edição massiva de Markdown/HTML de modelo quando o pedido for só documental. Quando o usuário pedir mudança **comportamental** em JS, a trava aplica-se integralmente.

## 8. Exceções temporárias

Usar [`SDR-EXCEPTION-TEMPLATE.md`](../../templates/SDR-EXCEPTION-TEMPLATE.md); registrar em `SDRs/governance/reports/` e data de encerramento obrigatória.
