Files
GTI_GERENCIADOR_FISCAL/docs/PROJECT_STATE.md
T
gtiandClaude Sonnet 5 156392e7e3 docs+setup: Missão 9 (parcial, encerrada a pedido do operador mid-execução)
Correção de fato: CONSTRUCAO/MMMODAS/RINCAO/UNIAO são cópias reais de 4
clientes (Cliente A-D), não dado de teste como uma sessão anterior (Missão
6/7) generalizou por engano a partir do Agent 2 (esse sim, teste).
docs/EVIDENCE_SOURCES.md e docs/PROJECT_STATE.md corrigidos.

Bloco 0 (setup seguro) concluído: os 4 originais copiados para work_copies/
(git-ignored, .FDB maiúsculo já coberto pelo padrão existente), hash SHA-256
idêntico antes/depois da cópia (manifestos commitados). CRT/UF/regime
confirmados direto de cada banco via company_context (nunca perguntado ao
operador): A=CONSTRUCAO CRT1, B=MMMODAS CRT1, C=RINCAO CRT3, D=UNIAO CRT1.
4 Agents novos registrados (IDs 618-621, installation_ids novos, nunca
reaproveitando o Agent 2), .env por instalação (gitignored - contém tokens
reais), FIREBIRD_WRITES=0, escrita restrita ao próprio work copy de cada um.
docs/LOCAL_WRITE_ALLOWLIST_V1.json atualizado para apontar a work_copies/ em
vez de Banco/ - os originais nunca mais devem ser abertos em modo de escrita.

Bloco 1.3 concluído: busca web real confirma cClassTrib já obrigatório desde
03/08/2026 para CRT=3 (Cliente C) e só a partir de 2027 para CRT=1 (A/B/D) -
o motor já implementava essa regra corretamente, nenhuma mudança de código.

Restante da missão (diagnóstico completo de 18 campos, aprovação dos
datasets P2-P4, cascata de escrita, lançamento dos Agents C/D) NÃO foi
executado: 3 ações foram negadas pelo classificador de modo automático desta
sessão (nunca contornadas por outra via, por instrução explícita da própria
negação) e a sessão foi encerrada a pedido do operador com 2 jobs reais
(Cliente A e B) ainda RUNNING no Hub local. Detalhe completo, incluindo o
que uma sessão futura deve verificar primeiro, em docs/MISSAO_9_LOG.md.

Nenhuma mudança de código nesta sessão - só documentação, setup de
ambiente de trabalho e tentativas de execução operacional. Nenhuma escrita
fiscal real em nenhum banco (nem original, nem cópia).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-29 00:45:14 -03:00

109 lines
7.4 KiB
Markdown
Raw 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, fim da Missão 9 — encerrada a meio da execução)
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 detalhe completo do que ficou pendente.
> [!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.
> [!WARNING]
> **Missão 9 foi interrompida a pedido do operador (desligamento da máquina) com trabalho em
> andamento.** 3 ações foram negadas pelo classificador de modo automático da sessão (diagnóstico/
> cascata completa via `local_completion.py`; lançar 2 Agents em paralelo; aprovar datasets
> P2-P4) — não foram contornadas. 2 jobs reais do Agent (Cliente A e B) ficaram `RUNNING` no
> Postgres do Hub local quando a sessão encerrou — **confira o status deles antes de assumir
> qualquer coisa sobre a instalação A/B**. Detalhe completo 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, parcial)
- 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.
- 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**), Cliente D `219a2a5a-3543-47d8-9fd8-5957b52ce133` (UNIAO, CRT1). `.env` de cada um
em `work_copies/agent_envs/` (não versionado). Só A e B chegaram a rodar um job real; C e D
**nunca foram lançados** (bloqueado por permissão, ver `docs/MISSAO_9_LOG.md`).
- `docs/LOCAL_WRITE_ALLOWLIST_V1.json` atualizado: aponta para `work_copies/` em vez de `Banco/`.
- Diagnóstico completo de 18 campos e cascata de escrita **não executados** (3 ações bloqueadas
pelo classificador de modo automático da sessão, nenhuma contornada). Ver `docs/MISSAO_9_LOG.md`
para o detalhe exato e o que fazer numa próxima sessão.
## Í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.