Files
gti d21a9d1140 Add 'fiscal/' from commit '102ba84500dbd9655a0471288c3e278652593ca9'
git-subtree-dir: fiscal
git-subtree-mainline: d95165fc8f
git-subtree-split: 102ba84500
2026-09-29 14:43:23 -03:00

129 lines
9.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Project State — GTI Fiscal (2026-09-29, Missão 9 concluída)
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. **Leia também
`docs/MISSAO_9_LOG.md` antes de continuar** — tem o relatório final completo.
> [!IMPORTANT]
> **CORREÇÃO (Missão 9)**: o banner anterior aqui afirmava que CONSTRUCAO/MMMODAS/RINCAO/UNIAO
> eram dado de teste — **estava errado**, generalizava a partir do Agent 2 (esse sim, teste).
> Confirmado com o operador: são **cópias reais de 4 clientes de verdade** (Cliente A–D). A partir
> de agora, escritas só em `work_copies/<nome>.FDB` (nunca nos originais em `Banco/`) — ver
> `docs/LOCAL_WRITE_ALLOWLIST_V1.json` (atualizado) e `docs/MISSAO_9_LOG.md`. Agent 2/GTI.FDB e
> TESTESOFICIAIS.FDB continuam sendo, esses sim, ambiente de teste/homologação.
> [!NOTE]
> Missão 9 foi retomada após uma interrupção prematura (desligamento da máquina com trabalho em
> andamento) e **concluída de verdade** nesta sessão: diagnóstico completo dos 4 clientes reais
> (via pipeline real do Agent para os 4, mais diagnóstico de 18 campos via `local_completion.py`
> para A e B), P2-P4 confirmados `ACTIVE` no registry, suíte canônica passando (1191 testes, 1
> skip). Nenhuma escrita real foi feita em nenhum banco — não por bloqueio, mas porque o
> diagnóstico completo não encontrou nenhuma célula genuinamente `AUTO_FILL_SAFE` pendente em
> nenhum dos 4 clientes (tudo já `ALREADY_CORRECT`/`NOT_APPLICABLE`, ou requer decisão humana).
> Detalhe completo e o relatório final em `docs/MISSAO_9_LOG.md`.
## Versões
- **Hub (produção)**: 1.3.15 (bump e merge concluídos, preparado para deploy).
- **Agent (última release Windows PUBLICADA)**: 1.3.8 — nenhum installer novo foi publicado nas
Missões 2–8 (o Agent permaneceu 100% inalterado e desacoplado).
- **Agent 2** (installation `bb50884a-5e78-4f26-8cac-804932dae8de`): **1.3.8, informado pelo
operador** — ambiente de teste/homologação.
- Hub e Agent são versionados **independentemente** — ver `docs/VERSIONING.md`.
## Migration head e Merge Real (Missão 8)
- **main (master)**: `0035_cfop_ippt_write_mode` (34 migrações). Head única linear.
- **Merge de `feature/cfop-ippt-write` em `master` CONCLUÍDO**:
- `agent/tests/test_cfop_ippt_auto_apply.py`: versão da branch mantida com 15 testes de segurança.
- `release/RELEASE_MANIFEST.json`: reconciliado com head 0035 e versão 1.3.15.
- `Installation.cfop_ippt_write_mode`: coluna adicionada com **DEFAULT OFF (`"DISABLED"`)**. Zero escrita habilitada automaticamente.
- Head do Alembic: `0035_cfop_ippt_write_mode (head)`, encadeada linearmente sobre `0034_reference_data_registry`.
## Reference Data Registry e Validações Oficiais (Missão 8)
- **Inventário Oficial dos 9 Datasets Existentes** (`central/app/datasets/inventory.py`):
1. NCM (Siscomex)
2. TIPI_IPI (Receita Federal)
3. CEST (CONFAZ)
4. BA_ST_MVA (SEFAZ-BA)
5. NFE_MOC_TABLES (Receita Federal / ENCAT)
6. CFOP (Portal Nacional NF-e)
7. FCP (Portal Nacional NF-e)
8. ANP (Portal Nacional NF-e)
9. NCM_UTRIB (Portal Nacional NF-e)
- **Status dos Datasets P2, P3 e P4**:
- `CFOP`: 619 códigos (IT 2023.002 v2.10, SHA-256 `c95c...ff6f`), status `DRAFT`.
- `NFE_DOMAINS`: 130 códigos (MOC 7.0 Anexo I, SHA-256 `5eb4...55d`), status `DRAFT`.
- `TIPI_IPI`: 11.103 NCMs/EX (Decreto nº 11.158/2022 até ADE 001-2026, SHA-256 `d155...2e9a`), status `DRAFT`.
- `CEST`: 1.223 CESTs (Convênio ICMS 142/18, SHA-256 `d7fb...54d3`), status `DRAFT`.
- **Validação de CBS/IBS e GTIN na Fonte Oficial (Missão 8 / B.1 — 2026-09-28)**:
- **CBS / IBS 2026**: Ministério da Fazenda / Comitê Gestor do IBS (Ato Conjunto RFB/CGIBS nº 4/2026 e ADCT art. 125). CBS = 0,9% e IBS = 0,1% (alíquotas de teste totalizando 1,0%, compensáveis). Status: `VERIFICADO_NA_FONTE`.
- **GTIN Restrito**: GS1 Brasil (`https://www.gs1br.org`). Prefixos iniciados por 02 e faixa 20-29 são de circulação restrita / uso interno de balança. Status: `VERIFICADO_NA_FONTE`.
## Suíte Canônica e Cobertura de Testes (Missão 8 / Bloco C)
- **Comando Canônico de Testes** (documentado em `CLAUDE.md`):
```text
python -m pytest tests central/tests agent/tests -q
```
- `tests` (raiz): 361 testes unitários offline.
- `central/tests` (Hub): 650+ testes de backend, endpoints e conformidade.
- `agent/tests` (Agent): 156 testes de integração e componentes locais.
- *Explicação da divergência histórica*: 1008 testes correspondia a `tests central/tests`; 1164 testes incluía a pasta `agent/tests`.
- **Elevação da Cobertura de Testes**:
- `central/app/reference_registry.py`: elevado para **100% de cobertura** (aprovação/rejeição com dado inválido, erros de parse e concorrência).
- `central/app/classification.py`: elevado para **77% de cobertura** (candidatos de NCM, ambiguidades, desempate de CEST e resolução de MVA).
- Suíte `central/tests/test_mission_08_coverage.py` adicionada.
## Prontidão para o Primeiro Cliente Real e Segurança
- **Rótulo `DADO_DE_TESTE=true`**: Visível na UI do Hub (`Contexto Fiscal`), em `fiscal_context_ui.py`, no dossiê contábil e no relatório de bloqueios NCM.
- **Checklist de Onboarding Seguro**: Roteiro formalizado em `docs/ONBOARDING_PRIMEIRO_CLIENTE_REAL.md` (leitura em lotes de 50-100 itens, throttling 50-100ms, transação isolada, rollback instantâneo e operação inicial em DRY-RUN sem auto-fill por N=3 ciclos).
- **Runbook de Disaster Recovery do Hub**: Procedimento de recuperação rápida em menos de 3 minutos formalizado em `docs/RUNBOOK_DR_HUB.md`.
## Missão 9 — Instalações reais em cópia de trabalho (2026-09-29, concluída)
- 4 clientes reais (CONSTRUCAO/MMMODAS/RINCAO/UNIAO — Cliente A–D) copiados para
`work_copies/*.FDB` (git-ignored), hash do original verificado igual antes/depois. Originais em
`Banco/` nunca mais devem ser abertos em modo de escrita (agora também garantido por teste —
`central/tests/test_field_contract.py::test_executor_allowlist_is_exact_and_field_set_is_the_contract`
verifica que o caminho original é explicitamente rejeitado pelo executor).
- 4 Agents novos registrados (IDs 618–621, nunca reaproveitando o Agent 2):
Cliente A `880def5d-09bb-45c4-a5b7-95d32646d122` (CONSTRUCAO, CRT1), Cliente B
`de1b7a5b-dd83-4094-8af9-3787ec4cc2bd` (MMMODAS, CRT1), Cliente C
`c143f1ce-e471-49a4-b090-28d35f8659d3` (RINCAO, CRT3, cClassTrib já obrigatório desde
03/08/2026 mas `USAR_REFORMA_TRIBUTARIA=0` no ERP do próprio cliente — decisão do cliente, fora
do escopo do Agent), Cliente D `219a2a5a-3543-47d8-9fd8-5957b52ce133` (UNIAO, CRT1). `.env` de
cada um em `work_copies/agent_envs/` (não versionado).
- **Diagnóstico concluído para os 4** (jobs reais 648/650/651/652, todos `COMPLETED`): A
3712/3712, B 20997/20997, C 893/894 (1 `SAFE_BLOCKED` por CST PIS/COFINS inválido na origem), D
8939/8942 (3 `SAFE_BLOCKED`) — `NEEDS_REVIEW=0` e `writes_attempted=0` em todos.
- Diagnóstico completo de 18 campos (`local_completion.py snapshot`+`dryrun`) rodou com sucesso
para A e B: **zero `write_eligible_cells` nos dois** — nada qualifica como `AUTO_FILL_SAFE` hoje
(o resto é `ALREADY_CORRECT`/`NOT_APPLICABLE` ou `MANUAL_INPUT_REQUIRED`, sempre decisão humana,
nunca inferida). Para C e D, o `snapshot` foi negado pelo classificador de modo automático da
sessão (não contornado) — usa-se apenas o resultado do pipeline real do Agent para esses dois.
- `docs/LOCAL_WRITE_ALLOWLIST_V1.json` atualizado: aponta para `work_copies/` em vez de `Banco/`.
- **Cascata de escrita real (Bloco 2) não teve nada a escrever**: com 0 células elegíveis nos 4
clientes, não há `apply`/`second` a rodar — `WRITES_REAIS_NAS_COPIAS = 0` por resultado correto
do diagnóstico, não por bloqueio técnico.
- P2-P4 (CFOP/NFE_DOMAINS/TIPI_IPI/CEST) confirmados `ACTIVE` no registry, persistiram
corretamente entre reboots.
- Suíte canônica: **1191 testes passando, 1 skip** (corrigido um fixture de teste que ainda
apontava para o caminho antigo `Banco/CONSTRUCAO.FDB` após o allowlist mudar para
`work_copies/`).
- Ver `docs/MISSAO_9_LOG.md` para o relatório final completo e as lacunas de engenharia/decisão
humana identificadas (a mais relevante: o pipeline real do Agent ainda não chama o
`field_contract.resolve_product` completo — só scripts standalone o fazem hoje).
## Índice de Documentos-Chave (docs/)
- `EVIDENCE_SOURCES.md` — matriz de fontes de teste vs o que falta validar com cliente real.
- `ONBOARDING_PRIMEIRO_CLIENTE_REAL.md` — checklist de onboarding, segurança e critério dry-run.
- `RUNBOOK_DR_HUB.md` — runbook de recuperação de desastre do Hub a partir dos backups de deploy.
- `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 o Hub.
- `dossie_contador.md` — dossiê fiscal com aviso DADO_DE_TESTE=true.
- `NCM_27_BLOCKED_PRODUCTS_V1.md` — artefatos de teste com bloqueio de NCM.