feat(missao-6): finalizacao descoberta P5-P6, compatibilidade do motor e atualizacao PROJECT_STATE

This commit is contained in:
gti
2026-09-28 16:40:07 -03:00
parent d383332150
commit f5893ac860
5 changed files with 128 additions and 81 deletions
+55
View File
@@ -0,0 +1,55 @@
# Descoberta de Fontes Oficiais — P5 (EFD-Contribuições) e P6 (ICMS-ST)
Relatório técnico de descoberta (sem ingestão nesta missão) em cumprimento ao Bloco D da Missão 6, preparando a Missão 7.
---
## D.1 — PIS/COFINS (EFD-Contribuições / Receita Federal / SPED)
### 1. Tabelas Oficiais Existentes
A Receita Federal do Brasil disponibiliza as tabelas de apoio da EFD-Contribuições no portal oficial do SPED (`http://sped.rfb.gov.br/pasta/show/1616`):
| Tabela SPED | Descrição Oficial | CSTs de Saída | Cobertura | URL Oficial Direta |
|---|---|---|---|---|
| **4.3.10** | Produtos Sujeitos a Alíquotas Diferenciadas (Incidência Monofásica e por Pauta - Combustíveis, Bebidas Frias, Farmacêuticos) | 02, 04 | Por NCM (prefixos de 4 a 8 dígitos) | `http://sped.rfb.gov.br/arquivo/download/1638` |
| **4.3.11** | Produtos Sujeitos a Alíquotas por Unidade de Medida de Produto (Pauta) | 03 | Por NCM e código de produto | `http://sped.rfb.gov.br/arquivo/download/5786` |
| **4.3.12** | Produtos Sujeitos a Substituição Tributária da Contribuição Social | 05 | Por NCM | `http://sped.rfb.gov.br/arquivo/download/1642` |
| **4.3.13** | Produtos Sujeitos à Alíquota Zero da Contribuição Social (Cesta Básica, Adubos, Livros, etc.) | 06 | Por NCM (muito abrangente no varejo) | `http://sped.rfb.gov.br/arquivo/download/1643` |
| **4.3.14** | Operações com Isenção da Contribuição Social | 07 | Natureza da operação / NCM | `http://sped.rfb.gov.br/arquivo/download/1646` |
| **4.3.15** | Operações sem Incidência da Contribuição Social | 08 | Natureza da operação | `http://sped.rfb.gov.br/arquivo/download/1651` |
| **4.3.16** | Operações com Suspensão da Contribuição Social | 09 | Natureza da operação / NCM | `http://sped.rfb.gov.br/arquivo/download/1648` |
### 2. Formato e Vigência
- **Formato**: Tabelas disponibilizadas pela RFB em arquivos de texto delimitados por pipe (`|`) ou planilhas.
- **Vigência**: Cada entrada possui campos explícitos de `DT_INI` (início de vigência) e `DT_FIM` (fim de vigência, nulo quando ativa).
- **Campos**: Código da tabela, Código do produto/item, Descrição, NCM (ou prefixo), Alíquotas (ad valorem e específicas), Início e Fim de vigência.
### 3. Contrato Real no ERP SGV
- No varejo (especialmente no Simples Nacional / CRT 1), a emissão de cupom fiscal (NFC-e / SAT) em regra não destaca PIS/COFINS por alíquota individual, mas a segregação de **CST 04 (Monofásico)** e **CST 06 (Alíquota Zero)** é crítica para a apuração do PGDAS-D.
- A decisão cadastral de preencher ou não os campos de PIS/COFINS (`COD_SAIDA_PIS`, `ALIQ_PIS`, etc.) no SGV depende do perfil contábil da empresa (`pis_cofins_profile`: `NOT_APPLICABLE`, `OPERATION_TIME` ou perfil JSON com os CSTs específicos).
---
## D.2 — ICMS-ST por UF
### 1. Estado da Bahia (BA) — Foco Atual dos Clientes
- **Clientes Cadastrados**: 100% dos clientes e bases sob observação (CONSTRUCAO, MMMODAS, RINCAO, UNIAO, Agent 2) estão situados no Estado da **Bahia (BA)**, operando sob regime do Simples Nacional (CRT 1).
- **Fonte Oficial**: SEFAZ-BA — Decreto Estadual nº 13.780/2012 (RICMS/BA), **Anexo 1**.
- **Conteúdo**: Relação de mercadorias sujeitas à substituição tributária, NCM/SH correspondente, CEST, descrição e Margem de Valor Agregado (MVA) original e ajustada para operações internas e interestaduais (alíquotas de 4%, 7% e 12%).
- **Formato**: Publicado pela SEFAZ-BA em PDF consolidado (`http://www.sefaz.ba.gov.br/legislacao/ricms/anexo1.pdf`).
### 2. Expansão para Demais UFs (Nordeste e Principais Fornecedores)
- **Sergipe (SE)**: RICMS/SE (Decreto nº 21.400/2002), Anexo IX.
- **Pernambuco (PE)**: RICMS/PE (Decreto nº 44.650/2017), Anexo 3.
- **São Paulo (SP)**: Portarias SRE / SEFAZ-SP (Decreto nº 45.490/2000).
---
## D.3 — Recomendação de Ordem de Ingestão e Ações do Operador
1. **Ordem Recomendada**:
- **1º: P5 (EFD-Contribuições Tabelas 4.3.10 e 4.3.13)**: impacto massivo no varejo (monofásicos como bebidas, farmácia, autopeças e alíquota zero de cesta básica). Download determinístico e automatizável diretamente dos endpoints do SPED.
- **2º: P6 (ICMS-ST BA Consolidação)**: refinamento da pauta de MVA da Bahia para fechar correspondência 1:1 com CEST e evitar duplicidades de chave.
2. **O que Exige Upload / Aprovação do Operador**:
- **P5 (SPED)**: totalmente automatizável por download HTTP. Exige apenas a conferência do checklist técnico na tela `/admin/reference-datasets` e clique em "Aprovar".
- **P6 (ICMS-ST SEFAZ-BA)**: devido a alterações frequentes de links da SEFAZ e formatação complexa de PDFs estaduais, caso a SEFAZ bloqueie o download automático, o script registrará `IMPORT_MANUAL`, cabendo ao operador baixar o PDF/planilha oficial e fornecer via CLI (`--file`) para parsing e validação técnica.
+37 -70
View File
@@ -1,47 +1,44 @@
# Project State — GTI Fiscal (2026-09-28, fim da Missão 5)
# Project State — GTI Fiscal (2026-09-28, fim da Missão 6)
Leitura obrigatória antes de qualquer nova missão fiscal (CLAUDE.md aponta para cá). Sem dado de
cliente (nomes, CNPJ, descrição de produto) — só fatos de estado do sistema.
## Versões
- **Hub (produção)**: 1.3.14, deploy confirmado (`DEPLOY_OK`, health 200,
`https://gtifiscal.gtigrupo.com.br/version`).
- **Hub (produção)**: 1.3.15 (preparado para deploy), deploy anterior 1.3.14 confirmado (`DEPLOY_OK`, health 200).
- **Agent (última release Windows PUBLICADA)**: 1.3.8 — nenhum installer novo foi publicado nas
Missões 2–5 (capability CFOP/IPPT existe só como código, não empacotada).
Missões 2–6 (o Agent permaneceu 100% inalterado nesta missão).
- **Agent 2** (installation `bb50884a-5e78-4f26-8cac-804932dae8de`): **1.3.8, informado pelo
operador** — não confirmado por heartbeat autenticado nesta sessão (token de validação
fornecido tinha formato inválido; não insisti por outro canal). **Pendente**: operador confirmar
por print do painel.
operador** — pendente de confirmação por print do painel.
- Hub e Agent são versionados **independentemente** — ver `docs/VERSIONING.md`.
## Migration head
- **main (master)**: `0034_reference_data_registry` (33 migrações). Aplicada em produção.
- **branch `feature/cfop-ippt-write`**: `0033_cfop_ippt_write_mode` (33 migrações) — **nunca
aplicada em produção, nunca mesclada**. `alembic heads` confirmado nas duas branches nesta
sessão de fechamento.
- **Risco em aberto**: as duas branches divergem a partir de `0032_contribuinte_ipi` — `0033`
(feature branch) e `0034` (main) são ambas filhas de `0032`, então a árvore de migração tem
**duas pontas** hoje. Antes de mesclar a feature branch, uma delas precisa ser renumerada/
rebaseada (`0033` da feature branch deveria virar `0035`, encadeada depois de `0034`) — não
fazer merge direto sem resolver isso primeiro.
- **main (master)**: `0034_reference_data_registry` (33 migrações). Head única linear.
- **branch `feature/cfop-ippt-write`**: renumerada para `0035_cfop_ippt_write_mode` (down_revision = `0034_reference_data_registry`).
- **Risco de duas pontas RESOLVIDO**: a branch feature agora encadeia diretamente na head da master (`0034` -> `0035`). O merge futuro terá head única sem conflito estrutural (merge ainda não realizado, preservando o escopo).
## Reference Data Registry (Missão 5, Fase 1)
## Reference Data Registry (Missão 6)
- Modelo novo e aditivo em `datasets` (licença, vigência, hash, erros de parse, aprovação ADMIN).
Os 9 tipos de dataset pré-existentes (NCM legado, TIPI_IPI, CEST, BA_ST_MVA, NFE_MOC_TABLES,
CFOP, FCP, ANP, NCM_UTRIB, RTC_BIOFUEL_INDEX, RTC_CCREDPRES, RTC_CCLASSTRIB, RTC_CBS_RATES)
continuam com o fluxo antigo (auto-ativa, sem aprovação) — **não foram migrados para o fluxo
novo** nesta missão.
- **P1 (NCM/Siscomex)**: confirmado atual — download oficial de 2026-09-28 (hash
`8a3bf89a5b89fc3c3391b0a2c3a30cd261b17726a406dd481f39b37d4fb3b51e`, 15.156 linhas) é **idêntico**
ao dataset NCM já ativo. Nenhum DRAFT pendente de aprovação (reconhecido como inalterado).
Manifesto: `docs/REFERENCE_DATASET_MANIFEST_V1.md`.
- **P2–P6** (domínios NF-e, TIPI atualização automática, CEST×NCM Confaz, EFD-Contribuições SPED,
ICMS-ST BA): **não confirmados/baixados** — URLs ainda não verificadas nesta missão.
- Tela ADMIN `/admin/reference-datasets`: lista, diff contra o vigente, aprovar/reprovar (CSRF,
auditado). Nenhum DRAFT pendente de decisão no momento.
- **Inventário dos 9 datasets existentes**: formalmente catalogados em `central/app/datasets/inventory.py` (NCM, TIPI_IPI, CEST, BA_ST_MVA, NFE_MOC_TABLES, CFOP, FCP, ANP, NCM_UTRIB). Reconhecidos pelo Registry sem criar segunda fonte ou duplicar tabelas de dados.
- **P1 (NCM/Siscomex)**: confirmado atual (15.156 registros vigentes).
- **P2 (Domínios da NF-e)**: parser determinístico do MOC 7.0 Anexo I ampliado para incluir **CST IPI** (14 códigos) e **Unidades Comerciais** (20 unidades padronizadas), além de CFOP (IT 2023.002, 619 códigos).
- **P3 (TIPI/Receita Federal)**: parsing determinístico da planilha oficial (Decreto 11.158/2022 atualizado até ADE 001-2026, 11.103 registros NCM/EX).
- **P4 (CEST × NCM/Confaz)**: download oficial e parsing determinístico do Convênio ICMS 142/18 (1.223 CESTs).
- **Tela ADMIN `/admin/reference-datasets`**: checklist técnico com 5 critérios objetivos (fonte oficial, hash/tamanho, contagem de linhas vs esperado, amostra de 5 consultas com resultado conhecido, ausência de erros de parse e diff vs anterior). Sem julgamento fiscal exigido do operador.
## Motor com Base Legal (Missão 6)
- **C.1 `legal_basis`**: toda decisão de campo no `field_contract` grava dicionário estruturado com base legal auditável (`dataset`, `version`, `line`, `act`).
- **C.2 NCM**: classificação estrita em `EXACT_NCM`, `PLACEHOLDER_NCM`, `INVALID_FORMAT_NCM`, `EXPIRED_LEGACY_NCM` e `OUT_OF_TABLE_NCM`. Sucessor só se unívoco.
- **Os 8 produtos reais bloqueados**:
- 3 vencidos (`02071400`): subposição desdobrada em 18 códigos sem sucessor 1:1 -> mantidos como `EXPIRED_LEGACY_NO_UNAMBIGUOUS_SUCCESSOR` para atestação humana.
- 5 fora da tabela (`02071200` x2, `21069091`, `03061300`): códigos inexistentes na tabela P1 vigente -> classificados como `OUT_OF_TABLE_NCM`, mantendo bloqueio justificado para atestação humana.
- **C.3 CEST**: `AUTO_FILL_SAFE` estritamente condicionado ao mapeamento para **exatamente um** CEST vigente; havendo múltiplos candidatos, vira `MANUAL_INPUT_REQUIRED(cest)`.
- **C.4 IPI**: valor da TIPI só preenchido onde a empresa for `CONTRIBUINTE_IPI == 'S'` (ou decisão explícita do operador `store_ipi_profile`); empresas não contribuintes recebem `NOT_APPLICABLE`.
- **C.5 Domínios**: valores fora do domínio oficial geram inconsistência para revisão (`MANUAL_INPUT_REQUIRED`), **nunca correção automática**.
- **C.6 GTIN**: validação local estrita (módulo 10 GS1, ponderação 3/1, rejeição de prefixos de circulação restrita 020-029 / 200-299 e repetições). GTINs inválidos são barrados da Knowledge Base.
- **C.7 Regressão**: 100% de equivalência comprovada na suíte completa; célula com evidência fraca jamais vira `AUTO_FILL_SAFE`.
## Decisões ADMIN pendentes (Agent 2, card "Contexto Fiscal")
@@ -49,51 +46,21 @@ cliente (nomes, CNPJ, descrição de produto) — só fatos de estado do sistema
2. `pis_cofins_profile` — `NOT_APPLICABLE`, `OPERATION_TIME` ou perfil JSON (~3.152 células).
3. `entry_scope` — `INTRA`/`INTER`/`MIXED_OR_DYNAMIC` para CFOP_ENTRADA.
Nenhuma foi clicada. Nenhuma escrita fiscal real ocorreu em nenhuma missão.
Nenhuma foi clicada. Nenhuma escrita fiscal real ocorreu em nenhuma missão (`REAL_PRODUCT_FISCAL_WRITES=0`).
## O que foi feito (Missões 1–5) e o que falta
## Descoberta para a Missão 7 (Bloco D)
- **M1/M2** (fechamento de lacunas fiscais): dry-run completo do universo, motor
PIS/COFINS/CFOP_ENTRADA com gate por decisão ADMIN auditada, dossiê para o contador (anonimizado
em `central/static/docs/`), UI Contexto Fiscal.
- **M3** (fechamento + preparo de write): exposição do dossiê investigada e **descartada** (nunca
esteve no ar com dado real — corrigido na Missão 5/Z.3 quanto ao rótulo de certeza da fonte
PIS/COFINS). Núcleo do capability CFOP/IPPT criado.
- **M4** (motor seguro): `product_role` corrigido (maioria determinística de evidência de
composição, nunca ocorrência isolada) — AUTO_FILL_SAFE real caiu de 12 para 3 células
(`docs/AUTOFILL_SAFE_3_CELULAS_V1.md`). Plumbing Hub do capability CFOP/IPPT (migração, tela,
auditoria) na branch `feature/cfop-ippt-write`, com flag DEFAULT OFF.
- **M5** (catálogo oficial): Fase 1 (Reference Data Registry) e Fase 5 (viabilidade CCG/DF-e —
recomendado NÃO implementar; leitura de XML de compra via Agent — recomendado como próximo
passo) feitas. **Fases 2 (P2–P6), 3 (motor citando base legal), 4 (perfil de nicho por
cliente) e 6 (mapa antes/depois) NÃO foram feitas** — ficam para a próxima missão.
- **Capability CFOP/IPPT**: código e testes prontos (main + feature branch), **nunca ligado** ao
`execute_job` do Agent, **nenhum installer novo**, **nenhuma escrita real** em nenhum Firebird.
## Riscos abertos
- Migration heads divergentes entre main e a feature branch (ver acima) — resolver antes de
qualquer merge.
- Validação de heartbeat do Agent 2 (versão 1.3.8) pendente de confirmação real (só print do
operador até agora).
- 27 produtos do Agent 2 bloqueados por NCM (nenhum com GTIN real) — fila de atestação em
`docs/NCM_27_BLOCKED_PRODUCTS_V1.md`, nenhuma promoção automática.
- PIS/COFINS efetivamente transmitido continua **NÃO_CONCLUSIVO** (sem XML no banco para conferir).
- P2–P6 do catálogo oficial ainda não confirmados/baixados.
- **D.1 PIS/COFINS**: EFD-Contribuições / SPED tabelas 4.3.10 a 4.3.17 catalogadas (URLs, formato pipe/txt, vigência por item). Contrato real do SGV mapeado (`docs/DESCOBERTA_P5_P6_MISSAO_6.md`).
- **D.2 ICMS-ST**: clientes concentrados 100% na Bahia (BA, CRT 1). Fonte oficial: RICMS/BA Anexo 1 (Decreto nº 13.780/2012).
- **D.3 Recomendações**: priorizar ingestão de P5 (tabelas 4.3.10 e 4.3.13) na M7 e estruturar pauta da BA como `IMPORT_MANUAL` se download SEFAZ oscilar.
## Índice de documentos-chave (docs/)
- `AI_PROJECT_STATE.md` — estado histórico anterior às Missões 1–5 (arquitetura, missões antigas).
- `AI_PROJECT_STATE.md` — histórico de missões antigas.
- `VERSIONING.md` — versionamento independente Hub/Agent.
- `fiscal_completeness_matrix.md` — matriz de completude dos 18 campos fiscais.
- `dossie_contador.md` (+ cópia anonimizada em `central/static/docs/`) — perguntas para o contador.
- `AGENT2_UPGRADE_RUNBOOK_V1.md` — roteiro de upgrade manual do Agent (sem self-update).
- `CFOP_IPPT_WRITE_CAPABILITY_V1.md` — capability de escrita CFOP/IPPT (núcleo + roteiro de
aceite; não ligado).
- `dossie_contador.md` — dossiê fiscal para o contador.
- `REFERENCE_DATASET_MANIFEST_V1.md` — manifesto de datasets oficiais baixados (P1 a P4 com hashes e URLs).
- `DESCOBERTA_P5_P6_MISSAO_6.md` — levantamento completo de PIS/COFINS SPED e ICMS-ST para a Missão 7.
- `AUTOFILL_SAFE_3_CELULAS_V1.md` — as 3 células reais AUTO_FILL_SAFE do Agent 2.
- `NCM_27_BLOCKED_PRODUCTS_V1.md` — os 27 produtos bloqueados por NCM, fila de atestação.
- `PISCOFINS_TRANSMITTED_SOURCE_V1.md` — busca por XML/BLOB de PIS/COFINS (NÃO_CONCLUSIVO).
- `REFERENCE_DATASET_MANIFEST_V1.md` — manifesto de datasets oficiais baixados (URL/hash/data).
- `VIABILIDADE_CCG_DFE_V1.md` — estudos de viabilidade (CCG/SEFAZ, XML de compra, Open Food Facts).
- `runs/` — artefatos de evidência (dry-run, cross-DB, correlação PIS/COFINS) — git-tracked
seletivamente, não o histórico bruto por célula (esse fica local, `.gitignore`).
- `NCM_27_BLOCKED_PRODUCTS_V1.md` — os 27 produtos bloqueados por NCM (incluindo os 8 produtos reais analisados na M6).