Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be62783b98 | ||
|
|
98fc16a3fb | ||
|
|
276d833a4b |
@@ -2001,5 +2001,93 @@
|
||||
"qa_fixtures_copied": false,
|
||||
"accepted_scenarios_repeated_manually": false,
|
||||
"limitations": "No new scenario executed in homologation and no real dossier or personal data created. QA functional evidence reused; destination verification limited to revision, configuration and entry routes. Sector/fiscal exclusions remain explicit."
|
||||
},
|
||||
"closure_scope_reconciliation_20261024": {
|
||||
"kind": "analysis_and_proposed_batch_only",
|
||||
"reference_commit": "276d833a4b4f9071db328b653f48529b2dfac4f9",
|
||||
"scope": [
|
||||
"Financial planning consistency",
|
||||
"Existing published IVA on net monthly sales",
|
||||
"Data/calculation/save/recovery/report continuity",
|
||||
"Screen/export values/context/source/version agreement",
|
||||
"Explicit unavailable functionality without presumed results"
|
||||
],
|
||||
"accepted_proofs_reused": [
|
||||
"Independent financial controls and cashflow recovery",
|
||||
"Published IVA evaluator, server selection and frozen versions",
|
||||
"Monthly sales reuse, zero versus missing, stale history",
|
||||
"General CSV/Word/ZIP and native footer",
|
||||
"Selected opportunity native PDF, 8036b9b0/cdf8fcfb"
|
||||
],
|
||||
"code_presence_reconciled": [
|
||||
"3f5430c3 is ancestor of reference/stabilization-20261024",
|
||||
"0b0cf761 is ancestor of reference/stabilization-20261024"
|
||||
],
|
||||
"public_availability_read": {
|
||||
"url": "https://teste-investidor.tempo.co.mz/api/v1/fiscal-consumer",
|
||||
"enabled": true,
|
||||
"coverage_start": "2026-01-01",
|
||||
"coverage_end": "2026-12-31",
|
||||
"not_a_fresh_private_rule_audit": true
|
||||
},
|
||||
"items": [
|
||||
{
|
||||
"id": "S1",
|
||||
"classification": "code_gap_new_isolated_diagnostic",
|
||||
"consumer": "Saved cashflow to IVA fallback and report",
|
||||
"cause": "Cashflow snapshot v1 has no original currency; consumers use current project currency",
|
||||
"evidence": "outputs/simulator-scope-20261024/currency-gap.json",
|
||||
"observed": "Saved amounts with original project USD become monthly IVA 123 MZN and MZN report after project currency changes; original currency absent from snapshot",
|
||||
"proposal": "Version currency provenance; common mismatch/reconciliation guard; retain v1 bytes and require only missing currency where origin cannot be recovered",
|
||||
"delta_proof": "Currency change, saved recovery and matching panel/IVA/report without conversion or loss"
|
||||
},
|
||||
{
|
||||
"id": "S2",
|
||||
"classification": "code_gap_directed_UI_proof_pending",
|
||||
"consumer": "Monthly IVA pending execution recovery",
|
||||
"cause": "Availability guard returns before pending-ID GET; button disabled when new admissions disabled",
|
||||
"existing_server_contract": "Admitted execution/version and authenticated history remain readable",
|
||||
"proposal": "Separate creation from read/resume by ID; do not reactivate consumer or create another execution",
|
||||
"delta_proof": "Already admitted queued/running execution, new admissions unavailable, same ID recovered completed and reported without duplicate"
|
||||
},
|
||||
{
|
||||
"id": "S3",
|
||||
"classification": "specific_evidence_gap_not_presumed_defect",
|
||||
"consumer": "Monthly IVA section in final dossier CSV/Word/native PDF",
|
||||
"proposal": "One representative existing synthetic snapshot; compare exact values, zero/missing, selected context, source/version and current/history label; inspect only new monthly block pagination",
|
||||
"reuse": "General exporters, ZIP, native footer and other accepted pagination proofs"
|
||||
}
|
||||
],
|
||||
"proposed_order": [
|
||||
"Fix S1 and S2 together",
|
||||
"Check only changed dependencies",
|
||||
"Complete S3 on resulting candidate, fixing only observed failures",
|
||||
"Integrate and install through existing Git process after directed QA; verify installed delta"
|
||||
],
|
||||
"documentary_dependencies_identified": [],
|
||||
"six_legacy_associations_and_two_incomplete_originals": "Remain documentary; no dependency identified for S1-S3",
|
||||
"excluded": [
|
||||
"Other taxes",
|
||||
"New IVA rates/regimes/eligibility or incentives",
|
||||
"Deductions/credits/refunds/final settlement",
|
||||
"Full Modelo A",
|
||||
"Extension beyond demonstrated 2026 coverage",
|
||||
"Statistics and AI"
|
||||
],
|
||||
"functional_fixes_executed": false,
|
||||
"deployment_executed": false,
|
||||
"active_business_data_writes": 0,
|
||||
"accepted_tests_reexecuted": false,
|
||||
"historical_output_files_missing_in_this_workspace_do_not_revoke_acceptance": true,
|
||||
"matrix_ids": [
|
||||
"AUD-SIM-01",
|
||||
"AUD-SIM-INT02",
|
||||
"AUD-SIM-INT03",
|
||||
"AUD-SIM-INT04",
|
||||
"AUD-SIM-INT05",
|
||||
"AUD-SIM-INT06",
|
||||
"AUD-SIM-INT07",
|
||||
"AUD-SIM-INT08"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,8 +35,9 @@
|
||||
"number": 3,
|
||||
"component": "Navegação contextual e manifestação de interesse",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Navegação/percurso preservados; carteira documental reposta em 23/10: 29 dossiers, incluindo 15 projectos âncora.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/investimentos/iniciar) · Início, contexto e navegação abrem; gravação/recuperação aceites em QA reutilizadas. Sem dossier real no destino."
|
||||
"current_preservation_status": "Continuity and multi-opportunity consumers delivered: 55136b44, 8036b9b0, cf2ddf21. Accepted proofs preserved.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/investimentos/iniciar) · Início, contexto e navegação abrem; gravação/recuperação aceites em QA reutilizadas. Sem dossier real no destino.",
|
||||
"status_before_stabilization_closure": "Navegação/percurso preservados; carteira documental reposta em 23/10: 29 dossiers, incluindo 15 projectos âncora."
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
@@ -175,8 +176,9 @@
|
||||
"number": 23,
|
||||
"component": "Cartografia e consumidores territoriais restantes",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Demarcação reposta: 408 geometrias. Polígonos de localidades e correspondências já pendentes não são nova regressão.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/oportunidades) · Catálogos/mapas abrem. 1 921 referências geográficas no alvo versus 1 990 locais; diferença não reconciliada por item fora do manifesto."
|
||||
"current_preservation_status": "Shared maps delivered 066707ec/5d45541a: 408 accepted contours publicly available; originals private, 29 fiches and 28 relations preserved. Missing locality polygons remain future work.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/oportunidades) · Catálogos/mapas abrem. 1 921 referências geográficas no alvo versus 1 990 locais; diferença não reconciliada por item fora do manifesto.",
|
||||
"status_before_stabilization_closure": "Demarcação reposta: 408 geometrias. Polígonos de localidades e correspondências já pendentes não são nova regressão."
|
||||
},
|
||||
{
|
||||
"number": 24,
|
||||
@@ -210,8 +212,9 @@
|
||||
"number": 28,
|
||||
"component": "Pesquisa — estados do recorte R2",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Pesquisa e selectores corrigidos em 22/10; a carteira vazia é tratada como perda separada.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/oportunidades) · Catálogos abrem; quatro estados e protecção contra respostas antigas preservados do R2, sem repetir ensaios aceites."
|
||||
"current_preservation_status": "Accepted search/selectors preserved; portfolio visibility and anchor continuity restored and delivered cf2ddf21. No current portfolio-empty fault.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/oportunidades) · Catálogos abrem; quatro estados e protecção contra respostas antigas preservados do R2, sem repetir ensaios aceites.",
|
||||
"status_before_stabilization_closure": "Pesquisa e selectores corrigidos em 22/10; a carteira vazia é tratada como perda separada."
|
||||
},
|
||||
{
|
||||
"number": 29,
|
||||
@@ -945,5 +948,79 @@
|
||||
"new_roles_or_approvers": false,
|
||||
"new_content_approval": false
|
||||
},
|
||||
"qa_recovery_preparation_note": "An initial QA audit-key collision rolled back atomically. Audit identity was scoped per original before the successful QA and destination recovery; no active attempt used the faulty key."
|
||||
"qa_recovery_preparation_note": "An initial QA audit-key collision rolled back atomically. Audit identity was scoped per original before the successful QA and destination recovery; no active attempt used the faulty key.",
|
||||
"stabilization_closure_20261024": {
|
||||
"basis": "Tempo explicit sequence and technical preservation responsibility, 24/10/2026",
|
||||
"installed_functional_baseline": "066707ece631f0a7c963031c211844fbdd68916b",
|
||||
"map_receipt": "5d45541a",
|
||||
"known_open_faults_in_delimited_stabilization_scope": [],
|
||||
"does_not_close_all_43_components": true,
|
||||
"prior_losses_do_not_share_a_proven_single_cause": true,
|
||||
"accepted_closures": [
|
||||
"6b544548/4098192a",
|
||||
"d8224ba8/af926180",
|
||||
"55136b44/b6a626c9",
|
||||
"8036b9b0/cdf8fcfb",
|
||||
"cf2ddf21/c1f4a719",
|
||||
"066707ec/5d45541a"
|
||||
],
|
||||
"documentary_limits": [
|
||||
"Six legacy opportunity/anchor-cluster pairs without documented identity remain indeterminate: AUD-REL-02",
|
||||
"Two incomplete legacy originals retain their existing documentary limit"
|
||||
],
|
||||
"not_yet_proven_component_numbers": [
|
||||
6,
|
||||
18,
|
||||
21,
|
||||
22,
|
||||
24,
|
||||
25,
|
||||
35
|
||||
],
|
||||
"future_requirement_ids": [
|
||||
"AUD-MARKET-01",
|
||||
"AUD-ESTABLISHMENT-01",
|
||||
"AUD-FUND-01",
|
||||
"AUD-COMPANY-01",
|
||||
"AUD-COMPANY-02",
|
||||
"AUD-CAPITAL-01",
|
||||
"AUD-CAPITAL-02",
|
||||
"AUD-FINTECH-01"
|
||||
],
|
||||
"territorial_count_reconciliation": {
|
||||
"source": "outputs/preservation-inventory-20261023/local.json and homologation.json",
|
||||
"public_active_local": 1921,
|
||||
"public_active_target": 1921,
|
||||
"local_archived_internal_groups": [
|
||||
32,
|
||||
32,
|
||||
5
|
||||
],
|
||||
"individual_identity_comparison_of_archived_69_claimed": false,
|
||||
"reactivation_authorized": false
|
||||
},
|
||||
"new_control": {
|
||||
"test": "tests/Unit/ApprovedAdministrativeBoundariesTest.php",
|
||||
"automatic_delivery_suite": "Unit",
|
||||
"tests": 2,
|
||||
"assertions": 8,
|
||||
"result": "passed",
|
||||
"scope": "Approved public snapshot identity; changed geometry/metadata, wrong territory and new internal identity rejected",
|
||||
"http_access_contract": "tests/Feature/TerritoryGeometryConsumerAccessTest.php",
|
||||
"http_contract_run_when": "Geometry/access/hierarchy changes, on isolated QA only; existing accepted result reused here"
|
||||
},
|
||||
"technical_preservation_owner": "Codex and programmers",
|
||||
"Tempo_review": "Utility, clarity and presentation; no obligation to rediscover technical regressions",
|
||||
"sequence": [
|
||||
"Corrections and stabilization",
|
||||
"Fiscal simulator with defined scope",
|
||||
"Real estate",
|
||||
"Consumer goods and franchises",
|
||||
"Statistics and dashboards",
|
||||
"AI"
|
||||
],
|
||||
"accepted_acceptance_tests_repeated": false,
|
||||
"active_database_writes": 0,
|
||||
"runtime_application_source_changes": 0
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"reference_commit": "276d833a4b4f9071db328b653f48529b2dfac4f9",
|
||||
"runtime_files_changed_since_066707ec": [],
|
||||
"matrix_records": 3423,
|
||||
"matrix_columns": 49,
|
||||
"updated_existing_rows": [
|
||||
"AUD-GEO-01",
|
||||
"AUD-GEO-02",
|
||||
"AUD-GEO-03",
|
||||
"AUD-REL-01",
|
||||
"AUD-REL-02",
|
||||
"AUD-DESK-01",
|
||||
"AUD-DESK-02",
|
||||
"AUD-SIM-01",
|
||||
"AUD-LEG-06"
|
||||
],
|
||||
"accepted_receipts_unchanged_sha256": {
|
||||
"map-stabilization-receipt-20261024.json": "2b69216b644f2244897431a10f3e6828e822d1317fab326a457a5934261c1618",
|
||||
"anchor-integration-receipt-20261023.json": "86b0d01aa2fb03be84c1b1c6254ea0932abe813375f00560aaf39ce78d199f3d",
|
||||
"treatment-scope-installation-receipt-20261023.json": "a0904250e1ed201276fce0318b9cc131edf4c8ec0ab6d449536b1e1344906798",
|
||||
"multi-opportunity-context-installation-receipt-20261023.json": "3e1030de9aafd916252926a33d18cf808a05e389ddce5d9a3cd5230f039bc8f2"
|
||||
},
|
||||
"new_tests": {
|
||||
"tests": 2,
|
||||
"assertions": 8,
|
||||
"passed": true
|
||||
},
|
||||
"active_database_writes": 0,
|
||||
"status": "installed_reference_verified",
|
||||
"date_Africa_Johannesburg": "2026-10-24",
|
||||
"git_tag": "reference/stabilization-20261024",
|
||||
"served_revision": {
|
||||
"commit": "276d833a4b4f9071db328b653f48529b2dfac4f9",
|
||||
"branch": "main",
|
||||
"built_at": "2026-10-24T09:10:08.359035+00:00",
|
||||
"manifest_sha256": "949d1047867f5879e724e5ddc38d4865b06aeb92641337d3952ea7b5ad55bb7a"
|
||||
},
|
||||
"previous_functional_revision": "066707ece631f0a7c963031c211844fbdd68916b",
|
||||
"verification_method": "New unit control tested; semantic matrix/inventory reconciliation; canonical accepted receipt hashes; empty Git diff for runtime/schema/config/permissions/deploy; public installed revision. Prior accepted technical and visual proofs reused.",
|
||||
"accepted_tests_repeated_by_this_review": false,
|
||||
"automatic_installer": "Normal existing pipeline; no extra manual acceptance round",
|
||||
"fresh_authenticated_database_read_claimed": false,
|
||||
"business_data_preservation": "Accepted map receipt 5d45541a reused: 29 fiches, 28 links, 408 geometries, 172 business/nonvolatile tables equal; no runtime or data mutation introduced by this reference delta",
|
||||
"known_open_stabilization_faults": [],
|
||||
"documentary_pending": [
|
||||
"AUD-REL-02: six legacy opportunity/anchor-cluster pairs remain indeterminate without documented relationships",
|
||||
"Two incomplete originals in the legacy collection retain the accepted documentary limit"
|
||||
],
|
||||
"not_yet_proven_existing_components": [
|
||||
6,
|
||||
18,
|
||||
21,
|
||||
22,
|
||||
24,
|
||||
25,
|
||||
35
|
||||
],
|
||||
"future_requirements": [
|
||||
"AUD-MARKET-01",
|
||||
"AUD-ESTABLISHMENT-01",
|
||||
"AUD-FUND-01",
|
||||
"AUD-COMPANY-01",
|
||||
"AUD-COMPANY-02",
|
||||
"AUD-CAPITAL-01",
|
||||
"AUD-CAPITAL-02",
|
||||
"AUD-FINTECH-01"
|
||||
],
|
||||
"technical_preservation_owner": "Codex and programmers",
|
||||
"Tempo_evaluation": "Usefulness, clarity, presentation; does not need to rediscover technical regressions",
|
||||
"next": "Fiscal simulator scope definition; not started by this consolidation",
|
||||
"reference_sequence": [
|
||||
"Stabilization",
|
||||
"Defined fiscal simulator scope",
|
||||
"Real estate",
|
||||
"Consumer goods and franchises",
|
||||
"Statistics and dashboards",
|
||||
"AI"
|
||||
],
|
||||
"not_complete_portal_acceptance": true
|
||||
}
|
||||
@@ -1,5 +1,59 @@
|
||||
# Rastreabilidade, utilização e formação
|
||||
|
||||
## Simulador — âmbito de fecho reconciliado e lote proposto, 24/10/2026
|
||||
|
||||
Pedido expresso da Tempo após a referência `276d833a`/`reference/stabilization-20261024`, confirmada segundo o relatório, sem lhe atribuir leitura do recibo local. Esta passagem é **análise e proposta**, sem correcção funcional, integração, nova publicação/activação fiscal ou alteração de dados. A ordem de referência mantém-se. Não se acrescentam impostos nem se reabre o lote de estabilização.
|
||||
|
||||
### O que já existe e permanece aceite
|
||||
|
||||
| Frente | Implementação e provas reutilizadas |
|
||||
| --- | --- |
|
||||
| Planeamento financeiro | Plano empresarial por produto/mês, tesouraria, pressupostos editáveis, moeda e cenários de planeamento; controlos independentes anteriores de saldos positivo/negativo/nulo/incompleto, crédito e projecções. `business-financial-plan`, `monthly-cashflow` e recibos integrados de 20–22/10. Exemplos demonstrativos e imposto manual continuam identificados como planeamento, sem serem taxas legais ou valores do investidor. |
|
||||
| IVA implementado | Consumidor publicado, selecção e versão congeladas no servidor, avaliador existente; vendas mensais do plano ou receita constante já guardada, indicação explícita de base líquida, zero distinto de falta e IVA separado da caixa. `SimulationPublishedFiscalTest`, quatro casos de `monthly-iva.test.mjs` e ensaio Edge mensal anteriores reutilizados. `3f5430c3` e `0b0cf761` pertencem à referência instalada; as notas históricas «só QA» não significam hoje ausência deste código. A disponibilidade pública consultada nesta passagem devolveu `enabled=true`, cobertura 2026. Isso não é uma nova auditoria dos parâmetros protegidos; o cadastro/publicação real v1 mantém o recibo de `d3fe8a02`. |
|
||||
| Continuidade | Dois dossiers/nova sessão, isolamento, recuperação, erro e nova tentativa, históricos e hashes já provados. A escolha da oportunidade e o PDF correspondente estão entregues em `8036b9b0`/`cdf8fcfb`; não repetir. Inputs, rascunho e snapshots usam os mecanismos existentes, sem voltar a preencher vendas no IVA. |
|
||||
| Resultados/exportações | Resumo/detalhe, CSV/Word, erro e nova tentativa de exportação, ZIP e rodapé do PDF nativo têm provas aceites. O rodapé nativo de tesouraria foi corrigido e conferido em 21/10; o PDF guardado por oportunidade foi conferido em 23/10. O bloco mensal usa o mesmo snapshot fiscal e não recalcula imposto ao exportar. A prova específica restante desse bloco consta de S3 abaixo; não reabrir os restantes exportadores ou PDFs. |
|
||||
| Indisponibilidade | Fora da cobertura demonstrada de 2026, moeda diferente de MZN, preços com IVA incluído/base desconhecida, enquadramento não declarado e vendas em falta permanecem explícitos ou indeterminados, sem substituir por zero. Deduções, créditos, reembolsos, regimes especiais, apuramento final/Modelo A completo e outros impostos não são implementados por este lote. Cobertura técnica não é uma data legal de revogação. |
|
||||
|
||||
Reutilizados os recibos versionados `integrated-review-continuation-20261020-receipt.json`, `treatment-scope-installation-receipt-20261023.json` e os fechos posteriores do manual. Alguns caminhos históricos `outputs/` não existem nesta cópia do workspace: essa ausência não revoga provas aceites nem autoriza regenerá-las. Nenhuma suite de aceitação anterior foi reexecutada nesta análise.
|
||||
|
||||
### Saldo concreto — duas lacunas de código e uma prova específica
|
||||
|
||||
| ID / situação | Ecrã, causa e efeito delimitado | Lote proposto e critério de fecho |
|
||||
| --- | --- | --- |
|
||||
| **S1 — lacuna de código confirmada por diagnóstico isolado novo** | **Tesouraria → vendas reutilizadas pelo IVA → relatório.** `CashflowDraftSnapshot` v1 guarda montantes/modo, mas não a moeda de origem. O painel e o relatório usam a moeda actual do projecto; o fallback `monthlySalesFromDraft` não tem moeda guardada para comparar. Serializar receita `123` enquanto o projecto está em USD e depois mudar o projecto para MZN produz uma entrada IVA `123 MZN` e relatório MZN, sem conservar USD. O plano empresarial já tem protecção própria de moeda; a lacuna é a tesouraria guardada, não todos os planeadores. | Versionar a moeda dos pressupostos de tesouraria e partilhar a guarda entre painel, IVA e relatório. Divergência exige reconciliação explícita, sem conversão/reclassificação silenciosa nem perda dos montantes. Snapshots v1 continuam legíveis e intactos; moeda sem origem recuperável fica por confirmar, nunca presumida como MZN. Prova nova só deste delta: USD → MZN, gravação/recuperação, ecrã/IVA/exportação coerentes; valores e edições conservados. Diagnóstico sem DB/rede em `outputs/simulator-scope-20261024/currency-gap.json`. |
|
||||
| **S2 — lacuna identificada no código; prova de interface dirigida a fazer com a correcção** | **IVA mensal, execução já admitida ainda em fila/processamento.** Em `SimulationMonthlyIva`, o efeito regressa por `!available` antes de consultar o ID pendente e o botão também fica desactivado. A suspensão do consumidor, que deve impedir novas admissões, bloqueia assim a recuperação pela componente mensal. O servidor já preserva a versão admitida e permite consultar o histórico; não há falha de cálculo ou perda da execução demonstrada. | Separar nova admissão de consulta/retoma por ID. Execução admitida deve ser recuperável com consumidor suspenso, respeitando autenticação/dono, sem novo POST nem nova regra. Prova dirigida em QA: mesma execução pendente → indisponibilidade para novas admissões → conclusão/recuperação por mesmo ID → rascunho/relatório com o snapshot correcto e sem duplicação. Não repetir os testes aceites do avaliador ou publicar/suspender a regra real de homologação. |
|
||||
| **S3 — ainda sem prova específica, não defeito presumido** | **Bloco mensal de IVA nos ficheiros finais.** Há prova de reutilização das vendas, snapshots mensais no servidor e composição do relatório, e provas aceites dos exportadores gerais. Não há neste inventário uma conferência explícita de ficheiros finais com o bloco mensal completo — valores exactos, estado actual/histórico, oportunidade, fonte e versão — incluindo a paginação desse bloco. Os PDFs anteriores cobriam outros deltas. | Conferir um cenário mensal representativo por ecrã e CSV/Word, e apenas a paginação do bloco mensal no PDF nativo final. Reutilizar execução/snapshot sintético aceite, se recuperável, sem recalcular para testar exportação. Comparar montantes exactos, zero/falta, contexto, fonte, versão e aviso de ausência de apuramento final. ZIP e restante paginação/rodapé reutilizam as provas aceites. Corrigir apenas divergência efectivamente observada; não presumir falha de exportador. |
|
||||
|
||||
**Proposta de execução:** fechar S1 e S2 juntos, pelos consumidores de pressupostos/snapshots; verificar apenas os seus deltas e executar S3 sobre a candidata resultante. Integrar e disponibilizar somente depois dessas provas, pelo Git existente e preservando alterações concorrentes; conferir a revisão e o delta instalado. Não migrar dados activos nem publicar outra regra por esta proposta. As guardas, mensagens e compatibilidade de snapshots devem ser tratadas no mesmo lote, sem criar motor, formulários ou aprovações novos.
|
||||
|
||||
**Dependências reais:** nenhuma identificada entre S1–S3 e as seis associações legadas ou os dois originais incompletos. As fontes da regra IVA já cadastrada e os recibos fiscais existentes são reutilizados. Declaração Modelo A completa, outros impostos, elegibilidade/incentivos novos e extensão temporal não entram neste fecho. O resultado esperado é o ciclo **dados → cálculo disponível → gravação → recuperação → relatório** coerente neste âmbito, não a certificação de um simulador fiscal integral. A proposta está registada nas linhas existentes `AUD-SIM-01` e `AUD-SIM-INT02`–`08`; as notas e estimativas históricas ficam subordinadas a este saldo de três itens, sem outro backlog.
|
||||
|
||||
## Fecho do lote de estabilização e sequência de referência — 24/10/2026
|
||||
|
||||
**Ordem expressa da Tempo:** (1) correcções e estabilização; (2) simulador fiscal com âmbito definido; (3) Imobiliário; (4) Bens de consumo e franquias; (5) Estatística e painéis; (6) IA. A preservação técnica é responsabilidade do Codex e dos programadores. A Tempo avalia utilidade, clareza e apresentação; não tem de redescobrir regressões para comprovar preservação.
|
||||
|
||||
Consolidação sobre a revisão instalada `066707ec`, recibo `5d45541a`, mantendo a mesma matriz e o inventário dos 43 componentes. Nesta passagem não foi encontrada nova falha executável nos recortes de estabilização já delimitados. A revisão de código confirma que a primeira oportunidade usada na migração do contexto comum não substitui o âmbito dos consumidores: `InvestmentConsumerScope` filtra a escolha antes do snapshot e dos relatórios. Não foram repetidas as provas aceites, impressões, submissões ou alterações de dados. A confirmação da Tempo anterior baseou-se no relatório comunicado, sem conferência do recibo local; não é registada como uma nova prova técnica ou visual.
|
||||
|
||||
| Situação no lote | Percursos e saldo concreto |
|
||||
| --- | --- |
|
||||
| Resolvido e entregue | Gravação/idioma, proveniência do relatório e Beira/sete oportunidades: `6b544548`/`4098192a`. Complementos: `d8224ba8`/`af926180`. Zonas/parques, Terra/DUAT, Balcão e manifestação por oportunidade: `55136b44`/`b6a626c9`. Selector do simulador, etapas/requisitos e pedido Terra correcto, incluindo PDF guardado: `8036b9b0`/`cdf8fcfb`. Âncoras, sector/localização e continuidade: `cf2ddf21`/`c1f4a719`. Mapas: `066707ec`/`5d45541a`. Pendências históricas destes trechos ficam superadas pelas respectivas entregas. |
|
||||
| Falha conhecida ainda aberta neste lote | **Nenhuma identificada nos recortes enumerados.** Não equivale a aceitação integral dos 43 componentes ou de todas as variantes do portal. Não se inventa uma nova correcção para justificar outra ronda. |
|
||||
| Pendência documental preservada | `AUD-REL-02`: os pares das seis oportunidades legadas com âncoras/clusters continuam indeterminados quando não há relação documentada. Não confundir com as 28 relações recuperadas dos projectos. Preservar a preparação independente; não associar por proximidade ou nome. Dois originais incompletos do acervo legado conservam o limite documental já registado, sem representar perda causada pelos mapas. |
|
||||
| Ainda sem prova no âmbito próprio | Inventário existente: consolidação de duplicados distintos (componente 6); aplicação/editor e versões de checklists (18); partilha e variantes de sala (21/35); modalidades/SLA e fecho operacional/documental (22/25); acessibilidade além das provas aceites (24). Não foram identificadas novas regressões nesses itens; não os declarar concluídos nem exigir processos reais/sintéticos na homologação para fechar este lote. Mantêm os critérios próprios da matriz, sem atribuição de novo prazo ou prioridade. |
|
||||
| Desenvolvimento futuro, separado de regressões | Negócios similares por raio (`AUD-MARKET-01`), importador de empresas/empreendimentos (`AUD-ESTABLISHMENT-01`), catálogo de fundos (`AUD-FUND-01`), comparador societário e modelos específicos (`AUD-COMPANY-01/02`), guiões de capitalização/Bolsa (`AUD-CAPITAL-01/02`), polígonos próprios ainda inexistentes e enquadramento Fintech específico. Variantes de Imobiliário/franquias, Estatística/painéis e IA seguem a ordem acima; SuiteCRM mantém a opção anterior de desactivação. Não se declara que todo o código destes módulos esteja ausente. |
|
||||
|
||||
**Causas independentes:** os mapas tinham filtro público e dependência de uma permissão antiga; a carteira sofreu perda de visibilidade de registos presentes; as relações de âncoras tinham omissão no transporte entre identidades documentais. As provas delimitam esses casos e não estabelecem a causa de todas as perdas anteriores. O inventário histórico territorial tinha 1 990 linhas locais contra 1 921 no destino: **1 921 públicas activas em ambos, mais 69 internas arquivadas apenas no local**, repartidas em 32+32+5. Isto explica a diferença agregada; não é prova de correspondência individual das 69 nem autoriza reactivá-las. Nenhuma reposição adicional decorre dessa contagem.
|
||||
|
||||
### Controlo técnico nas próximas entregas
|
||||
|
||||
Reutilizar o inventário/recibos e comparar apenas o delta e as dependências afectadas. O pipeline existente conserva detecção de alterações concorrentes na árvore instalada, contrato de schema, QA isolado, assets imutáveis, troca atómica e reversão por falha de saúde. A suite normal de entrega passa também a incluir `ApprovedAdministrativeBoundariesTest`: identidade aceite e recusa de novo contorno interno, território trocado, geometria ou metadados alterados. É controlo novo de âmbito público, não repetição da demonstração visual aceite. As duas provas novas passaram, com oito asserções e sem acesso à base.
|
||||
|
||||
Quando se alterar acesso, hierarquia ou serviço de mapas, executar o delta correspondente de `TerritoryGeometryConsumerAccessTest` em QA isolado; cobre o filtro público e os perfis aprovados sem `manage-portal`, incluindo MFA administrativo. O teste unitário isolado não substitui esse contrato HTTP. Para alterações de contexto, usar os casos afectados de `InvestmentTreatmentScopeTest`, `InvestmentAnchorIntegrationTest` e consumidores/complementos, sem repetir indiscriminadamente toda a suite de aceitação. No destino, comparar identidades/fontes/estado de publicação das 29 fichas, 28 relações e 408 geometrias com os manifestos aceites, configuração e permissões equivalentes; mudanças legítimas posteriores são reconciliadas explicitamente, não sobrescritas. Backup/restauro e acção autenticada precedem qualquer escrita de dados activos.
|
||||
|
||||
**Saldo de fecho:** zero falhas técnicas conhecidas abertas neste lote; limites documentais, itens sem prova e desenvolvimento futuro permanecem identificados acima e nas mesmas linhas da matriz. Não se declara a aplicação transversal integralmente concluída. O próximo lote é a delimitação do simulador fiscal; esta passagem não activa cálculos, fontes, estatísticas ou IA. A avaliação de navegação/apresentação da Tempo pode continuar pelo percurso normal e alimenta apenas falhas concretamente observadas.
|
||||
|
||||
**Referência consolidada instalada: `276d833a4b4f9071db328b653f48529b2dfac4f9`**, confirmada pelo `/build/revision.json` público. Etiqueta Git `reference/stabilization-20261024`. A comparação Git de `app`, `resources`, `routes`, `database`, `config`, `public` e `deploy` com `066707ec` é vazia; não há novo delta funcional a reensaiar. Os recibos aceites conservam os mesmos bytes canónicos. Mantidas 3 423 linhas lógicas e 49 colunas da matriz; só nove linhas existentes foram reconciliadas. A prova anterior de preservação das 29 fichas, 28 relações e 408 geometrias é reutilizada, não apresentada como nova consulta autenticada da base nesta passagem. [Recibo da referência](stabilization-reference-receipt-20261024.json).
|
||||
|
||||
## Mapas — estabilização comum e divulgação delimitada, 24/10/2026
|
||||
|
||||
Diagnóstico por leitura autenticada na homologação `cf2ddf21`: **29 fichas, 28 relações territoriais e 408 geometrias válidas**, sem eliminação. Os 408 limites INE/2019 conservam classificação interna, propósito administrativo e SRID 4326. O fingerprint integral das linhas é `7d8b71d3e65d89ffdc43c748b0572dbc`. Não há RLS nas tabelas comparadas. O serviço comum não mudou desde `30aed7cd`: os consumidores gerais pediam exclusivamente geometrias públicas; o cadastro usava ainda `manage-portal`, ausente nos dois superutilizadores aprovados. A prova anterior demonstrava o cadastro privado, não a divulgação pública. O mapa base, tiles e assets carregam; a resposta territorial vazia explica a ausência de contornos e de enquadramento do território escolhido.
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit;
|
||||
|
||||
use App\Services\ApprovedAdministrativeBoundaries;
|
||||
use Tests\TestCase;
|
||||
|
||||
/** Runs in the normal delivery unit suite, without database or external services. */
|
||||
final class ApprovedAdministrativeBoundariesTest extends TestCase
|
||||
{
|
||||
public function test_public_scope_keeps_the_accepted_identity_and_refuses_changed_or_new_internal_shapes(): void
|
||||
{
|
||||
$approved = new ApprovedAdministrativeBoundaries;
|
||||
$items = $approved->snapshots();
|
||||
$this->assertCount(408, $items);
|
||||
$item = reset($items);
|
||||
$this->assertTrue($approved->allows($item['id'], $item['territory_id'], $item['geometry_sha256'], $item['properties_sha256']));
|
||||
$this->assertFalse($approved->allows('00000000-0000-0000-0000-000000000000', $item['territory_id'], $item['geometry_sha256'], $item['properties_sha256']));
|
||||
$this->assertFalse($approved->allows($item['id'], '00000000-0000-0000-0000-000000000000', $item['geometry_sha256'], $item['properties_sha256']));
|
||||
$this->assertFalse($approved->allows($item['id'], $item['territory_id'], str_repeat('0', 64), $item['properties_sha256']));
|
||||
$this->assertFalse($approved->allows($item['id'], $item['territory_id'], $item['geometry_sha256'], str_repeat('0', 64)));
|
||||
}
|
||||
|
||||
public function test_the_public_scope_keeps_the_accepted_edition_and_unique_territories(): void
|
||||
{
|
||||
$items = (new ApprovedAdministrativeBoundaries)->snapshots();
|
||||
$this->assertCount(408, array_unique(array_column($items, 'territory_id')));
|
||||
$this->assertSame(['2019-06-07'], array_values(array_unique(array_column($items, 'source_version'))));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user