# P23 — Contratos, SRP, PAC e sanções

| Campo | Valor |
|---|---|
| Programa | F7+ — operação, estrutura e conteúdo |
| Status | `planejado` |
| Depende de | P8, P9 |
| Habilita | P24, P29 |
| Tamanho | **G** (4–6 sessões) |
| ADRs | ADR-051 (importação CSV), ADR-017, ADR-018, ADR-019, ADR-026, ADR-027, ADR-033, ADR-035, ADR-042 |

## 1. Objetivo

Fechar o ciclo de **compras públicas** que o PNTP cobra além da licitação: atas de adesão SRP,
plano de contratações anual (PAC), contratos com aditivos, fiscais e ordem cronológica de
pagamentos. O P8 publica o processo; o P23 publica o contrato e a execução.

**Resultado observável:** o cidadão consulta um contrato, baixa o inteiro teor e os aditivos, vê o
fiscal responsável e a ordem de pagamentos com justificativa; a ata SRP e o PAC estão em seções
próprias; nada duplica a licitação.

## 2. Escopo fechado

### S1 — Contratos e aditivos (9.1–9.2)

- Módulo `Transparencia/Contratos` (token `contratos`).
- `contratos` + `contrato_aditivos` conforme backlog `08-09` §2.
- `UNIQUE (numero, ano)`; aditivo `UNIQUE (contrato_id, numero)`.
- `/transparencia/contratos` lista/filtros por período/contratado; detalhe com objeto, valor,
  vigência, aditivos e anexos; CSV; 3 anos; `Atualizado em`.
- Contrato publicado imutável; correção = errata/aditivo; `down()` backup.
- Inteiro teor + aditivos em PDF pesquisável via Media; link same-origin.

### S2 — Fiscais (9.3)

- `contrato_fiscais` separado do detalhe; lista `/transparencia/contratos/fiscais` com fiscal,
  contrato, portaria, período; filtros; CSV; 3 anos.
- Fiscal pode ser servidor (P16) ou nome/portaria; sem CPF.

### S3 — Ordem cronológica de pagamentos (9.4)

- `contrato_pagamentos` com vencimento, pagamento, credor, valor, categoria e
  `justificativa_ordem` quando fora de ordem.
- `/transparencia/contratos/ordem-pagamentos`; filtros por mês/categoria/credor; CSV; 3 anos.
- Publicação mensal; `Atualizado em`.

### S4 — SRP e PAC (8.5–8.6)

- `ata_srp` + `ata_adesoes`; `/transparencia/licitacoes/atas-srp`; filtros exercício/fornecedor;
  CSV; 3 anos.
- `plano_contratacoes`; `/transparencia/licitacoes/plano-contratacoes`; filtro exercício; CSV.
- **PAC não aceita declaração de não elaboração**; se não houver, o critério fica sem pontuação.

### S5 — Integração e fechamento

- Cross-links: contrato ↔ licitação (P8); fiscal ↔ servidor (P16); sanção ↔ P17.
- API read-only com ETag; JSON-LD; sitemap; busca; 4 locales; axe.
- E2E: contrato/aditivo/fiscal/pagamento; SRP/PAC; CSV; `Atualizado em`; 3 anos.
- `make check` 2× + `E2E=1`; cobertura ≥90%; query count.

## 3. Fora de escopo

- Pregão eletrônico, assinatura digital (P13), integração com sistema de compras.
- Contratos de estatais/consórcios (N/A).
- Substituir o P8; aqui é o pós-licitação.

## 4. Fatias de sessão

| Sessão | Entrega | Prova | Depende |
|---|---|---|---|
| **P23.S1** | contratos + aditivos + inteiro teor | unique; imutável; PDF; CSV | P8 |
| **P23.S2** | fiscais | lista separada; filtros; CSV | S1 |
| **P23.S3** | ordem de pagamentos | justificativa fora de ordem; CSV | S1 |
| **P23.S4** | SRP + PAC | atas/adesões; PAC real; CSV | P8 |
| **P23.S5** | integração + E2E/docs | cross-links; a11y; 2× check | S1–S4 |

## 5. Contratos e dados

- **Módulo:** `Transparencia/Contratos`; extensões em `Publicacoes/Licitacoes`.
- **Tabelas:** `contratos`, `contrato_aditivos`, `contrato_fiscais`, `contrato_pagamentos`,
  `ata_srp`, `ata_adesoes`, `plano_contratacoes`.
- **Rotas:** `transparencia.contratos.*`, `licitacoes.atas_srp.*`, `licitacoes.pac.*`.
- **Portas:** `SitemapSource`, `SearchSource`, `DatasetSource`; export via `Services\OpenData` (P5.5).
- **Eventos:** `contratos.published/updated/archived`, `licitacoes.ata_published`,
  `licitacoes.pac_published`.

## 6. DoD

- [ ] 9.1 relação + aditivos; 9.2 inteiro teor; 9.3 fiscais em lista; 9.4 ordem + justificativa.
- [ ] 8.5 atas SRP + adesões; 8.6 PAC real.
- [ ] HTML, sem login, CSV, `Atualizado em`, 3 anos, filtros.
- [ ] Contrato imutável; aditivo separado; anexo privado 403.
- [ ] API/ETag; JSON-LD/sitemap; 4 locales; axe.
- [ ] `make check` 2× + `E2E=1`; cobertura ≥90%.

## Fechamento — ficha de revisão

> **Obrigatório antes de fechar:** criar `_to_revision/P23-contratos-srp-pac.md` e seguir
> `_to_revision/README.md` + `_to_revision/PROTOCOLO.md` (v2.0). A ficha não é gate de build; é a
> entrada da fila de revisão profunda.

- Cabeçalho: fase, `kd` épico/tasks/slices, âncoras (este arquivo, ADRs e código) e status
  `⬜ pendente` → `🟡 em revisão` → `✅ revisado` / `🔧 com correções`.
- Conteúdo: o que foi implementado, arquivos/superfícies a revisar, checklist D1–D14 aplicável,
  riscos e observações.
- Fechamento: preencher “Notas da revisão” com data/revisor/resultado e achados (`kd write
  --anchor`), atualizar a fila em `_to_revision/README.md` e `_to_revision/_inventario.md`.
- Achado com correção exige teste vermelho→verde; a fase só é `closed` no `kd` com a ficha
  registrada.

## 7. Riscos

| Risco | Mitigação |
|---|---|
| Contrato só no detalhe da licitação | módulo próprio; FK opcional |
| Aditivo sobrescreve | imutável + aditivo |
| Pagamento fora de ordem sem justificativa | campo obrigatório; teste |
| PAC simulado | não publicar declaração; sem ponto |
| Duas verdades de sancionado | P17 é dono; link |
| Anexo privado exposto | policy + teste 403 |

## 8. Retomada

```bash
kd prime
kd ask "PNTP contratos aditivos fiscais ordem pagamentos SRP PAC"
kd task list --ready
```

Ler: `wiki/backlog/pntp-2026/08-09-licitacoes-contratos.md` → `PNTP.md` §4 (dims. 8–9) → P8/P17.
