Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
276d833a4b |
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
# Rastreabilidade, utilização e formação
|
||||
|
||||
## 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.
|
||||
|
||||
## 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