Files
GTI_GERENCIADOR_FISCAL/docs/dossie_contador.md
T
gtiandClaude Sonnet 5 e935ed61d5 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>
2026-09-28 09:44:05 -03:00

74 lines
5.4 KiB
Markdown

# Dossiê para o contador — Missão 2 (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.
## (a) Em CRT=1, o PIS/COFINS por item segue o cadastro do produto ou a operação/regime?
**Evidência**: nos 5 bancos auditados (Agent 2/GTI, CONSTRUCAO, MMMODAS, RINCAO, UNIAO — CRT 1 e
CRT 3), o cadastro do produto (`C000025`) **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 Agent 2). Em CONSTRUCAO, MMMODAS, RINCAO e UNIAO, 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 34.946 itens de NFC-e emitidos pelo Agent 2, 3.336 (9,5%) trazem CST de
PIS/COFINS = "01" — mas **3.336 desses 3.669 itens estão concentrados no ano de 2022** (90,9% dos
itens daquele ano); nos demais anos com dados (2018, 2023, 2024, 2025, 2026), a taxa é 0%. O ano de
2022 já havia sido sinalizado em outra auditoria (`docs/AI_PROJECT_STATE.md`, mission
"Product Fiscal Defaults Engine V1") como um período com problema de integridade de dados (drift de
identidade de produto em dezembro/2022). 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 Firebird** (`RDB$RELATION_FIELDS`/`RDB$CHECK_CONSTRAINTS` em `C000025.CFOP_ENTRADA`):
coluna **NULLABLE**, **sem DEFAULT**, **sem CHECK/domínio** — o próprio SGV nunca exige um valor
aqui a nível de banco.
- **Uso real é muito diferente entre clientes**: no Agent 2 (GTI), CFOP_ENTRADA está em branco em
527/527 produtos (100%). Em RINCAO, 891/894 (99,7%) em branco. Mas em CONSTRUCAO, MMMODAS e UNIAO
o campo está **preenchido** em 99,8%/99,9%/99,97% dos produtos, com valores plausíveis (1102, 1403,
2202 etc.) — 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 nesta sessão** (requer acesso ao executável da tela de entrada de nota, que não
fizemos): se a tela de lançamento de nota de compra do SGV 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 no SGV 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 — Missão 2, Bloco 3.4).
## (d) O que mais o dry-run deixou como decisão pendente com evidência insuficiente?
- **COD_ORIGEM_MERCADORIA** (origem da mercadoria): nenhuma fonte automática existe no ERP para
decidir nacional/importado — 526 de 527 produtos do Agent 2 não têm nenhuma evidência. Só pode
ser respondido produto a produto ou por grupo, nunca por uma regra geral.
- **icms_treatment** para 12 produtos (Agent 2) cujo CSOSN está em branco — a maioria concentrada em
produtos de teste/cadastro incompleto (nomes como "TESTE...", "BUG", "SDFSDFSD"), mas 12 produtos
reais também aparecem (Coca-Cola, queijos, peixes) — ver `docs/runs/GTI_dryrun_universe_summary.json`.
- **30 produtos com CSOSN em branco no Agent 2** (medição em 2026-09-28; uma medição anterior de
2026-09-27, registrada em `central/app/fiscal_context_ui.py`, contava 28 — a diferença de 2 é
compatível com o cadastro de produtos de teste que muda dia a dia neste ambiente, não uma
divergência de regra). Nenhuma simulação escreve nada; o padrão 102 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 102 cegamente).
## Como usar este dossiê
Cada resposta é dada uma única vez, no painel ("Contexto Fiscal", aba do Agent), nunca escrevendo
nada no Firebird diretamente — a decisão fica registrada e auditada (`FiscalContextEntry`), 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.