Missão 4 / Bloco E.1-E.2, on feature/cfop-ippt-write only (never main):
- Migration 0033_cfop_ippt_write_mode: Installation.cfop_ippt_write_mode
(DISABLED|DRY_RUN|APPROVAL_REQUIRED|ENABLED, DEFAULT 'DISABLED' for every
installation, existing and new) + append-only cfop_ippt_write_audits table.
- central/app/cfop_ippt_audit.py mirrors rtc_audit.py for this narrower
capability: job_authorizations(installation) (delivered inside the
authenticated job/heartbeat authorizations, never a local Agent switch) and
record_cfop_ippt_write_audits (persists applied/aborted cells; only CFOP/
IPPT are ever accepted, everything else silently ignored).
- central/app/web.py: POST /agents/{id}/cfop-ippt-write - ADMIN only (SSO
Gerenciador), CSRF, typing GRAVAR required for any mode other than
DISABLED, every change audited (CFOP_IPPT_WRITE_MODE). Small toggle UI in
agent_detail.html next to Contexto Fiscal.
- Wired into the existing job/heartbeat authorization payload and job
completion handling in central/app/api.py, alongside (never mixed with)
the RTC wiring.
- 18 new tests (central/tests/test_cfop_ippt_write_plumbing.py): default
DISABLED everywhere (job payload AND /v1/agents/me/authorizations); a
forged completion payload can never change the mode (read fresh from the
Installation row, never from Agent-supplied JSON); PADRAO role gets 403
with no audit row; ADMIN + wrong/missing CSRF is refused; ADMIN without
typing GRAVAR is refused (422); disabling never requires GRAVAR; invalid
mode is refused; the audit recorder only accepts CFOP/IPPT, silently
drops any other field (e.g. a stray CCLASSTRIB row).
- Two existing RTC tests updated for the additive authorizations-dict key
(cfop_ippt_write_mode) they now also carry.
Still NOT wired into agent/scripts/run_agent_service.py::execute_job - no
Agent code calls select_candidates/apply_candidates yet, so nothing writes
to Firebird from this branch. That wiring, an Agent version bump, a new
installer and Windows Sandbox validation are the next step, deliberately
left for after review (see docs/CFOP_IPPT_WRITE_CAPABILITY_V1.md) - this
mission explicitly asked not to publish this as an active release yet.
FULL_SUITE on this branch: 1 known, expected failure -
test_manifest_records_the_real_migration_head - because this branch adds
migration 0033 that was never merged to master/deployed; RELEASE_MANIFEST.json
intentionally still describes master/production (head 0032). Every other
test passes, including all CFOP/IPPT and RTC-adjacent tests.
REAL_PRODUCT_FISCAL_WRITES=0 (no write path is reachable from any Agent
code on any branch).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
93 lines
5.8 KiB
JSON
93 lines
5.8 KiB
JSON
{
|
|
"artifact": "RELEASE_MANIFEST",
|
|
"GTI_FISCAL_VERSION": "1.3.11",
|
|
"generated_at": "2026-09-28T13:00:00+00:00",
|
|
"hub": {
|
|
"version": "1.3.11",
|
|
"api_compat": "1.0",
|
|
"engine_version": "0.3.0",
|
|
"decision_version": "mission-04c-ipi-ex-split"
|
|
},
|
|
"agent_version": "1.3.8",
|
|
"fiscal_engine": {
|
|
"ENGINE_VERSION": "0.3.0",
|
|
"DECISION_VERSION": "mission-04c-ipi-ex-split",
|
|
"DECISION_ENGINE_VERSION": "fiscal-decision-v1",
|
|
"PRODUCT_DEFAULTS_ENGINE_VERSION": "product-defaults-v1",
|
|
"ICMS_CONTEXT_ENGINE_VERSION": "icms-context-v1"
|
|
},
|
|
"migrations": {
|
|
"alembic_head_in_repo": "0032_contribuinte_ipi",
|
|
"applied_revision": "0032_contribuinte_ipi",
|
|
"applied_revision_source": "confirmed live via docker exec alembic current on gti-fiscal-hub-fiscal-hub-1 during the 1.3.7 deploy; migration 0032 did not change again in 1.3.8/1.3.9/1.3.10/1.3.11 (production, branch master). This manifest describes master/production; it is intentionally NOT updated on feature/cfop-ippt-write, which adds an unmerged, undeployed migration 0033_cfop_ippt_write_mode - test_manifest_records_the_real_migration_head fails on that branch only, for that expected reason (see docs/CFOP_IPPT_WRITE_CAPABILITY_V1.md and the Missão 4 report).",
|
|
"count": 32
|
|
},
|
|
"datasets_active": [
|
|
{
|
|
"kind": "ANP",
|
|
"sha256": "8271a80007548b01",
|
|
"record_count": 1031
|
|
},
|
|
{
|
|
"kind": "BA_ST_MVA",
|
|
"sha256": "e07e9085952bc256",
|
|
"record_count": 303
|
|
},
|
|
{
|
|
"kind": "CEST",
|
|
"sha256": "d7fb7e8da0ace051",
|
|
"record_count": 1051
|
|
},
|
|
{
|
|
"kind": "CFOP",
|
|
"sha256": "c95c91ed1644fdd1",
|
|
"record_count": 619
|
|
},
|
|
{
|
|
"kind": "FCP",
|
|
"sha256": "3079d088169003cf",
|
|
"record_count": 27
|
|
},
|
|
{
|
|
"kind": "NCM",
|
|
"sha256": "3abc0d2eb2501bbd",
|
|
"record_count": 15156
|
|
},
|
|
{
|
|
"kind": "NCM_UTRIB",
|
|
"sha256": "afc8bfc94c4f9575",
|
|
"record_count": 10516
|
|
},
|
|
{
|
|
"kind": "NFE_MOC_TABLES",
|
|
"sha256": "5eb4cf2010b10b0b",
|
|
"record_count": 96
|
|
},
|
|
{
|
|
"kind": "RTC_BIOFUEL_INDEX",
|
|
"sha256": "c49a011503657fc6",
|
|
"record_count": 23
|
|
},
|
|
{
|
|
"kind": "RTC_CBS_RATES",
|
|
"sha256": "33f17aa3322de841",
|
|
"record_count": 2
|
|
},
|
|
{
|
|
"kind": "RTC_CCLASSTRIB",
|
|
"sha256": "1448cb63a41bdb67",
|
|
"record_count": 164
|
|
},
|
|
{
|
|
"kind": "RTC_CCREDPRES",
|
|
"sha256": "65f2461398b6c361",
|
|
"record_count": 13
|
|
},
|
|
{
|
|
"kind": "TIPI_IPI",
|
|
"sha256": "d155f1baafb4039d",
|
|
"record_count": 11103
|
|
}
|
|
],
|
|
"note": "1.3.9: adds the ADMIN-only Contexto Fiscal section to the Agent detail page (central/app/fiscal_context_ui.py) - confirm/alter/clear the 3 real fiscal decisions field_contract cannot derive alone (icms_treatment/pis_cofins_profile/entry_scope, reduced from an original 5-item list by auditing real production data: icms_rate/credit_rate and rounding were proven NOT_APPLICABLE/ALREADY_DERIVED for this CRT=1 company and dropped). Persists through the existing FiscalContextEntry table, CSRF+RBAC+audit reusing the same mechanism as /agents/{id}/features. No schema change. Hub only - Agent unchanged, no new installer published this release. 1.3.10 (Missao 2 - fechamento de lacunas fiscais, read-only + UI/engine gated): PIS/COFINS's pis_cofins_profile context key now also accepts the literal sentinels NOT_APPLICABLE/OPERATION_TIME (central/app/context_keys.py + central/app/field_contract.py), resolving to NA only when explicitly recorded by an audited FiscalContextEntry - never inferred from emission statistics; sem decisao ADMIN, comportamento identico ao anterior (regression tests in central/tests/test_field_contract.py). CFOP_ENTRADA under an already-decided entry_scope=MIXED_OR_DYNAMIC now resolves to NA instead of MANUAL, so it no longer blocks product completeness or re-asks an already-answered question (same file, same gate, existing scope-required-first test unchanged). Contexto Fiscal UI: PIS/COFINS and CFOP_ENTRADA cards show the Bloco 2 cross-database evidence and a link to docs/dossie_contador.md (also published at central/static/docs/dossie_contador.md); entry_scope is now a dropdown of its 3 valid values. New read-only evidence artifacts: docs/runs/GTI_dryrun_universe_summary.json, docs/runs/BLOCO2_PIS_COFINS_CROSS_DB_V1.json, docs/fiscal_completeness_matrix.md, docs/dossie_contador.md, docs/AGENT2_UPGRADE_RUNBOOK_V1.md. No schema/migration change. No Firebird write anywhere (zero writes, confirmed by construction - the new dry-run scripts never open a write connection). Hub only - Agent code untouched; Agent 2 was upgraded 1.3.7->1.3.8 by a human operator on-site (no self-update mechanism exists - confirmed by code audit), no new Agent installer published this release. 1.3.11 (Missao 3, Bloco A/B/C): anonymized central/static/docs/dossie_contador.md (client business names replaced with generic labels A-E, no product names, no CNPJ/razao social - the previous 1.3.10 copy briefly exposed real client/product names in an unauthenticated static route) and refined its PIS/COFINS finding with Bloco B's read-only correlation analysis (docs/runs/BLOCOB_PIS_COFINS_SOURCE_V1.json): the ~9.5% CST=01 anomaly is confined to a single calendar month with no NCM/CFOP/CSOSN/ICMS-group correlation explaining it, consistent with a one-off technical/migration event rather than a deliberate rule. Also added (inert, unwired) agent/src/gti_fiscal_agent/cfop_ippt_auto_apply.py - a new typed write-capability core for CFOP/IPPT mirroring rtc_auto_apply.py's safety model (compare-before-write, stale-write guard, readback, rollback), fully unit-tested (14 tests) but NOT imported by run_agent_service.py and NOT activated - no Hub authorization/audit plumbing exists yet, no Agent version bump, no installer built, per explicit instruction not to publish this as active before review (see docs/CFOP_IPPT_WRITE_CAPABILITY_V1.md). No schema/migration change. Zero Firebird writes. Hub only - Agent code added but inert; published Agent version remains 1.3.8."
|
|
} |