feat: audited-decision gate for PIS/COFINS and CFOP_ENTRADA NOT_APPLICABLE/OPERATION_TIME

Missao 2 (fechamento de lacunas fiscais, read-only + UI/engine gated):
- field_contract: pis_cofins_profile now also accepts the literal sentinels
  NOT_APPLICABLE/OPERATION_TIME, resolving to NA only from an audited
  FiscalContextEntry - never inferred from emission statistics. CFOP_ENTRADA
  under an already-decided entry_scope=MIXED_OR_DYNAMIC now resolves to NA
  instead of MANUAL, so it stops blocking product completeness and stops
  re-asking an already-answered question. Regression tests prove: no ADMIN
  decision => unchanged old behavior; decision present => gated bucket, no write.
- context_keys: validate_entry accepts the two sentinels for pis_cofins_profile.
- Contexto Fiscal UI: PIS/COFINS and CFOP_ENTRADA cards show the Bloco 2
  cross-database evidence (5 installations, CRT 1 and 3: emission never reads
  the PIS/COFINS cadastral fields anywhere) and a link to an ADMIN-facing,
  anonymized dossie-for-the-accountant; entry_scope is now a dropdown.
- release/tests: decoupled the Hub's GTI_FISCAL_VERSION from the Agent's own
  version (test_versions_are_coherent_across_hub_and_packages vs the new
  test_agent_version_is_internally_coherent) - a Hub-only release must not
  require touching, rebuilding or republishing the Agent.
