Preserve completed features and restore approved portfolio visibility
tests / ci (push) Canceled after 0s
tests / ci (push) Canceled after 0s
This commit is contained in:
@@ -46,3 +46,11 @@ Referenciar estas orientações nos requisitos correspondentes da matriz existen
|
||||
A legislação, os formulários e os procedimentos oficiais disponibilizados são fontes válidas para implementar os requisitos. As decisões e procedimentos da Tempo orientam a sua utilização no portal. Traduzir essas fontes em campos, regras, documentos, cálculos e percursos executáveis com rastreabilidade, sem exigir nova validação jurídica genérica ou criar aprovadores, restrições ou condições por interpretação do Codex.
|
||||
|
||||
Uma divergência concreta deve identificar os trechos, períodos e comportamento afectados; prosseguir com os restantes requisitos. Uma decisão de implementação em falta deve ser apresentada especificamente à Tempo, sem a substituir por regra inventada. Rever e remover bloqueios anteriores sem fundamento numa fonte aplicável ou decisão expressa da Tempo, preservando dados e histórico. A rastreabilidade explica a execução e não constitui uma autoridade adicional. Mantêm-se os limites autorizados de QA e das alterações no activo.
|
||||
|
||||
## Preservação do concluído — pedido expresso da Tempo, 23/10/2026
|
||||
|
||||
Antes de avançar com novas rondas de testes/validações, inventariar na matriz e no manual existentes as funcionalidades concluídas e as funcionalidades desaparecidas, e repor as perdas confirmadas. Preservar as aprovações, dados, originais, relações, versões, histórico e acessos já concluídos. Não transformar uma entrega anterior em funcionalidade nova nem exigir novamente a decisão organizacional já registada.
|
||||
|
||||
Comparar código, schema, dados, configuração e permissões entre o último estado demonstrado e o destino. Distinguir eliminação, perda de visibilidade, diferença de ambiente, pendência real e estado documental desactualizado; uma página vazia ou a falta de nova prova não apagam a aceitação anterior. Reutilizar as provas aceites e conferir apenas o delta da reposição. Cada entrega seguinte deve explicar qualquer redução do âmbito previamente disponível, em vez de a aceitar como consequência normal da implementação.
|
||||
|
||||
Transporte privado não equivale à revogação de uma divulgação anterior aprovada. Reconciliar a decisão anterior de forma delimitada e auditada, sem publicar automaticamente conteúdos novos, reviver exemplares arquivados ou sobrescrever edições posteriores. Mantêm-se backup/restauro, autenticação e os limites concretos de cada tarefa.
|
||||
|
||||
@@ -334,6 +334,14 @@ Proposta de entrega da candidata `1bcf34c0`: ver «Proposta de instalação comp
|
||||
|
||||
Nos requisitos existentes de gestão/publicação `MASTER-9f6dd1d9-0001`, `MASTER-9f6dd1d9-0003` e `MASTER-02f44baf-0002`, registar o recorte solicitado pela Tempo: procedimentos com regime/edição/fontes, lotes, rascunhos recuperáveis, prévia, actos versionados, catálogo/ficha/anexos anónimos, filtros, impressão e acompanhamento por conta simples. Evidência: secção «Concursos e anúncios — implementação em QA» do manual existente e `tests/Feature/ProcurementTest.php`, com passagem adicional no navegador dos três regimes, prorrogação, cancelamento, download e acompanhamento. Reutilizadas autorizações e biblioteca; não foram criados papéis ou aprovadores. Origem funcional: pedido expresso da Tempo; flag, prévia assinada e controlo de versão são escolhas técnicas. Entrega delimitada a QA: integração em main, migração/activação no destino e anúncios reais seguem o processo existente. Não fecha requisitos integrais de contratação/recepção de propostas, nem declara parametrizado todo o articulado legal. Geometrias permanecem no recorte separado já entregue.
|
||||
|
||||
### Preservação do concluído e reposição — 23/10/2026
|
||||
|
||||
Origem: pedido expresso da Tempo de inventariar o concluído e repor funcionalidades desaparecidas antes de outra ronda de testes/validações. Inventariados os mesmos 43 componentes do manual e os 17 percursos da matriz executável existente; os componentes de interface referenciados estão presentes. Estados históricos foram reconciliados com entregas posteriores, sem revogar aceitações por falta de nova prova. Não se criou nova matriz/backlog nem se promoveu uma funcionalidade parcial a concluída.
|
||||
|
||||
Perda confirmada: carteira e projectos âncora. Os 29 dossiers existiam em homologação, todos em rascunho, apesar de os exemplares locais idênticos estarem publicados com aprovação documental do proprietário de 26/09. Conteúdo, fonte e título conferidos por identidade/código e hashes nos 29; o commit `e65cb269` de 06/10 retirou o caminho de publicação com essa aprovação do importador. Isso explica a diferença do processo de instalação; não prova quando a visibilidade desapareceu de um endereço específico. Reposta a visibilidade dos 15 projectos, 8 clusters e 6 corredores em QA e homologação, com versões e 29 eventos de reposição; sem importação, reescrita de conteúdos, alteração dos mestres ou novas aprovações/papéis.
|
||||
|
||||
Backup/restauro fresco de 174 tabelas antes da escrita activa; depois da reposição, 171 tabelas inalteradas. Diferenças limitadas a dossiers, auditoria e sessões. Biblioteca, 20 artigos públicos, 28 privados, geometrias e permissões preservados. Conferência pública delimitada: carteira 29, projectos 15, clusters 8, corredores 6. Sem suite geral de testes nesta passagem. Evidência, limites e regra de preservação em `unification/preservation-inventory-20261023.json`, secção «Preservação do concluído — inventário e reposição» do manual e instrução permanente de 23/10 em `AGENTS.md`.
|
||||
|
||||
### Acervo legado — correspondência e preparação QA, 22/10/2026
|
||||
|
||||
Fecho do delta privado na homologação: candidata `fb4e7d89` integrada em `65eddf6b`; backup/restauro isolado, transporte privado e cadastro autenticado dos 28 concluídos, sem publicação. Pesquisa/editor/prévia/recuperação conferidos para os 28; gravação/recuperação visual da revisão 3 pela conta real no recurso 32. Originais, registos anteriores e permissões preservados. Recibo `unification/legacy-editorial-installation-receipt-20261022.json` e secção «Legado — cadastro privado concluído na homologação» do manual. Publicação e revisão editorial efectiva cabem à equipa pela interface; dois originais continuam incompletos. Não fecha nem diagnostica a falha separada da carteira/projectos âncora, nem constitui aceitação do commit/pacote pela Tempo.
|
||||
|
||||
@@ -0,0 +1,358 @@
|
||||
{
|
||||
"format": "investmoz-approved-portfolio-visibility-recovery-v1",
|
||||
"request": "Tempo, 23/10/2026: inventariar funcionalidades concluídas, inventariar desaparecidas e repor, preservando o aprovado",
|
||||
"scope": "Restore visibility of exact unchanged previously owner-approved dossiers, not approve new or modified content",
|
||||
"source_database": "investemoz",
|
||||
"source_snapshot_sha256": "c27a34e30617ce56164daab0aea5cdd7e43b8bec9b2fa197ef616e6c87e70575",
|
||||
"historic_snapshot_sha256": "6904486ee9c3895ee5e42d9ef19e6cb5f223930f7734a7af18051053d019cda6",
|
||||
"items": [
|
||||
{
|
||||
"code": "A01",
|
||||
"title": "MozParks – 20 Parques Industriais",
|
||||
"source_record_id": "219e1dbb-939c-4ef0-92b7-7f78f8561fa0",
|
||||
"target_record_id": "9871a8c0-d562-420b-a8f7-174c95db93f0",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "2adcbe741777d4352c47eb31281dc6b2e2d04903fcfd3e59778ddff4e1342977",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A02",
|
||||
"title": "Linha Ferroviária Norte–Sul",
|
||||
"source_record_id": "1125f069-61e2-4071-99f3-dd103caf3156",
|
||||
"target_record_id": "64b824a0-3527-4024-a1a2-5234f5b4caaa",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "3ad808813909f1475f44a5fcf2a4e50c5d01e25ad8ea39d906c52519532cf0ee",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A03",
|
||||
"title": "Programa de Desenvolvimento Integrado do Corredor de Nacala",
|
||||
"source_record_id": "39f5973c-f4cd-49d0-aeea-1c0c71783550",
|
||||
"target_record_id": "6c03e980-c455-49cc-a3be-99d29014e91d",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "75266ff89da58e4d6e5422e49e4641c62dae4f171fa358b70e210c5883a1fd07",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A04",
|
||||
"title": "Crusse Jamali – Zona Económica Especial de Turismo",
|
||||
"source_record_id": "0dccdd26-9796-4ef7-947b-5a2970ace379",
|
||||
"target_record_id": "8bd83cc4-b36c-46cd-9287-b47e1162b578",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "f6a63e2ee2f2e7c98f1030d206996ad57b0d92129d021ed3c6bb53f161d56f5b",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A05",
|
||||
"title": "Linha de Transmissão Namialo–Metoro (400 kV)",
|
||||
"source_record_id": "361789ad-1e14-4b64-8f1f-fad053886d5a",
|
||||
"target_record_id": "d8a88bac-4684-43fa-aea6-e54fef9b8a47",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "ea0f6b7843289d81dc2852327432721f8677e28ad8b41d754abc8c91307303d3",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A06",
|
||||
"title": "Cadeia de Valor do Arroz por Projecto de Processamento",
|
||||
"source_record_id": "15474e6a-90a3-4db4-b456-eb1c1c66227c",
|
||||
"target_record_id": "57a4ee7a-4c07-4e26-b8f5-e07726e41512",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "c7fae7b2ca541e734e587589dace8dc85dee2494876de6e30ecd91a7177a985d",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A07",
|
||||
"title": "Parque Têxtil Integrado",
|
||||
"source_record_id": "22323abb-91d9-43ed-98f3-1194a5250c9e",
|
||||
"target_record_id": "70ae731e-fdef-473f-b495-14f319b28d60",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "3eb01ce3dd2cc68b43b816708f7e5f990c48f1aea6555cdfd169a286e11b9bd4",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A08",
|
||||
"title": "Zona Económica Especial de Mocuba",
|
||||
"source_record_id": "81d775e5-5dff-4fa2-98b1-72affb0a1082",
|
||||
"target_record_id": "b30ecd8c-220d-4c7a-b1a7-704dc24d0933",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "bca089a4bb2601ca34c50e2c48068b4c2f9fa7a873955cf0587f261a83c2a146",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A09",
|
||||
"title": "Construção da Cidadela Parlamentar de Mocuba",
|
||||
"source_record_id": "67263220-6849-468f-82f4-d5e1f5617190",
|
||||
"target_record_id": "dc8892ff-fdda-480c-81f1-2ffe0bfcb40b",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "7e3bb071f65e49245fbfd070f4123ac49985004e865c475bf7e34c85cc708aea",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A10",
|
||||
"title": "Mphanda Nkuwa HPP – Hidroeléctrica",
|
||||
"source_record_id": "cad01a02-6072-4a11-823a-1ae379bc65da",
|
||||
"target_record_id": "77b685f0-848f-4800-83f8-a29539ed8f31",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "02dc0fb152908e81b11304f6bc0c2252805ebd2ad1860b1a6bfa918e2cbcd5bb",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A11",
|
||||
"title": "Corredor Ferroviário e Portuário de Macuse–Moatize",
|
||||
"source_record_id": "72c13e83-e8dd-465d-99a9-eb0ccaa4fd0b",
|
||||
"target_record_id": "cb125f84-6f75-48e5-a0de-2f5e6bd537ed",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "736fc41d941740f41697c579ffe6c4208d45005d7177b7c42f006554a5dde480",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A12",
|
||||
"title": "Programa de Conectividade e Resiliência Costeira (Compacto II)",
|
||||
"source_record_id": "a023d6b2-1fa2-4fe7-9709-f93ae1f10e99",
|
||||
"target_record_id": "71b96599-09c2-4809-b98f-acbf0c2b6f38",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "9dbdb468b8644e07fabdc943ecde2f11ea561d5174c00559228ed29b2a29b1fe",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A13",
|
||||
"title": "Vilanculos – Região Integrada de Turismo",
|
||||
"source_record_id": "bb15487f-1617-49e6-86b7-d617812b658b",
|
||||
"target_record_id": "5ce2d415-1c84-4625-a4cd-0f6738454318",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "7a62afdda8e2c3fcc47b1c9032359906ff75dff9b5d56c71ba7d88781a8f8620",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A14",
|
||||
"title": "Zona Económica Especial de Agronegócio do Limpopo",
|
||||
"source_record_id": "6d973bb4-ab8a-49bc-92ed-286ed5b96fc4",
|
||||
"target_record_id": "88111fb4-ab20-4393-bd1b-3a1694fb4ac4",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "930836392126133499fa69313a4718ce2ec1f6c8f0839c184e9b5cc229460d1c",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "A15",
|
||||
"title": "Regadio na Bacia Hidrográfica do Rio Maputo",
|
||||
"source_record_id": "1468b8d2-1b08-4c84-8000-ece7662edbf6",
|
||||
"target_record_id": "88e37c63-e785-446f-9074-84b000bffa59",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "d19d27451296b9816351e2d340f2aaff9fabf9732fb580d179e1c69ceb9fc512",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "CLU-01",
|
||||
"title": "Agro-indústria e segurança alimentar",
|
||||
"source_record_id": "ca6a1427-0e2b-406e-94bd-da23630d5ec4",
|
||||
"target_record_id": "0c63d8de-18fd-451f-a7ca-1ea04dd5906c",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "ccd16f969474dcc23b2ddf27eb4cf3ca090f22e418e0e8f33499f349e884d042",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "CLU-02",
|
||||
"title": "Energia e industrialização",
|
||||
"source_record_id": "3cd11616-9099-477c-bf3e-09cddca74053",
|
||||
"target_record_id": "fc1355f5-1473-4fe2-b3e2-b32d1f0b1042",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "78c50659068301be0db94e8f4c9e77a20a4a052639dc4553291ff3568d3c0c4a",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "CLU-03",
|
||||
"title": "Logística, corredores e exportação",
|
||||
"source_record_id": "ec9494a2-22cc-423e-8a9e-efa1e05ac2b4",
|
||||
"target_record_id": "99bf7c4c-e23b-47d5-8490-53082384043f",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "99af7bb35b6769d84bee2175427b3a03027fea65a91dd894338fd7aa72db3820",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "CLU-04",
|
||||
"title": "Turismo costeiro e economia azul",
|
||||
"source_record_id": "5f0ff662-dc74-41de-adcd-de784a595321",
|
||||
"target_record_id": "816b7c26-827b-475a-bf98-647b46afe88b",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "a75f532e2464dadd13dd2ff815d99acfb2f05d3a0264fcf82dfe8e3db7db3a1f",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "CLU-05",
|
||||
"title": "Têxtil, vestuário e algodão",
|
||||
"source_record_id": "b9b1dc01-dca1-42d8-a9aa-40148dccfaf7",
|
||||
"target_record_id": "8eb7da82-1f1e-442b-9b1e-57b948c3f057",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "fe2f37be8e3f20ccc35da91aa86872b960e9820f2e0de84200c157072b3c7b11",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "CLU-06",
|
||||
"title": "Mineração e transformação mineral",
|
||||
"source_record_id": "0f29da56-b74a-4a69-afaa-b9a0d349580c",
|
||||
"target_record_id": "65d709f5-20ed-4beb-8cf1-4a7fbd459e8f",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "097498df28f63b614914cc171e4d58c6154442d0d6625185b3759878829528de",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "CLU-07",
|
||||
"title": "Tecnologia e serviços digitais",
|
||||
"source_record_id": "523d2aa1-4c7d-4a84-97fc-220f4e845fd7",
|
||||
"target_record_id": "a795cde3-3cfe-456b-ba8d-7ff3730024ec",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "6c5407281d18069e05b84e1e7997d07fd79680e2b0e2a5b0e7d86cbfc3c2ca35",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "CLU-08",
|
||||
"title": "Financiamento do investimento",
|
||||
"source_record_id": "ed2ea4e4-fca7-4cc8-bb8c-f99a1dfda73e",
|
||||
"target_record_id": "05dc87a8-e1ab-41c9-a312-5b14b8ff16ce",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "f59505944a91a849c27c16455001ad4a1d39aa58e59e8d5403cb0dc197c2faf8",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "COR-01",
|
||||
"title": "Corredor de Nacala e Norte",
|
||||
"source_record_id": "dc8f048a-c0bd-476e-9ff2-460dfb12eddc",
|
||||
"target_record_id": "986af8c5-2f90-40ab-a62a-4c37a5f42e30",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "26db6621cae0e76d2871f56926062bc0be5bb41e21521d2536655e809b6dff20",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "COR-02",
|
||||
"title": "Corredor da Beira e Centro",
|
||||
"source_record_id": "fd5e7b2d-cb48-49e4-bb96-1520263144f2",
|
||||
"target_record_id": "a7271336-808b-42b4-8bfd-5b49c72dbe2b",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "0e6b80849fcb0746aa1a53133ee0d5ccc3df8c847243a1134922247ce3d9e1b8",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "COR-03",
|
||||
"title": "Corredor Zambeze–Macuse",
|
||||
"source_record_id": "18f3a86c-af85-4fbb-b045-9c3e03c4a610",
|
||||
"target_record_id": "d9ccddb5-e6aa-4347-a481-37b694013ac1",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "64c8eba636661e6ebb56e2dd8dd6e978c405dd96c0c7b46bdd62c805018a6c4a",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "COR-04",
|
||||
"title": "Corredor Maputo–Limpopo",
|
||||
"source_record_id": "36d72f82-ff0a-468c-89bf-5dc9ae12eddf",
|
||||
"target_record_id": "ae26d529-5341-4b37-ad08-662c9d09a0cf",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "ce5b89974e1d2937e4901ab5603245cf2465afbe0a44a224c43f726069cdabd8",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "COR-05",
|
||||
"title": "Corredor Turístico Inhambane–Bazaruto",
|
||||
"source_record_id": "06b2d5d7-98ad-48db-b732-8a70b2f5eb4c",
|
||||
"target_record_id": "69767dcc-4c22-4046-8f81-3797bc44572e",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "343ba56efeef5514f531cf61126596a8c65f882656da5f95390eb661a0810a7c",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
},
|
||||
{
|
||||
"code": "COR-06",
|
||||
"title": "Corredor Industrial Nacional Norte–Sul",
|
||||
"source_record_id": "6727e46b-98e1-47a7-be04-dfdb1c6375cb",
|
||||
"target_record_id": "fb85ebfc-798c-42df-a267-d4b771c443f8",
|
||||
"expected_target_version": 1,
|
||||
"content_sha256": "465ff9717def3bad42efb25d1ffa04812f871e8b167adcbb20f68f5ef9460b57",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"approval_evidence": "26/09/2026 — Aprovação expressa do proprietário nesta sessão: inserir a informação do documento upgrade do portal de investimentos v4 programacao sobre clusters, corredores e projectos ancora nas tabelas e criar os caminhos para a sua execução; eu e que aprovo e estou a aprovar.",
|
||||
"approval_sha256": "0cbc4b7a3f01dfb6c28659a11597f7e10f87f8c3119bf44ea92b97bec033f3eb",
|
||||
"original_published_at": "2026-09-26 16:22:52+00"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,935 @@
|
||||
{
|
||||
"date": "2026-10-23",
|
||||
"operation": "Inventory before further acceptance tests; no active data changed",
|
||||
"baseline_commit": "37a8eb015ac5022fd34bcd89cfe47c9fc61903b0",
|
||||
"existing_43_components": [
|
||||
{
|
||||
"number": 1,
|
||||
"component": "Documentos públicos",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Disponível: 29 recursos públicos; recibo editorial 22/10. Os 20 artigos conservam a aceitação anterior.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/documentos) · 29 fichas privadas; zero publicação adicional. Consulta pública do acervo permanece fechada."
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"component": "Ficha integral dos parques",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Disponibilizado localmente em 18/10; destino conserva 16 fichas, 8 publicadas. Recorte integral não é reaprovado por este inventário.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/zonas) · 16 fichas privadas/pendentes, 19 relações territoriais; publicação e gestão autorizada separadas."
|
||||
},
|
||||
{
|
||||
"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."
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
"component": "Referências económicas — lote mínimo",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Código e referências presentes; manter o âmbito da autorização anterior, sem inferir publicação de todas as opções.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/management/investment/references) · 11 actividades presentes; cinco novas referências transportadas. Activação/publicação do lote não executada."
|
||||
},
|
||||
{
|
||||
"number": 5,
|
||||
"component": "Sectores e duplicação visual",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Entrega de 18/10 conservada no código/histórico; sem remoção constatada nesta leitura.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/sectores) · Ecrã aberto: dez sectores principais, especialização Fintech sem cartão principal duplicado; 12 registos conservados."
|
||||
},
|
||||
{
|
||||
"number": 6,
|
||||
"component": "Duplicados distintos — deteção e consolidação",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/management/sector-reconciliation) · Código presente; consolidação de registos distintos não demonstrada no destino."
|
||||
},
|
||||
{
|
||||
"number": 7,
|
||||
"component": "Fintech — enquadramento específico",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Fintech público no lote aceite; especialização preservada. Não reabrir a organização sectorial aprovada.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/sectores/mercado-financeiro/fintech) · Código instalado; artigo de origem permanece privado, sem publicação adicional."
|
||||
},
|
||||
{
|
||||
"number": 8,
|
||||
"component": "Legado — conteúdo restante",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "20 artigos públicos e 28 privados cadastrados no destino; dois originais incompletos. Recibo 37a8eb01.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/sectores) · Adaptador habilitado; artigos/imagens transportados privadamente, sem os publicar."
|
||||
},
|
||||
{
|
||||
"number": 9,
|
||||
"component": "Piloto agronegócio",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Piloto Agronegócio concluído: artigo e imagem preservados; não é uma oportunidade empresarial concreta.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/sectores) · Originais privados; seis oportunidades sintéticas excluídas. Nenhuma oportunidade real publicada."
|
||||
},
|
||||
{
|
||||
"number": 10,
|
||||
"component": "Percurso do investidor — 19 etapas",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Percurso e preparação privada habilitados no destino; entrega adaptativa de 22/10. Zero dossiers pessoais não é perda de função.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/investimentos) · Início e lista própria abrem; definição de 19 etapas instalada. Não repetidas as 19 etapas aceites."
|
||||
},
|
||||
{
|
||||
"number": 11,
|
||||
"component": "Fiscal/contributivo e exportações",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Tesouraria/exportações e consumidor IVA têm entregas delimitadas em 21–22/10; restantes variantes não promovidas a concluídas.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Formulário aberto; cenários fiscais/contributivos/exportação e parâmetros efectivos não certificados nesta execução."
|
||||
},
|
||||
{
|
||||
"number": 12,
|
||||
"component": "Negócios existentes e classificação",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Módulo habilitado e fluxos conservados. Ausência de anúncios não demonstra desaparecimento de código.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/negocios) · Catálogo abre e módulo habilitado; zero negócios copiados. Gestão própria sujeita às permissões existentes."
|
||||
},
|
||||
{
|
||||
"number": 13,
|
||||
"component": "Negócios similares",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/negocios) · Código instalado; comparação com negócios reais não demonstrada."
|
||||
},
|
||||
{
|
||||
"number": 14,
|
||||
"component": "Importação de empresas/empreendimentos",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/management/negocios) · Mecanismo presente; nenhuma empresa/transacção local ou QA transferida. Operador de gestão por definir."
|
||||
},
|
||||
{
|
||||
"number": 15,
|
||||
"component": "Fundos",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Fontes instaladas; critérios específicos de fundos não demonstrados no destino."
|
||||
},
|
||||
{
|
||||
"number": 16,
|
||||
"component": "Comparador societário e modelos",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Fontes instaladas; comparação societária/modelos não demonstrados nesta execução."
|
||||
},
|
||||
{
|
||||
"number": 17,
|
||||
"component": "Capitalização/private equity e Bolsa",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Fontes instaladas; cenários específicos de capitalização/Bolsa não demonstrados no destino."
|
||||
},
|
||||
{
|
||||
"number": 18,
|
||||
"component": "Checklists versionadas",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/servicos) · Definições presentes; checklist aplicada a dossier legítimo continua por demonstrar."
|
||||
},
|
||||
{
|
||||
"number": 19,
|
||||
"component": "Indicadores de utilização",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/dashboard) · Código presente; indicadores com dados reais e permissões adequadas não demonstrados."
|
||||
},
|
||||
{
|
||||
"number": 20,
|
||||
"component": "Jornadas educativas",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Jornadas habilitadas; cartões educativos disponibilizados. Mantido o âmbito parcial da educação.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/educacao) · Área abre e flag habilitada; nenhum percurso educativo completo foi repetido."
|
||||
},
|
||||
{
|
||||
"number": 21,
|
||||
"component": "Partilha documental individual e variantes de sala",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/parcerias/painel) · Estruturas de salas/partilha instaladas; participantes, consentimentos e partilha real não demonstrados."
|
||||
},
|
||||
{
|
||||
"number": 22,
|
||||
"component": "Restauro, modalidades e SLA",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/painel) · Backup/restauro coberto separadamente; modalidades/SLA não homologados. Escalonamento continua desligado como local."
|
||||
},
|
||||
{
|
||||
"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."
|
||||
},
|
||||
{
|
||||
"number": 24,
|
||||
"component": "Acessibilidade e restantes consumidores",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/oportunidades) · Mensagens R2 preservadas; não se declara certificação integral de acessibilidade de todos os módulos."
|
||||
},
|
||||
{
|
||||
"number": 25,
|
||||
"component": "Fechos de operação/avaliação documental",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/painel) · Sem processo operacional legítimo para demonstrar fecho/avaliação documental."
|
||||
},
|
||||
{
|
||||
"number": 26,
|
||||
"component": "Conta simples, login e MFA privilegiado",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Login/MFA e designações reais documentados; sem alteração de papéis nesta passagem.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/login) · Login e desafio MFA reais concluídos; conta simples R2 e controlos privilegiados preservados."
|
||||
},
|
||||
{
|
||||
"number": 27,
|
||||
"component": "Manifestação simples, recibo e acompanhamento do interessado — R2",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "R2 e percursos posteriores conservados; reutilizar as provas aceites.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/investidor/manifestacoes) · Recorte R2 conservado, com provas aceites reutilizadas; nenhuma manifestação fictícia criada."
|
||||
},
|
||||
{
|
||||
"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."
|
||||
},
|
||||
{
|
||||
"number": 29,
|
||||
"component": "Biblioteca privada própria, scanner e recuperação — DOC01",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Biblioteca, scan e recuperação disponíveis: 59 recursos, 29 públicos e 30 privados.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/management/portal-services) · Conta de custódia vê 30 ficheiros limpos. Novo original recuperado no navegador com SHA-256 igual à fonte; sem gestão global."
|
||||
},
|
||||
{
|
||||
"number": 30,
|
||||
"component": "Backup/restauro e reversão do recorte R2 + DOC01",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Backup/restauro 22/10 documentado: 174 tabelas. Reposição activa terá backup próprio antes da escrita.",
|
||||
"evidence": "Backup fresco consistente: 144 tabelas restauradas iguais, 34 ficheiros/configuração conferidos, recuperação portável e metadados Linux/PG protegidos. Reversão de apresentação preparada."
|
||||
},
|
||||
{
|
||||
"number": 31,
|
||||
"component": "Balcão Virtual",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Balcão e definições instalados; zero casos reais no destino não é perda de funcionalidade.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/painel) · Painel e serviço existente abrem; dez tabelas base instaladas, definição interna project-preparation v5 transportada."
|
||||
},
|
||||
{
|
||||
"number": 32,
|
||||
"component": "Vínculo positivo e recuperação do dossier",
|
||||
"historic_status": "Não demonstrado",
|
||||
"current_preservation_status": "Recuperação de contexto demonstrada em QA nas entregas posteriores; ausência de caso real não reabre a prova aceite.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/investimentos) · Vínculo documental positivo pendente: zero dossiers da conta no destino. Não foram criados dados fictícios."
|
||||
},
|
||||
{
|
||||
"number": 33,
|
||||
"component": "Cadastro canónico e recursos de oportunidade",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Cadastro e recursos disponibilizados; 30 oportunidades com resumos em preparação publicados.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/management/opportunities) · Editor/schema instalados; zero oportunidades. Gestão/revisão exigem atribuições existentes ainda não configuradas."
|
||||
},
|
||||
{
|
||||
"number": 34,
|
||||
"component": "Perfis, revisão independente e publicação",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Perfis e atribuições existentes preservados; inventário não cria decisão organizacional nova.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/perfis/gestao) · Schema e fluxos presentes; zero atribuições/titulares. Nenhum papel ou privilégio concedido automaticamente."
|
||||
},
|
||||
{
|
||||
"number": 35,
|
||||
"component": "Bolsa de parcerias e salas internas",
|
||||
"historic_status": "Disponível",
|
||||
"current_preservation_status": "Bolsa e percursos existentes preservados; variantes com participantes reais mantêm saldo próprio.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/parcerias) · Catálogo e mapa abrem, nove tabelas de relações/salas instaladas; colaboração com participantes reais não demonstrada."
|
||||
},
|
||||
{
|
||||
"number": 36,
|
||||
"component": "Onde se localiza / associações territoriais e produtivas",
|
||||
"historic_status": "Ausente",
|
||||
"current_preservation_status": "Estado Ausente superado: integração territorial entregue em 20–22/10; catálogos e 408 limites conservados.",
|
||||
"evidence": "Harmonização territorial apenas QA, expressamente excluída da revisão autorizada."
|
||||
},
|
||||
{
|
||||
"number": 37,
|
||||
"component": "Lote privado Inhambane —30 fichas",
|
||||
"historic_status": "Ausente",
|
||||
"current_preservation_status": "Estado Ausente superado: 30 fichas Inhambane transportadas e resumos divulgados em 22/10.",
|
||||
"evidence": "30 fichas Inhambane apenas QA, não importadas nem publicadas no destino."
|
||||
},
|
||||
{
|
||||
"number": 38,
|
||||
"component": "Enquadramento das12 fichas de programas/carteira",
|
||||
"historic_status": "Ausente",
|
||||
"current_preservation_status": "Estado Ausente superado: enquadramento de 11 programas e uma carteira incluído na entrega posterior.",
|
||||
"evidence": "Enquadramento das 12 fichas permanece no incremento QA separado."
|
||||
},
|
||||
{
|
||||
"number": 39,
|
||||
"component": "Originais partilhados e referência documental no dossier — Inhambane",
|
||||
"historic_status": "Ausente",
|
||||
"current_preservation_status": "Estado Ausente superado: originais privados/referências e contexto incluídos na entrega posterior; não reimportar.",
|
||||
"evidence": "Reutilização documental Inhambane/dossier permanece no incremento QA separado."
|
||||
},
|
||||
{
|
||||
"number": 40,
|
||||
"component": "Orientação assistida/IA",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Sem regressão demonstrada: integração externa não fechada; não inventar credencial nem activar fornecedor.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/management/ai) · Código presente; integração desligada. Credencial própria do destino/chamada externa não confirmadas."
|
||||
},
|
||||
{
|
||||
"number": 41,
|
||||
"component": "Integração externa SuiteCRM",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Desabilitada também no local por opção anterior; não desapareceu por efeito da entrega editorial.",
|
||||
"evidence": "Permanece desligada como na versão local; nenhuma credencial ou envio externo copiado/executado."
|
||||
},
|
||||
{
|
||||
"number": 42,
|
||||
"component": "Operação administrativa e resposta da equipa na homologação",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Estado antigo superado: conta real e gestão autorizada demonstradas nas entregas posteriores. Sem novos papéis.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/management/interests) · Nenhuma conta com gestão global/atribuições operacionais. Custódia documental não autoriza resposta/revisão da equipa."
|
||||
},
|
||||
{
|
||||
"number": 43,
|
||||
"component": "Gestão editorial da biblioteca",
|
||||
"historic_status": "Instalado mas desabilitado",
|
||||
"current_preservation_status": "Gestão autónoma entregue; edição, prévia, gravação e recuperação dos 28 privados demonstradas no destino.",
|
||||
"evidence": "[Abrir](https://teste-investidor.tempo.co.mz/management/portal-services) · Schema editorial instalado; publicação/edição pública não concedida à conta de custódia."
|
||||
}
|
||||
],
|
||||
"existing_executable_surfaces": [
|
||||
{
|
||||
"surface": "------------------------------",
|
||||
"component": "-------------------------------------------",
|
||||
"routes": "-------------------------------------------------------------------------",
|
||||
"accepted_evidence": "---------------------------------------------------------",
|
||||
"code_files": []
|
||||
},
|
||||
{
|
||||
"surface": "Início",
|
||||
"component": "`PortalInvestidor`",
|
||||
"routes": "`/`, APIs existentes de homepage",
|
||||
"accepted_evidence": "`PublicPortalNavigationTest`, navegador",
|
||||
"code_files": []
|
||||
},
|
||||
{
|
||||
"surface": "Catálogo / Educação",
|
||||
"component": "`investment/catalogue`",
|
||||
"routes": "`/oportunidades`, `/educacao`; `/api/v1/investment/search`",
|
||||
"accepted_evidence": "`InvestmentUnificationTest`",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\catalogue.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Cluster / Corredor / Âncora",
|
||||
"component": "`portfolio/index`, `portfolio/show`",
|
||||
"routes": "`/clusters`, `/corredores`, `/projectos-ancora`, `/carteira/{id}`",
|
||||
"accepted_evidence": "`InvestmentPortfolioTest`, testes territoriais",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\portfolio\\index.tsx",
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "resources\\js\\pages\\portfolio\\show.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Ficha",
|
||||
"component": "`investment/detail`",
|
||||
"routes": "`/oportunidades/{slug}`; `/api/v1/investment/opportunities/{slug}`",
|
||||
"accepted_evidence": "`PublicPortalNavigationTest`, `InvestmentUnificationTest`",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\detail.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Mapa",
|
||||
"component": "Componente `Map` em catálogo",
|
||||
"routes": "`/api/v1/investment/map`",
|
||||
"accepted_evidence": "Teste PostGIS e estados vazios",
|
||||
"code_files": []
|
||||
},
|
||||
{
|
||||
"surface": "Comparar / exportar / sugerir",
|
||||
"component": "`investment/catalogue`",
|
||||
"routes": "`/compare`, `/export`, `/suggest` sob prefixo da API",
|
||||
"accepted_evidence": "Teste de publicação e fórmula CSV",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\catalogue.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Área do investidor",
|
||||
"component": "`investment/workspace`",
|
||||
"routes": "`/investidor/manifestacoes`; `/api/v1/investment/submissions`",
|
||||
"accepted_evidence": "Isolamento por dono",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\workspace.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Perfil / empresas",
|
||||
"component": "`investment/profile`",
|
||||
"routes": "`/investidor/profile`; API `/profile`, `/companies/{id?}`",
|
||||
"accepted_evidence": "`InvestmentWorkspaceTest` e navegador",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\profile.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Conversa / versões",
|
||||
"component": "`investment/conversation`",
|
||||
"routes": "API `/submissions/{id}/messages`, `/submissions/{id}/revisions/{version}`",
|
||||
"accepted_evidence": "Testes de isolamento, encriptação e reenvio; navegador",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\conversation.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Notificações",
|
||||
"component": "`investment/notifications`",
|
||||
"routes": "`/investidor/notifications`; API `/notifications`, `/{id}/read`",
|
||||
"accepted_evidence": "Testes de mudança de estado e leitura; navegador",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\notifications.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Manifestação",
|
||||
"component": "`investment/submission`",
|
||||
"routes": "`PUT /submissions/{id}`, `POST /submissions/{id}/submit`",
|
||||
"accepted_evidence": "Testes de conflito, validação e reenvio",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\submission.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Anexos",
|
||||
"component": "Etapa 4 da manifestação",
|
||||
"routes": "`/submissions/{id}/attachments`",
|
||||
"accepted_evidence": "Teste de anexo privado e adulteração",
|
||||
"code_files": []
|
||||
},
|
||||
{
|
||||
"surface": "Contexto da oportunidade",
|
||||
"component": "`investment/context`",
|
||||
"routes": "`/management/opportunities/{id}/context`",
|
||||
"accepted_evidence": "Teste de gestão, conflito e educação",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\context.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Referências e formulários",
|
||||
"component": "`investment/references`",
|
||||
"routes": "`/management/investment/references`",
|
||||
"accepted_evidence": "Teste de referências e reexecução do seed",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\investment\\references.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Atendimento / CRM",
|
||||
"component": "`management/interest`, gestão CRM existente",
|
||||
"routes": "`/management/interests/{id}`",
|
||||
"accepted_evidence": "Testes de intake e CRM existentes",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\management\\interest.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"surface": "Apoio / documentos / parcerias",
|
||||
"component": "`portal/services`, `portal/manage`",
|
||||
"routes": "`/apoio`, `/documentos`, `/parcerias`, `/balcao-virtual`",
|
||||
"accepted_evidence": "`PublicPortalServicesTest`",
|
||||
"code_files": [
|
||||
{
|
||||
"path": "resources\\js\\pages\\portal\\services.tsx",
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "resources\\js\\pages\\portal\\manage.tsx",
|
||||
"exists": true
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"additional_approved_increment": "Concursos e anúncios: instalado e habilitado em 22/10; gestão autorizada e consulta, sem anúncio real publicado.",
|
||||
"source_inventory_sha256": {
|
||||
"local": "135bdc35b23d05e239f9c44ef9762af11111c880b4ef78faaacb63ebeb9dfdc2",
|
||||
"qa": "632a488d2a0a7841babceb2242f6be61d534b54b64958db0d639185aabb80104",
|
||||
"homologation": "a247f521b512654206a1fbf4fde03a46233d8e2d98122d119417bc0a2f70df23"
|
||||
},
|
||||
"confirmed_loss": {
|
||||
"portfolio_and_anchor_visibility": {
|
||||
"expected_published": 29,
|
||||
"current_target_published": 0,
|
||||
"records_present": 29,
|
||||
"deletion_claimed": false,
|
||||
"local_QA_content_source_matches": 29,
|
||||
"target_hash_match": 29,
|
||||
"recovery_status": "restored in QA and homologation",
|
||||
"target_visible_after": 29
|
||||
}
|
||||
},
|
||||
"historic_change": {
|
||||
"commit": "e65cb26901a5ca18862134b20e4c17b1f1003ec2",
|
||||
"date": "2026-10-06",
|
||||
"change": "Removed portfolio:import --approval and document_owner publication path; import now creates drafts",
|
||||
"does_not_prove_date_of_disappearance_from_particular_address": true
|
||||
},
|
||||
"qa_tests_run": false,
|
||||
"facts_before_recovery": {
|
||||
"local": {
|
||||
"dossiers": 29,
|
||||
"portfolio_visible": 29,
|
||||
"projects": 16,
|
||||
"clusters": 8,
|
||||
"corridors": 6,
|
||||
"resources": 29,
|
||||
"geometries": 0
|
||||
},
|
||||
"qa": {
|
||||
"dossiers": 29,
|
||||
"portfolio_visible": 0,
|
||||
"projects": 16,
|
||||
"clusters": 8,
|
||||
"corridors": 6,
|
||||
"resources": 61,
|
||||
"geometries": 408
|
||||
},
|
||||
"homologation": {
|
||||
"dossiers": 29,
|
||||
"portfolio_visible": 0,
|
||||
"projects": 16,
|
||||
"clusters": 8,
|
||||
"corridors": 6,
|
||||
"resources": 59,
|
||||
"geometries": 408
|
||||
}
|
||||
},
|
||||
"inventory_data_writes": 0,
|
||||
"qa_recovery": {
|
||||
"database": {
|
||||
"name": "simulator_fiscal_delta_20261021_test",
|
||||
"port": 55441
|
||||
},
|
||||
"qa": true,
|
||||
"mode": "applied",
|
||||
"manifest_sha256": "8d07007a2e1e8758d4741b4ac594f78d5943f71ad78b2daae7f85aefa9d2de4a",
|
||||
"preview_sha256": "fbb9ba70df67ef349cb673a683f051f21a8ae62d192f09fc35f2abac7c45b35d",
|
||||
"scope": 29,
|
||||
"restored": 29,
|
||||
"visible": 29,
|
||||
"data_content_changed": false,
|
||||
"new_dossiers_imported": 0,
|
||||
"fake_editor_or_reviewer_assigned": false,
|
||||
"plan": [
|
||||
{
|
||||
"id": "9871a8c0-d562-420b-a8f7-174c95db93f0",
|
||||
"code": "A01",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "2adcbe741777d4352c47eb31281dc6b2e2d04903fcfd3e59778ddff4e1342977",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "64b824a0-3527-4024-a1a2-5234f5b4caaa",
|
||||
"code": "A02",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "3ad808813909f1475f44a5fcf2a4e50c5d01e25ad8ea39d906c52519532cf0ee",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "6c03e980-c455-49cc-a3be-99d29014e91d",
|
||||
"code": "A03",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "75266ff89da58e4d6e5422e49e4641c62dae4f171fa358b70e210c5883a1fd07",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "8bd83cc4-b36c-46cd-9287-b47e1162b578",
|
||||
"code": "A04",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "f6a63e2ee2f2e7c98f1030d206996ad57b0d92129d021ed3c6bb53f161d56f5b",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "d8a88bac-4684-43fa-aea6-e54fef9b8a47",
|
||||
"code": "A05",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "ea0f6b7843289d81dc2852327432721f8677e28ad8b41d754abc8c91307303d3",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "57a4ee7a-4c07-4e26-b8f5-e07726e41512",
|
||||
"code": "A06",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "c7fae7b2ca541e734e587589dace8dc85dee2494876de6e30ecd91a7177a985d",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "70ae731e-fdef-473f-b495-14f319b28d60",
|
||||
"code": "A07",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "3eb01ce3dd2cc68b43b816708f7e5f990c48f1aea6555cdfd169a286e11b9bd4",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "b30ecd8c-220d-4c7a-b1a7-704dc24d0933",
|
||||
"code": "A08",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "bca089a4bb2601ca34c50e2c48068b4c2f9fa7a873955cf0587f261a83c2a146",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "dc8892ff-fdda-480c-81f1-2ffe0bfcb40b",
|
||||
"code": "A09",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "7e3bb071f65e49245fbfd070f4123ac49985004e865c475bf7e34c85cc708aea",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "77b685f0-848f-4800-83f8-a29539ed8f31",
|
||||
"code": "A10",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "02dc0fb152908e81b11304f6bc0c2252805ebd2ad1860b1a6bfa918e2cbcd5bb",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "cb125f84-6f75-48e5-a0de-2f5e6bd537ed",
|
||||
"code": "A11",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "736fc41d941740f41697c579ffe6c4208d45005d7177b7c42f006554a5dde480",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "71b96599-09c2-4809-b98f-acbf0c2b6f38",
|
||||
"code": "A12",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "9dbdb468b8644e07fabdc943ecde2f11ea561d5174c00559228ed29b2a29b1fe",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "5ce2d415-1c84-4625-a4cd-0f6738454318",
|
||||
"code": "A13",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "7a62afdda8e2c3fcc47b1c9032359906ff75dff9b5d56c71ba7d88781a8f8620",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "88111fb4-ab20-4393-bd1b-3a1694fb4ac4",
|
||||
"code": "A14",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "930836392126133499fa69313a4718ce2ec1f6c8f0839c184e9b5cc229460d1c",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "88e37c63-e785-446f-9074-84b000bffa59",
|
||||
"code": "A15",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "d19d27451296b9816351e2d340f2aaff9fabf9732fb580d179e1c69ceb9fc512",
|
||||
"source_sha256": "4919cd8aae6230e576947b38e5ff839b2661166fb2a8598bea1d662f15bd170a",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "0c63d8de-18fd-451f-a7ca-1ea04dd5906c",
|
||||
"code": "CLU-01",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "ccd16f969474dcc23b2ddf27eb4cf3ca090f22e418e0e8f33499f349e884d042",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "fc1355f5-1473-4fe2-b3e2-b32d1f0b1042",
|
||||
"code": "CLU-02",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "78c50659068301be0db94e8f4c9e77a20a4a052639dc4553291ff3568d3c0c4a",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "99bf7c4c-e23b-47d5-8490-53082384043f",
|
||||
"code": "CLU-03",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "99af7bb35b6769d84bee2175427b3a03027fea65a91dd894338fd7aa72db3820",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "816b7c26-827b-475a-bf98-647b46afe88b",
|
||||
"code": "CLU-04",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "a75f532e2464dadd13dd2ff815d99acfb2f05d3a0264fcf82dfe8e3db7db3a1f",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "8eb7da82-1f1e-442b-9b1e-57b948c3f057",
|
||||
"code": "CLU-05",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "fe2f37be8e3f20ccc35da91aa86872b960e9820f2e0de84200c157072b3c7b11",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "65d709f5-20ed-4beb-8cf1-4a7fbd459e8f",
|
||||
"code": "CLU-06",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "097498df28f63b614914cc171e4d58c6154442d0d6625185b3759878829528de",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "a795cde3-3cfe-456b-ba8d-7ff3730024ec",
|
||||
"code": "CLU-07",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "6c5407281d18069e05b84e1e7997d07fd79680e2b0e2a5b0e7d86cbfc3c2ca35",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "05dc87a8-e1ab-41c9-a312-5b14b8ff16ce",
|
||||
"code": "CLU-08",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "f59505944a91a849c27c16455001ad4a1d39aa58e59e8d5403cb0dc197c2faf8",
|
||||
"source_sha256": "70688ba4623298f5ec073331c06c28ca5b0a9c552578e22ccebe20c27d1ca8cf",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "986af8c5-2f90-40ab-a62a-4c37a5f42e30",
|
||||
"code": "COR-01",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "26db6621cae0e76d2871f56926062bc0be5bb41e21521d2536655e809b6dff20",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "a7271336-808b-42b4-8bfd-5b49c72dbe2b",
|
||||
"code": "COR-02",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "0e6b80849fcb0746aa1a53133ee0d5ccc3df8c847243a1134922247ce3d9e1b8",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "d9ccddb5-e6aa-4347-a481-37b694013ac1",
|
||||
"code": "COR-03",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "64c8eba636661e6ebb56e2dd8dd6e978c405dd96c0c7b46bdd62c805018a6c4a",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "ae26d529-5341-4b37-ad08-662c9d09a0cf",
|
||||
"code": "COR-04",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "ce5b89974e1d2937e4901ab5603245cf2465afbe0a44a224c43f726069cdabd8",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "69767dcc-4c22-4046-8f81-3797bc44572e",
|
||||
"code": "COR-05",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "343ba56efeef5514f531cf61126596a8c65f882656da5f95390eb661a0810a7c",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"already_restored": false
|
||||
},
|
||||
{
|
||||
"id": "fb85ebfc-798c-42df-a267-d4b771c443f8",
|
||||
"code": "COR-06",
|
||||
"version": 1,
|
||||
"status": "draft",
|
||||
"content_sha256": "465ff9717def3bad42efb25d1ffa04812f871e8b167adcbb20f68f5ef9460b57",
|
||||
"source_sha256": "09a6a7664f6a910dbc22190ab85d832f5405dd3eaf19e712f313c4241b873b55",
|
||||
"already_restored": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"destination_recovery": {
|
||||
"database": {
|
||||
"name": "teste_investidor",
|
||||
"port": 5432
|
||||
},
|
||||
"qa": false,
|
||||
"mode": "applied",
|
||||
"manifest_sha256": "8d07007a2e1e8758d4741b4ac594f78d5943f71ad78b2daae7f85aefa9d2de4a",
|
||||
"preview_sha256": "6302eee1c69b44e726fc1e0b2c5a63ac0d5eb76b23eaf97295475ab411c1151e",
|
||||
"scope": 29,
|
||||
"restored": 29,
|
||||
"visible": 29,
|
||||
"data_content_changed": false,
|
||||
"new_dossiers_imported": 0,
|
||||
"fake_editor_or_reviewer_assigned": false
|
||||
},
|
||||
"preservation_after": {
|
||||
"changed_tables": [
|
||||
"audit_events",
|
||||
"investment_dossiers",
|
||||
"sessions"
|
||||
],
|
||||
"expected_recovery_changes": [
|
||||
"investment_dossiers",
|
||||
"audit_events"
|
||||
],
|
||||
"unchanged_tables": 171,
|
||||
"table_count": 174,
|
||||
"portal_resources_unchanged": true,
|
||||
"documents_unchanged": true,
|
||||
"geometries_unchanged": true,
|
||||
"role_assignments_unchanged": true,
|
||||
"new_dossiers": 0,
|
||||
"deployment_watcher": "active"
|
||||
},
|
||||
"backup": {
|
||||
"stage": "/var/backups/investmoz-preservation-inventory-20261023/backup",
|
||||
"target": {
|
||||
"database": "teste_investidor",
|
||||
"port": 5432
|
||||
},
|
||||
"tables": 174,
|
||||
"files_verified": 369,
|
||||
"dump_sha256": "7b7a3a082e1259c53c321617eb84d10b544e5a211f5f708199026c4205d1c511",
|
||||
"files_sha256": "0cc28141a081ce9d097735c7815b46f55d99300adf7361d936b857a24f897b86",
|
||||
"restore_verified": false
|
||||
},
|
||||
"restore": {
|
||||
"restore_verified": true,
|
||||
"tables_verified": 174,
|
||||
"container_network": "none",
|
||||
"database": "preservation_restore_20261023",
|
||||
"port": 55441,
|
||||
"source_dump_sha256": "7b7a3a082e1259c53c321617eb84d10b544e5a211f5f708199026c4205d1c511",
|
||||
"active_database_writes": 0
|
||||
},
|
||||
"public_recovery": {
|
||||
"checked_utc": "2026-10-23T07:12:24.984213+00:00",
|
||||
"results": [
|
||||
{
|
||||
"url": "https://teste-investidor.tempo.co.mz/carteira",
|
||||
"http": 200,
|
||||
"component": "portfolio/index",
|
||||
"total": 29,
|
||||
"authenticated": false
|
||||
},
|
||||
{
|
||||
"url": "https://teste-investidor.tempo.co.mz/carteira?kind=project",
|
||||
"http": 200,
|
||||
"component": "portfolio/index",
|
||||
"total": 15,
|
||||
"authenticated": false
|
||||
},
|
||||
{
|
||||
"url": "https://teste-investidor.tempo.co.mz/carteira?kind=cluster",
|
||||
"http": 200,
|
||||
"component": "portfolio/index",
|
||||
"total": 8,
|
||||
"authenticated": false
|
||||
},
|
||||
{
|
||||
"url": "https://teste-investidor.tempo.co.mz/carteira?kind=corridor",
|
||||
"http": 200,
|
||||
"component": "portfolio/index",
|
||||
"total": 6,
|
||||
"authenticated": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"new_contents_imported": 0,
|
||||
"executed_recovery_source_sha256": "f4f76fa8b41bb5cf241093709ea8044592a54f8bafd0df9ca15b0c8745c45bcc",
|
||||
"active_recovery_changes": {
|
||||
"investment_dossiers": 29,
|
||||
"audit_events": 29,
|
||||
"credentials_stored": false,
|
||||
"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."
|
||||
}
|
||||
@@ -1,5 +1,26 @@
|
||||
# Rastreabilidade, utilização e formação
|
||||
|
||||
## Preservação do concluído — inventário e reposição, 23/10/2026
|
||||
|
||||
**Prioridade expressa da Tempo:** inventariar o que já estava concluído, identificar o que desapareceu e repor, antes de avançar com outras rondas de testes/validações. Actualizado o [inventário existente dos 43 componentes](#saldo-dos-43-componentes) com uma coluna de saldo actual; conservada também a matriz executável dos 17 percursos. Os componentes de interface ali referenciados existem no código actual. As entregas posteriores prevalecem sobre estados históricos: por exemplo, os incrementos 36–39 já não podem ser apresentados como ausentes, e o acervo editorial já não está genericamente desabilitado. Não se criou outra matriz/backlog nem se usou o inventário para exigir novamente aceitações anteriores.
|
||||
|
||||
**Recortes concluídos a preservar**, com os limites e recibos das secções próprias: gestão única e editorial documental; 20 artigos públicos e 28 rascunhos privados; sectores/Fintech e cartões educativos; navegação contextual e percurso adaptativo privado; recortes entregues de parques; cadastro e recursos das oportunidades; divulgação dos 30 resumos Inhambane em preparação; perfis/login/MFA; demarcação recuperada; recortes de tesouraria/exportações e consumidor IVA já entregues; instalação de Concursos e anúncios; e carteira documental agora reposta. A presença de código não encerra os critérios parciais de educação, integrações externas, participantes reais ou variantes fiscais. Não se criam dados de exemplo para preencher catálogos vazios, nem se transformam essas pendências em funcionalidades desaparecidas.
|
||||
|
||||
**Perdas e reposições identificadas:**
|
||||
|
||||
- **Carteira, clusters, corredores e projectos âncora:** 29 dossiers existiam em QA e homologação, todos em rascunho, enquanto os exemplares anteriores estavam publicados com aprovação `document_owner`. Reposta a visibilidade de **15 projectos, 8 clusters e 6 corredores**, sem nova importação. O catálogo público mostra novamente os 29 dossiers. Isto é divulgação documental informativa, não confirmação de execução, disponibilidade, financiamento ou promotor de cada projecto.
|
||||
- **Demarcação territorial:** a diferença anterior de geometrias já foi reposta em 22/10; a leitura actual conserva **408 limites**. Não voltar a importar nem reabrir a prova aceite. As 26+147 correspondências pendentes e a inexistência de polígonos próprios de localidades permanecem lacunas reais, não novos desaparecimentos.
|
||||
|
||||
**Causa delimitada da carteira:** o importador actual cria os dossiers como rascunhos. O commit `e65cb26901a5ca18862134b20e4c17b1f1003ec2`, de 06/10/2026, retirou a opção `portfolio:import --approval` e o caminho que aplicava a aprovação documental do proprietário. A instalação noutro ambiente deixou de transportar/reconciliar essa decisão de divulgação. A leitura de 23/10 encontrou os 29 registos, 16 projectos, 8 clusters e 6 corredores preservados; não ocorreu eliminação desses mestres. Conteúdo, título e fonte dos 29 dossiers coincidem com os exemplares aprovados em 26/09 e conservados no snapshot de 07/10. Não há base para atribuir a um commit recente a data exacta em que desapareceram de um endereço específico.
|
||||
|
||||
**Reposição executada:** manifesto nominal de 29 originais, SHA-256 `8d07007a2e1e8758d4741b4ac594f78d5943f71ad78b2daae7f85aefa9d2de4a`; guarda contra exemplares arquivados, editados ou com versão/hash divergentes; reposição primeiro na base QA isolada e depois na homologação, pela sessão SSH autenticada. Mantidos IDs, conteúdos, fontes, mestres e relações. Apenas estado de divulgação, fundamento anterior, versão e data da reposição foram actualizados. **29 eventos auditados**, sem atribuir uma nova aprovação ou um revisor fictício; a evidência original da Tempo é conservada. `tools/restore-approved-portfolio-visibility.php` é uma operação de recuperação delimitada, não um importador que publica automaticamente novos conteúdos e não uma tarefa editorial corrente.
|
||||
|
||||
Antes da escrita activa: backup fresco SHA-256 `7b7a3a082e1259c53c321617eb84d10b544e5a211f5f708199026c4205d1c511`; arquivo de ficheiros/configuração `0cc28141a081ce9d097735c7815b46f55d99300adf7361d936b857a24f897b86`; restauro isolado de **174 tabelas**, com **369 ficheiros** conferidos. Depois: **171 tabelas inalteradas**; diferenças somente em dossiers, auditoria e sessões. Biblioteca/documentos, 20 artigos públicos, 28 privados, geometrias e atribuições de papéis preservados. O observador do deploy foi retomado. A ponte de acesso antiga tinha processos locais concorrentes; foram encerrados os clientes desta tarefa e usada uma única ligação autenticada. Não se registaram credenciais.
|
||||
|
||||
**Conferência limitada da reposição, sem suite geral:** consulta anónima `/carteira` com 29 dossiers, projectos com 15, clusters com 8 e corredores com 6, todos HTTP 200. A antiga mensagem de carteira vazia fica superada por esta reposição. Links: [carteira](https://teste-investidor.tempo.co.mz/carteira), [projectos âncora](https://teste-investidor.tempo.co.mz/projectos-ancora), [clusters](https://teste-investidor.tempo.co.mz/clusters), [corredores](https://teste-investidor.tempo.co.mz/corredores). Recibo/inventário: [preservation-inventory-20261023.json](preservation-inventory-20261023.json); manifesto de proveniência: [approved-portfolio-visibility-20261023.json](approved-portfolio-visibility-20261023.json). Não se repetiram as provas funcionais aceites de outros módulos.
|
||||
|
||||
**Preservação nas próximas entregas:** usar este inventário e a instrução de 23/10 em `AGENTS.md` como referência anterior à alteração. Conferir o delta de código, schema, dados, configuração e permissões, explicando qualquer redução de disponibilidade. Uma reposição não apaga edições posteriores nem revoga aprovações antigas por omissão. Reversão deve preservar as novas versões e a auditoria; não substituir toda a base por um backup anterior. O conjunto parcial da matriz continua parcial no seu âmbito, sem retirar o que já foi entregue.
|
||||
|
||||
## Guia curto — entrada única de gestão
|
||||
|
||||
**Link da equipa:** https://teste-investidor.tempo.co.mz/gestao-conteudos. Entre com a conta habitual e o seu MFA. As funções e âmbitos aprovados determinam os botões apresentados; não é necessário acesso à linha de comandos.
|
||||
@@ -1020,53 +1041,53 @@ Reversão preparada em `REVERSAO-APRESENTACAO-INTEGRAL.json` e `reverse-authoriz
|
||||
|
||||
## Saldo dos 43 componentes
|
||||
|
||||
**12 disponíveis; 12 instalados mas desabilitados/por disponibilizar; 15 não demonstrados; 4 ausentes por serem incrementos QA excluídos.** “Disponível” tem o âmbito e limite indicado na linha; não certifica todos os critérios históricos do componente. Acesso aponta para o ecrã existente e não concede permissões: os acessos administrativos requerem as autorizações/MFA já existentes.
|
||||
**Saldo histórico de 19/10/2026 — não representa o estado actual.** Conservado para rastreabilidade. A coluna final reconcilia as entregas posteriores e a leitura de 23/10, sem retirar aceitações por falta de nova prova. Disponibilidade, conclusão integral e ausência de dados são estados distintos.
|
||||
|
||||
| Nº | Componente | Estado | Acesso e limitação |
|
||||
|---:|---|---|---|
|
||||
| 1 | Documentos públicos | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/documentos) · 29 fichas privadas; zero publicação adicional. Consulta pública do acervo permanece fechada. |
|
||||
| 2 | Ficha integral dos parques | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/zonas) · 16 fichas privadas/pendentes, 19 relações territoriais; publicação e gestão autorizada separadas. |
|
||||
| 3 | Navegação contextual e manifestação de interesse | Disponível | [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. |
|
||||
| 4 | Referências económicas — lote mínimo | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/investment/references) · 11 actividades presentes; cinco novas referências transportadas. Activação/publicação do lote não executada. |
|
||||
| 5 | Sectores e duplicação visual | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/sectores) · Ecrã aberto: dez sectores principais, especialização Fintech sem cartão principal duplicado; 12 registos conservados. |
|
||||
| 6 | Duplicados distintos — deteção e consolidação | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/management/sector-reconciliation) · Código presente; consolidação de registos distintos não demonstrada no destino. |
|
||||
| 7 | Fintech — enquadramento específico | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/sectores/mercado-financeiro/fintech) · Código instalado; artigo de origem permanece privado, sem publicação adicional. |
|
||||
| 8 | Legado — conteúdo restante | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/sectores) · Adaptador habilitado; artigos/imagens transportados privadamente, sem os publicar. |
|
||||
| 9 | Piloto agronegócio | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/sectores) · Originais privados; seis oportunidades sintéticas excluídas. Nenhuma oportunidade real publicada. |
|
||||
| 10 | Percurso do investidor — 19 etapas | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/investimentos) · Início e lista própria abrem; definição de 19 etapas instalada. Não repetidas as 19 etapas aceites. |
|
||||
| 11 | Fiscal/contributivo e exportações | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Formulário aberto; cenários fiscais/contributivos/exportação e parâmetros efectivos não certificados nesta execução. |
|
||||
| 12 | Negócios existentes e classificação | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/negocios) · Catálogo abre e módulo habilitado; zero negócios copiados. Gestão própria sujeita às permissões existentes. |
|
||||
| 13 | Negócios similares | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/negocios) · Código instalado; comparação com negócios reais não demonstrada. |
|
||||
| 14 | Importação de empresas/empreendimentos | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/management/negocios) · Mecanismo presente; nenhuma empresa/transacção local ou QA transferida. Operador de gestão por definir. |
|
||||
| 15 | Fundos | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Fontes instaladas; critérios específicos de fundos não demonstrados no destino. |
|
||||
| 16 | Comparador societário e modelos | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Fontes instaladas; comparação societária/modelos não demonstrados nesta execução. |
|
||||
| 17 | Capitalização/private equity e Bolsa | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Fontes instaladas; cenários específicos de capitalização/Bolsa não demonstrados no destino. |
|
||||
| 18 | Checklists versionadas | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/servicos) · Definições presentes; checklist aplicada a dossier legítimo continua por demonstrar. |
|
||||
| 19 | Indicadores de utilização | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/dashboard) · Código presente; indicadores com dados reais e permissões adequadas não demonstrados. |
|
||||
| 20 | Jornadas educativas | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/educacao) · Área abre e flag habilitada; nenhum percurso educativo completo foi repetido. |
|
||||
| 21 | Partilha documental individual e variantes de sala | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/parcerias/painel) · Estruturas de salas/partilha instaladas; participantes, consentimentos e partilha real não demonstrados. |
|
||||
| 22 | Restauro, modalidades e SLA | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/painel) · Backup/restauro coberto separadamente; modalidades/SLA não homologados. Escalonamento continua desligado como local. |
|
||||
| 23 | Cartografia e consumidores territoriais restantes | Não demonstrado | [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. |
|
||||
| 24 | Acessibilidade e restantes consumidores | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/oportunidades) · Mensagens R2 preservadas; não se declara certificação integral de acessibilidade de todos os módulos. |
|
||||
| 25 | Fechos de operação/avaliação documental | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/painel) · Sem processo operacional legítimo para demonstrar fecho/avaliação documental. |
|
||||
| 26 | Conta simples, login e MFA privilegiado | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/login) · Login e desafio MFA reais concluídos; conta simples R2 e controlos privilegiados preservados. |
|
||||
| 27 | Manifestação simples, recibo e acompanhamento do interessado — R2 | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/investidor/manifestacoes) · Recorte R2 conservado, com provas aceites reutilizadas; nenhuma manifestação fictícia criada. |
|
||||
| 28 | Pesquisa — estados do recorte R2 | Disponível | [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. |
|
||||
| 29 | Biblioteca privada própria, scanner e recuperação — DOC01 | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/management/portal-services) · Conta de custódia vê 30 ficheiros limpos. Novo original recuperado no navegador com SHA-256 igual à fonte; sem gestão global. |
|
||||
| 30 | Backup/restauro e reversão do recorte R2 + DOC01 | Disponível | Backup fresco consistente: 144 tabelas restauradas iguais, 34 ficheiros/configuração conferidos, recuperação portável e metadados Linux/PG protegidos. Reversão de apresentação preparada. |
|
||||
| 31 | Balcão Virtual | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/painel) · Painel e serviço existente abrem; dez tabelas base instaladas, definição interna project-preparation v5 transportada. |
|
||||
| 32 | Vínculo positivo e recuperação do dossier | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/investimentos) · Vínculo documental positivo pendente: zero dossiers da conta no destino. Não foram criados dados fictícios. |
|
||||
| 33 | Cadastro canónico e recursos de oportunidade | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/opportunities) · Editor/schema instalados; zero oportunidades. Gestão/revisão exigem atribuições existentes ainda não configuradas. |
|
||||
| 34 | Perfis, revisão independente e publicação | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/perfis/gestao) · Schema e fluxos presentes; zero atribuições/titulares. Nenhum papel ou privilégio concedido automaticamente. |
|
||||
| 35 | Bolsa de parcerias e salas internas | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/parcerias) · Catálogo e mapa abrem, nove tabelas de relações/salas instaladas; colaboração com participantes reais não demonstrada. |
|
||||
| 36 | Onde se localiza / associações territoriais e produtivas | Ausente | Harmonização territorial apenas QA, expressamente excluída da revisão autorizada. |
|
||||
| 37 | Lote privado Inhambane —30 fichas | Ausente | 30 fichas Inhambane apenas QA, não importadas nem publicadas no destino. |
|
||||
| 38 | Enquadramento das12 fichas de programas/carteira | Ausente | Enquadramento das 12 fichas permanece no incremento QA separado. |
|
||||
| 39 | Originais partilhados e referência documental no dossier — Inhambane | Ausente | Reutilização documental Inhambane/dossier permanece no incremento QA separado. |
|
||||
| 40 | Orientação assistida/IA | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/ai) · Código presente; integração desligada. Credencial própria do destino/chamada externa não confirmadas. |
|
||||
| 41 | Integração externa SuiteCRM | Instalado mas desabilitado | Permanece desligada como na versão local; nenhuma credencial ou envio externo copiado/executado. |
|
||||
| 42 | Operação administrativa e resposta da equipa na homologação | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/interests) · Nenhuma conta com gestão global/atribuições operacionais. Custódia documental não autoriza resposta/revisão da equipa. |
|
||||
| 43 | Gestão editorial da biblioteca | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/portal-services) · Schema editorial instalado; publicação/edição pública não concedida à conta de custódia. |
|
||||
| Nº | Componente | Estado histórico | Acesso e limitação históricos | Saldo de preservação em 23/10/2026 |
|
||||
|---:|---|---|---|---|
|
||||
| 1 | Documentos públicos | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/documentos) · 29 fichas privadas; zero publicação adicional. Consulta pública do acervo permanece fechada. | Disponível: 29 recursos públicos; recibo editorial 22/10. Os 20 artigos conservam a aceitação anterior. |
|
||||
| 2 | Ficha integral dos parques | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/zonas) · 16 fichas privadas/pendentes, 19 relações territoriais; publicação e gestão autorizada separadas. | Disponibilizado localmente em 18/10; destino conserva 16 fichas, 8 publicadas. Recorte integral não é reaprovado por este inventário. |
|
||||
| 3 | Navegação contextual e manifestação de interesse | Disponível | [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. | Navegação/percurso preservados; carteira reposta em 23/10: 29 dossiers, incluindo 15 projectos âncora. |
|
||||
| 4 | Referências económicas — lote mínimo | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/investment/references) · 11 actividades presentes; cinco novas referências transportadas. Activação/publicação do lote não executada. | Código e referências presentes; manter o âmbito da autorização anterior, sem inferir publicação de todas as opções. |
|
||||
| 5 | Sectores e duplicação visual | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/sectores) · Ecrã aberto: dez sectores principais, especialização Fintech sem cartão principal duplicado; 12 registos conservados. | Entrega de 18/10 conservada no código/histórico; sem remoção constatada nesta leitura. |
|
||||
| 6 | Duplicados distintos — deteção e consolidação | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/management/sector-reconciliation) · Código presente; consolidação de registos distintos não demonstrada no destino. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 7 | Fintech — enquadramento específico | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/sectores/mercado-financeiro/fintech) · Código instalado; artigo de origem permanece privado, sem publicação adicional. | Fintech público no lote aceite; especialização preservada. Não reabrir a organização sectorial aprovada. |
|
||||
| 8 | Legado — conteúdo restante | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/sectores) · Adaptador habilitado; artigos/imagens transportados privadamente, sem os publicar. | 20 artigos públicos e 28 privados cadastrados no destino; dois originais incompletos. Recibo 37a8eb01. |
|
||||
| 9 | Piloto agronegócio | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/sectores) · Originais privados; seis oportunidades sintéticas excluídas. Nenhuma oportunidade real publicada. | Piloto Agronegócio concluído: artigo e imagem preservados; não é uma oportunidade empresarial concreta. |
|
||||
| 10 | Percurso do investidor — 19 etapas | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/investimentos) · Início e lista própria abrem; definição de 19 etapas instalada. Não repetidas as 19 etapas aceites. | Percurso e preparação privada habilitados no destino; entrega adaptativa de 22/10. Zero dossiers pessoais não é perda de função. |
|
||||
| 11 | Fiscal/contributivo e exportações | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Formulário aberto; cenários fiscais/contributivos/exportação e parâmetros efectivos não certificados nesta execução. | Tesouraria/exportações e consumidor IVA têm entregas delimitadas em 21–22/10; restantes variantes não promovidas a concluídas. |
|
||||
| 12 | Negócios existentes e classificação | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/negocios) · Catálogo abre e módulo habilitado; zero negócios copiados. Gestão própria sujeita às permissões existentes. | Módulo habilitado e fluxos conservados. Ausência de anúncios não demonstra desaparecimento de código. |
|
||||
| 13 | Negócios similares | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/negocios) · Código instalado; comparação com negócios reais não demonstrada. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 14 | Importação de empresas/empreendimentos | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/management/negocios) · Mecanismo presente; nenhuma empresa/transacção local ou QA transferida. Operador de gestão por definir. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 15 | Fundos | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Fontes instaladas; critérios específicos de fundos não demonstrados no destino. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 16 | Comparador societário e modelos | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Fontes instaladas; comparação societária/modelos não demonstrados nesta execução. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 17 | Capitalização/private equity e Bolsa | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/simulador-fiscal) · Fontes instaladas; cenários específicos de capitalização/Bolsa não demonstrados no destino. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 18 | Checklists versionadas | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/servicos) · Definições presentes; checklist aplicada a dossier legítimo continua por demonstrar. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 19 | Indicadores de utilização | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/dashboard) · Código presente; indicadores com dados reais e permissões adequadas não demonstrados. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 20 | Jornadas educativas | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/educacao) · Área abre e flag habilitada; nenhum percurso educativo completo foi repetido. | Jornadas habilitadas; cartões educativos disponibilizados. Mantido o âmbito parcial da educação. |
|
||||
| 21 | Partilha documental individual e variantes de sala | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/parcerias/painel) · Estruturas de salas/partilha instaladas; participantes, consentimentos e partilha real não demonstrados. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 22 | Restauro, modalidades e SLA | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/painel) · Backup/restauro coberto separadamente; modalidades/SLA não homologados. Escalonamento continua desligado como local. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 23 | Cartografia e consumidores territoriais restantes | Não demonstrado | [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. | Demarcação reposta: 408 geometrias. Polígonos de localidades e correspondências já pendentes não são nova regressão. |
|
||||
| 24 | Acessibilidade e restantes consumidores | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/oportunidades) · Mensagens R2 preservadas; não se declara certificação integral de acessibilidade de todos os módulos. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 25 | Fechos de operação/avaliação documental | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/painel) · Sem processo operacional legítimo para demonstrar fecho/avaliação documental. | Sem desaparecimento demonstrado; conserva o âmbito parcial/não demonstrado anterior, sem promover conclusão nem reabrir provas aceites. |
|
||||
| 26 | Conta simples, login e MFA privilegiado | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/login) · Login e desafio MFA reais concluídos; conta simples R2 e controlos privilegiados preservados. | Login/MFA e designações reais documentados; sem alteração de papéis nesta passagem. |
|
||||
| 27 | Manifestação simples, recibo e acompanhamento do interessado — R2 | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/investidor/manifestacoes) · Recorte R2 conservado, com provas aceites reutilizadas; nenhuma manifestação fictícia criada. | R2 e percursos posteriores conservados; reutilizar as provas aceites. |
|
||||
| 28 | Pesquisa — estados do recorte R2 | Disponível | [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. | Pesquisa e selectores corrigidos em 22/10; a carteira vazia é tratada como perda separada. |
|
||||
| 29 | Biblioteca privada própria, scanner e recuperação — DOC01 | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/management/portal-services) · Conta de custódia vê 30 ficheiros limpos. Novo original recuperado no navegador com SHA-256 igual à fonte; sem gestão global. | Biblioteca, scan e recuperação disponíveis: 59 recursos, 29 públicos e 30 privados. |
|
||||
| 30 | Backup/restauro e reversão do recorte R2 + DOC01 | Disponível | Backup fresco consistente: 144 tabelas restauradas iguais, 34 ficheiros/configuração conferidos, recuperação portável e metadados Linux/PG protegidos. Reversão de apresentação preparada. | Backup/restauro 22/10 documentado: 174 tabelas. Reposição activa terá backup próprio antes da escrita. |
|
||||
| 31 | Balcão Virtual | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/balcao-virtual/painel) · Painel e serviço existente abrem; dez tabelas base instaladas, definição interna project-preparation v5 transportada. | Balcão e definições instalados; zero casos reais no destino não é perda de funcionalidade. |
|
||||
| 32 | Vínculo positivo e recuperação do dossier | Não demonstrado | [Abrir](https://teste-investidor.tempo.co.mz/investimentos) · Vínculo documental positivo pendente: zero dossiers da conta no destino. Não foram criados dados fictícios. | Recuperação de contexto demonstrada em QA nas entregas posteriores; ausência de caso real não reabre a prova aceite. |
|
||||
| 33 | Cadastro canónico e recursos de oportunidade | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/opportunities) · Editor/schema instalados; zero oportunidades. Gestão/revisão exigem atribuições existentes ainda não configuradas. | Cadastro e recursos disponibilizados; 30 oportunidades com resumos em preparação publicados. |
|
||||
| 34 | Perfis, revisão independente e publicação | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/perfis/gestao) · Schema e fluxos presentes; zero atribuições/titulares. Nenhum papel ou privilégio concedido automaticamente. | Perfis e atribuições existentes preservados; inventário não cria decisão organizacional nova. |
|
||||
| 35 | Bolsa de parcerias e salas internas | Disponível | [Abrir](https://teste-investidor.tempo.co.mz/parcerias) · Catálogo e mapa abrem, nove tabelas de relações/salas instaladas; colaboração com participantes reais não demonstrada. | Bolsa e percursos existentes preservados; variantes com participantes reais mantêm saldo próprio. |
|
||||
| 36 | Onde se localiza / associações territoriais e produtivas | Ausente | Harmonização territorial apenas QA, expressamente excluída da revisão autorizada. | Estado Ausente superado: integração territorial entregue em 20–22/10; catálogos e 408 limites conservados. |
|
||||
| 37 | Lote privado Inhambane —30 fichas | Ausente | 30 fichas Inhambane apenas QA, não importadas nem publicadas no destino. | Estado Ausente superado: 30 fichas Inhambane transportadas e resumos divulgados em 22/10. |
|
||||
| 38 | Enquadramento das12 fichas de programas/carteira | Ausente | Enquadramento das 12 fichas permanece no incremento QA separado. | Estado Ausente superado: enquadramento de 11 programas e uma carteira incluído na entrega posterior. |
|
||||
| 39 | Originais partilhados e referência documental no dossier — Inhambane | Ausente | Reutilização documental Inhambane/dossier permanece no incremento QA separado. | Estado Ausente superado: originais privados/referências e contexto incluídos na entrega posterior; não reimportar. |
|
||||
| 40 | Orientação assistida/IA | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/ai) · Código presente; integração desligada. Credencial própria do destino/chamada externa não confirmadas. | Sem regressão demonstrada: integração externa não fechada; não inventar credencial nem activar fornecedor. |
|
||||
| 41 | Integração externa SuiteCRM | Instalado mas desabilitado | Permanece desligada como na versão local; nenhuma credencial ou envio externo copiado/executado. | Desabilitada também no local por opção anterior; não desapareceu por efeito da entrega editorial. |
|
||||
| 42 | Operação administrativa e resposta da equipa na homologação | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/interests) · Nenhuma conta com gestão global/atribuições operacionais. Custódia documental não autoriza resposta/revisão da equipa. | Estado antigo superado: conta real e gestão autorizada demonstradas nas entregas posteriores. Sem novos papéis. |
|
||||
| 43 | Gestão editorial da biblioteca | Instalado mas desabilitado | [Abrir](https://teste-investidor.tempo.co.mz/management/portal-services) · Schema editorial instalado; publicação/edição pública não concedida à conta de custódia. | Gestão autónoma entregue; edição, prévia, gravação e recuperação dos 28 privados demonstradas no destino. |
|
||||
|
||||
## Operação corrente e pendências
|
||||
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
// Delimited recovery requested by Tempo, 23/10/2026. Never import or approve new/edited dossiers.
|
||||
declare(strict_types=1);
|
||||
|
||||
ini_set('zend.exception_ignore_args', '1');
|
||||
require getcwd().'/vendor/autoload.php';
|
||||
$app = require getcwd().'/bootstrap/app.php';
|
||||
(new Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables)->bootstrap($app);
|
||||
(new Illuminate\Foundation\Bootstrap\LoadConfiguration)->bootstrap($app);
|
||||
$args = getopt('', ['manifest:', 'output:', 'apply', 'preview-sha256:', 'backup:', 'qa']);
|
||||
$manifestPath = $args['manifest'] ?? '';
|
||||
$manifestHash = '8d07007a2e1e8758d4741b4ac594f78d5943f71ad78b2daae7f85aefa9d2de4a';
|
||||
if (!is_file($manifestPath) || !hash_equals($manifestHash, hash_file('sha256', $manifestPath))) {
|
||||
throw new RuntimeException('Exact reviewed 29-original recovery manifest required.');
|
||||
}
|
||||
$manifest = json_decode(file_get_contents($manifestPath), true, 512, JSON_THROW_ON_ERROR);
|
||||
if (count($manifest['items']) !== 29 || count(array_unique(array_column($manifest['items'], 'target_record_id'))) !== 29) {
|
||||
throw new RuntimeException('Exact original scope required.');
|
||||
}
|
||||
$qa = isset($args['qa']);
|
||||
$c = config('database.connections.'.config('database.default'));
|
||||
$expected = $qa ? 'simulator_fiscal_delta_20261021_test' : 'teste_investidor';
|
||||
$port = $qa ? 55441 : 5432;
|
||||
if ($c['driver'] !== 'pgsql' || !empty($c['url']) || !in_array($c['host'], ['127.0.0.1', 'localhost'], true) || $c['database'] !== $expected || (int)$c['port'] !== $port) {
|
||||
throw new RuntimeException('Named target mismatch.');
|
||||
}
|
||||
if (!$qa && (!getenv('SSH_CONNECTION') || !function_exists('posix_geteuid') || posix_geteuid() !== 0 || rtrim(config('app.url'), '/') !== 'https://teste-investidor.tempo.co.mz')) {
|
||||
throw new RuntimeException('Authenticated destination operator required.');
|
||||
}
|
||||
$output = $args['output'] ?? '';
|
||||
if (!$output || str_contains(str_replace('\\', '/', $output), '/public/')) {
|
||||
throw new RuntimeException('Private receipt path required.');
|
||||
}
|
||||
$pdo = new PDO('pgsql:host='.$c['host'].';port='.$c['port'].';dbname='.$expected, $c['username'], $c['password'], [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
|
||||
$apply = isset($args['apply']);
|
||||
$pdo->exec($apply ? 'BEGIN ISOLATION LEVEL SERIALIZABLE' : 'BEGIN ISOLATION LEVEL REPEATABLE READ READ ONLY');
|
||||
try {
|
||||
$actual = $pdo->query('select current_database() as name,inet_server_port() as port')->fetch(PDO::FETCH_ASSOC);
|
||||
if ($actual['name'] !== $expected || (int)$actual['port'] !== $port) throw new RuntimeException('Actual target mismatch.');
|
||||
if ($apply) $pdo->query('select pg_advisory_xact_lock(231026,29)');
|
||||
$plan = [];
|
||||
$before = [];
|
||||
foreach ($manifest['items'] as $item) {
|
||||
$query = $pdo->prepare('select * from investment_dossiers where id = ?'.($apply ? ' for update' : ''));
|
||||
$query->execute([$item['target_record_id']]);
|
||||
$row = $query->fetch(PDO::FETCH_ASSOC);
|
||||
if (!$row || $row['deleted_at'] !== null || $row['title'] !== $item['title'] || !hash_equals($item['content_sha256'], hash('sha256', $row['content'])) || !hash_equals($item['source_sha256'], hash('sha256', $row['source']))) {
|
||||
throw new RuntimeException('Missing, archived or changed original: '.$item['code']);
|
||||
}
|
||||
if (!hash_equals($item['approval_sha256'], hash('sha256', $item['approval_evidence']))) throw new RuntimeException('Approval provenance changed.');
|
||||
$replayed = $pdo->prepare("select count(*) from audit_events where source_system='portfolio-visibility-recovery-v1' and external_id=? and entity_id=? and action='approved_visibility_restored'");
|
||||
$replayed->execute([$manifestHash.':'.$row['id'], $row['id']]);
|
||||
$already = (int)$replayed->fetchColumn() === 1;
|
||||
if ($already) {
|
||||
if ($row['publication_status'] !== 'published' || $row['approval_basis'] !== 'document_owner' || $row['approval_evidence'] !== $item['approval_evidence']) throw new RuntimeException('Recovery subsequently changed: '.$item['code']);
|
||||
} elseif ($row['publication_status'] !== 'draft' || $row['editor_id'] !== null || $row['reviewer_id'] !== null || (int)$row['version_no'] !== (int)$item['expected_target_version']) {
|
||||
throw new RuntimeException('Preserve subsequent editorial decisions: '.$item['code']);
|
||||
}
|
||||
$before[] = $row;
|
||||
$plan[] = ['id' => $row['id'], 'code' => $item['code'], 'version' => (int)$row['version_no'], 'status' => $row['publication_status'], 'content_sha256' => $item['content_sha256'], 'source_sha256' => $item['source_sha256'], 'already_restored' => $already];
|
||||
}
|
||||
$previewHash = hash('sha256', json_encode([$expected, $manifestHash, $plan], JSON_THROW_ON_ERROR));
|
||||
if ($apply) {
|
||||
if (!hash_equals($previewHash, $args['preview-sha256'] ?? '')) throw new RuntimeException('Preview changed; recover current state before writing.');
|
||||
if (!$qa) {
|
||||
$directory = $args['backup'] ?? '';
|
||||
$backup = json_decode(file_get_contents($directory.'/backup-receipt.json'), true, 512, JSON_THROW_ON_ERROR);
|
||||
$restore = json_decode(file_get_contents($directory.'/restore-receipt.json'), true, 512, JSON_THROW_ON_ERROR);
|
||||
if (!$restore['restore_verified'] || $backup['target']['database'] !== $expected || (int)$backup['target']['port'] !== $port || !hash_equals($backup['sha256'], $restore['source_dump_sha256'])) throw new RuntimeException('Verified matching backup/restore required.');
|
||||
}
|
||||
$snapshot = $output.'.before.json';
|
||||
if (is_file($snapshot)) throw new RuntimeException('Preserve earlier recovery snapshot; use a new receipt path.');
|
||||
file_put_contents($snapshot, json_encode(['database' => $expected, 'rows' => $before], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR));
|
||||
if (!$qa) chmod($snapshot, 0600);
|
||||
foreach ($plan as $index => $entry) {
|
||||
if ($entry['already_restored']) continue;
|
||||
$item = $manifest['items'][$index];
|
||||
$update = $pdo->prepare("update investment_dossiers set publication_status='published',approval_basis='document_owner',approval_evidence=?,published_at=now(),version_no=version_no+1,updated_at=now() where id=? and version_no=?");
|
||||
$update->execute([$item['approval_evidence'], $entry['id'], $entry['version']]);
|
||||
if ($update->rowCount() !== 1) throw new RuntimeException('Concurrent change.');
|
||||
$event = $pdo->prepare("insert into audit_events(source_system,external_id,entity_type,entity_id,actor_user_id,action,before_data,after_data) values('portfolio-visibility-recovery-v1',?,'investment_dossiers',?,NULL,'approved_visibility_restored',?,?)");
|
||||
$event->execute([$manifestHash.':'.$entry['id'], $entry['id'], json_encode(['version_no' => $entry['version'], 'publication_status' => 'draft', 'approval_basis' => $before[$index]['approval_basis']], JSON_THROW_ON_ERROR), json_encode(['code' => $item['code'], 'version_no' => $entry['version']+1, 'publication_status' => 'published', 'approval_basis' => 'document_owner', 'approval_sha256' => $item['approval_sha256'], 'content_sha256' => $item['content_sha256'], 'source_record_id' => $item['source_record_id'], 'source_published_at' => $item['original_published_at'], 'instruction' => 'Tempo 23/10/2026: preserve and restore completed approved functionality', 'authenticated_transport' => $qa ? 'isolated-QA' : 'SSH', 'not_a_new_editorial_approval' => true], JSON_THROW_ON_ERROR)]);
|
||||
}
|
||||
}
|
||||
$visible = (int)$pdo->query("select count(*) from investment_dossiers d where publication_status='published' and (exists(select 1 from projects p where p.id=d.project_id and p.deleted_at is null) or exists(select 1 from economic_clusters c where c.id=d.cluster_id and c.deleted_at is null) or exists(select 1 from development_corridors r where r.id=d.corridor_id and r.deleted_at is null))")->fetchColumn();
|
||||
$result = ['database' => $actual, 'qa' => $qa, 'mode' => $apply ? 'applied' : 'preview', 'manifest_sha256' => $manifestHash, 'preview_sha256' => $previewHash, 'scope' => count($plan), 'restored' => $apply ? count(array_filter($plan, fn($r) => !$r['already_restored'])) : 0, 'visible' => $visible, 'data_content_changed' => false, 'new_dossiers_imported' => 0, 'fake_editor_or_reviewer_assigned' => false, 'plan' => $plan];
|
||||
if ($apply) $pdo->commit(); else $pdo->rollBack();
|
||||
file_put_contents($output, json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR));
|
||||
if (!$qa) chmod($output, 0600);
|
||||
unset($result['plan']);
|
||||
echo json_encode($result, JSON_THROW_ON_ERROR);
|
||||
} catch (Throwable $error) {
|
||||
if ($pdo->inTransaction()) $pdo->rollBack();
|
||||
throw $error;
|
||||
}
|
||||
Reference in New Issue
Block a user