Files
GTI_GERENCIADOR_FISCAL/docs/fiscal_completeness_matrix.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

4.3 KiB

Matriz de completude fiscal — 18 campos (Missão 2 / Bloco 4)

Evidência: dry-run read-only de 2026-09-28 sobre GTI.FDB (Agent 2, 527 produtos, CRT=1, UF=BA, CONTRIBUINTE_IPI=N — docs/runs/GTI_dryrun_universe_summary.json), cruzamento com CONSTRUCAO/ MMMODAS/RINCAO/UNIAO (docs/runs/BLOCO2_PIS_COFINS_CROSS_DB_V1.json) e metadados de esquema Firebird lidos diretamente (RDB$RELATION_FIELDS/RDB$CHECK_CONSTRAINTS). Nenhuma regra fiscal nova foi inventada: campos sem evidência suficiente ficam pendente de contador.

Campo Classificação Condição Fonte da evidência Status
CLASSIFICACAO_FISCAL (NCM) MANDATORY sempre dataset NCM oficial comprovado
CEST CONDITIONALLY_MANDATORY só quando o NCM tem CEST oficial único tabela CEST/CONFAZ comprovado
IPI CONDITIONALLY_MANDATORY só quando TIPI dá alíquota numérica não-ambígua TIPI/IPI comprovado
EX_TIPI OPTIONAL só quando o NCM tem múltiplas linhas TIPI (EX) TIPI/IPI comprovado
SITUACAO_TRIBUTARIA CONDITIONALLY_MANDATORY depende do NCM ser válido regra ST interna (BA Anexo 1) comprovado
CFOP CONDITIONALLY_MANDATORY não aplicável a INPUT (matéria-prima) product_role + ST comprovado
CFOP_ENTRADA OPERATION_TIME_ONLY quando entry_scope=MIXED_OR_DYNAMIC (decisão ADMIN auditada); caso contrário CONDITIONALLY_MANDATORY (INTRA/INTER) decisão ADMIN + product_role + ST; schema Firebird: coluna NULLABLE, sem DEFAULT, sem CHECK — o próprio SGV nunca exige valor comprovado (schema); decisão de escopo pendente por instalação
CST NOT_APPLICABLE CRT=1 (Simples) sempre usa CSOSN, nunca CST regra CRT/emissão comprovado
CST_ENTRADA NOT_APPLICABLE mesma razão que CST regra CRT/emissão comprovado
CSOSN CONDITIONALLY_MANDATORY CRT=1; precisa de icms_treatment quando em branco dataset CSOSN + contexto ADMIN comprovado
ALIQUOTA (ICMS) NOT_APPLICABLE CSOSN Simples sem destaque de ICMS (102/103/300/400/500) regra CSOSN comprovado
COD_ORIGEM_MERCADORIA CONDITIONALLY_MANDATORY nenhuma fonte automática decide — sempre depende de contexto GROUP/PRODUCT nenhuma (evidência zero no ERP) pendente de contador/operador (sem fonte determinística)
CST_IPI NOT_APPLICABLE empresa não é contribuinte de IPI (C000004.CONTRIBUINTE_IPI=N) heartbeat do Agent comprovado
COD_ENTRADA_PIS / COD_SAIDA_PIS / ALIQ_PIS / COD_ENTRADA_COFINS / COD_SAIDA_COFINS / ALIQ_COFINS CONDITIONALLY_MANDATORY (bloqueante) até decisão ADMIN; podem virar NOT_APPLICABLE ou OPERATION_TIME_ONLY só por decisão ADMIN auditada (pis_cofins_profile) ver Bloco 2 — emissão nunca lê o cadastro em nenhum dos 5 bancos auditados evidência de emissão (NFCE_ITENS) + decisão ADMIN evidência forte (não-uso na emissão); classificação final pendente de confirmação contábil
INCIDENCIA_PISCOFINS OPTIONAL valor declarado válido não é contradito regra de incidência comprovado
PISCOFINS OPTIONAL idem regra de incidência comprovado
IAT OPTIONAL arredondamento, evidência fraca regra + contexto rounding comprovado (não bloqueia)
IPPT CONDITIONALLY_MANDATORY derivado de product_role/receita/compra quando role conhecido evidência de produção/compra comprovado

Regra de bloqueio do "COMPLETE"

central/app/enrichment/status.py::coverage_status já implementa exatamente a regra pedida: SAFE_BLOCKED só quando existe campo NEEDS_REVIEW ou INSUFFICIENT_EVIDENCE; NOT_APPLICABLE, ALREADY_SET e AUTO_FILL_SAFE nunca bloqueiam. Os dois ajustes de engine desta missão (CFOP_ENTRADA com entry_scope=MIXED_OR_DYNAMIC → NA; PIS/COFINS com decisão ADMIN NOT_APPLICABLE/OPERATION_TIME → NA) plugam diretamente nessa regra já existente — nenhuma mudança adicional foi necessária em coverage_status. Sem decisão ADMIN, os dois grupos continuam bloqueando exatamente como antes (testes de regressão em central/tests/test_field_contract.py).

Pendente de contador (não implementado, não bloqueia nada além do que já bloqueava)

  • COD_ORIGEM_MERCADORIA: nenhuma fonte automática existe; permanece MANUAL por produto/grupo.
  • Classificação final de PIS/COFINS (NOT_APPLICABLE vs OPERATION_TIME vs perfil fixo): ver docs/dossie_contador.md.