- New read-only evidence: docs/runs/GTI_dryrun_universe_summary.json (527
  products, Agent 2's real database), docs/runs/BLOCO2_PIS_COFINS_CROSS_DB_V1.json
  (5 installations), docs/fiscal_completeness_matrix.md, docs/dossie_contador.md
  (internal, real names) + central/static/docs/dossie_contador.md (public,
  anonymized - no CNPJ/razao social/product names), docs/AGENT2_UPGRADE_RUNBOOK_V1.md.
- CLAUDE.md: recorded the permanent fiscal-mission rules (no AI/scraping, no
  Firebird schema changes, deploy only via deploy_hub.ps1, never reenroll,
  no remote access to client Agent hosts, no client data in unauthenticated
  static routes).

No schema/migration change. Zero Firebird writes (new scripts never open a
write connection). Hub only - Agent code untouched.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
gti
2026-09-28 09:44:05 -03:00
co-authored by Claude Sonnet 5
parent 1621ea4e0b
commit e935ed61d5
21 changed files with 1066 additions and 35 deletions
+68
View File
@@ -0,0 +1,68 @@
# Dossiê para o contador (2026-09-28)
Este documento não afirma nenhuma regra fiscal. Cada pergunta mostra a evidência real medida
(somente leitura, sem gravação em nenhum banco) e qual clique na tela "Contexto Fiscal" do painel
a resposta libera. Identificadores de cliente foram substituídos por rótulos genéricos
(Cliente A–E); nenhum nome de produto, CNPJ ou razão social aparece aqui.
## (a) Em CRT=1, o PIS/COFINS por item segue o cadastro do produto ou a operação/regime?
**Evidência**: em 5 instalações auditadas (Cliente A, CRT 1; Clientes B/C/E, CRT 1; Cliente D,
CRT 3), o cadastro do produto **nunca** tem os campos de PIS/COFINS usados pela emissão: mesmo
quando a nota fiscal emitida traz um CST de PIS/COFINS preenchido, o cadastro está em branco para
o mesmo produto (23 casos confirmados no Cliente A). Nos Clientes B, C, D e E, a emissão nunca
preenche o CST de PIS/COFINS (0% dos itens, em todos os anos de histórico disponíveis). Isso indica
que a emissão não lê o cadastro — mas não decide se o valor correto é "não aplicável", "por
operação" ou um perfil fixo por empresa. **Libera**: card "Perfil de PIS/COFINS" → escolher
`NOT_APPLICABLE`, `OPERATION_TIME` ou um perfil JSON de 6 campos.
## (b) O CST 01 emitido em ~9,5% dos itens é intencional?
**Evidência**: dos itens de NFC-e emitidos pelo Cliente A, 9,5% trazem CST de PIS/COFINS = "01" —
mas esses itens estão concentrados quase inteiramente no ano de 2022 (mais de 90% dos itens
daquele ano); nos demais anos com dados, a taxa é 0%. O ano de 2022 já havia sido sinalizado em
outra auditoria interna como um período com problema de integridade de dados. A leitura mais
provável é que **não é uma política atual deliberada** — é um comportamento isolado de um período
específico, possivelmente uma versão antiga do software de emissão ou uma configuração temporária.
Não decidimos isso por evidência insuficiente para confirmar a causa exata; a pergunta é se o
contador reconhece esse padrão de 2022.
## (c) CFOP_ENTRADA no cadastro do produto é necessário ou é sempre definido na nota de compra?
**Evidência**:
- **Schema do banco**: a coluna é opcional no próprio banco de dados (sem obrigatoriedade, sem
valor padrão, sem regra de validação) — o sistema nunca exige um valor aqui a nível de banco.
- **Uso real é muito diferente entre clientes**: em dois clientes o campo está praticamente sempre
em branco; em outros três está preenchido em quase 100% dos produtos, com valores plausíveis —
ou seja, alguns clientes efetivamente mantêm esse cadastro, outros não.
- Isso mostra que não existe uma regra universal: depende de como cada loja opera. Por isso o motor
já trata isso como uma decisão por instalação (`entry_scope`), nunca uma regra fixa do sistema.
- **Não verificado ainda** (requer acesso à tela de entrada de nota do sistema, que não fizemos):
se a tela de lançamento de nota de compra lê o CFOP_ENTRADA do cadastro como sugestão inicial, ou
sempre pede a digitação manual. Roteiro de 5 passos para teste manual:
1. Anote o CFOP_ENTRADA atual de um produto de teste (ou deixe em branco).
2. Abra o cadastro do produto e grave um CFOP_ENTRADA diferente (ex.: 1102).
3. Lance uma nota de entrada (compra) desse mesmo produto.
4. Veja se o CFOP do item da nota já vem preenchido com o valor do cadastro, ou em branco.
5. Repita com CFOP_ENTRADA em branco no cadastro e confirme se a nota exige digitação manual.
- **Libera**: card "CFOP de entrada padrão" → `INTRA`, `INTER` ou `MIXED_OR_DYNAMIC` (este último
não bloqueia mais a completude do produto).
## (d) O que mais o levantamento deixou como decisão pendente com evidência insuficiente?
- **Origem da mercadoria** (nacional/importado): nenhuma fonte automática existe para decidir isso
— a grande maioria dos produtos não tem nenhuma evidência. Só pode ser respondido produto a
produto ou por grupo, nunca por uma regra geral.
- **Tratamento de ICMS** para um pequeno grupo de produtos cujo código fiscal está em branco —
parte é cadastro de teste/incompleto, mas alguns produtos reais também aparecem.
- Um pequeno número de produtos com o código fiscal (CSOSN) em branco hoje. Nenhuma simulação
escreve nada; um valor padrão só se aplica de fato após a confirmação do "Tratamento padrão de
ICMS" no card correspondente, e mesmo assim o motor consulta o tratamento antes de propor o
código (nunca aplica um padrão cegamente).
## Como usar este dossiê
Cada resposta é dada uma única vez, no painel ("Contexto Fiscal", aba do Agent), nunca escrevendo
nada no ERP diretamente — a decisão fica registrada e auditada, e só depois disso o motor passa a
considerar o campo resolvido (ou explicitamente não-bloqueante). Nenhuma decisão aqui é assumida
por padrão.