Compare commits

..
3 changed files with 185 additions and 8 deletions
@@ -1839,5 +1839,167 @@
"remote_main_read": "57fc914821d0cefa02caa80a74b3d42e663f2742",
"main_integrated": false,
"fiscal_rules_changed": false
},
"adaptive_private_path_homologation_20261022": {
"authorized_by": "Tempo, user authorization 22/10/2026",
"previous_main": "57fc914821d0cefa02caa80a74b3d42e663f2742",
"authorized_ancestry": [
"a76369eb",
"52fbb146",
"a1fbda06",
"064296e1"
],
"integration": "fast-forward, no conflicts or concurrent commits observed at push; no forced update",
"first_attempt": {
"status": "failed",
"commit": "064296e1fbf7b17f932df23c7b3ee5508719dec5",
"error": "Verification command failed: node (see protected build log)",
"active_release_preserved": true,
"requested_commits": [
"064296e1fbf7b17f932df23c7b3ee5508719dec5"
],
"finished_at": "2026-10-22T08:11:54.420414+00:00"
},
"compatibility_fix": {
"commit": "042ffbde44cac27704d6f8b7ec25b525a42e3575",
"cause": "Empty inheritance metadata appended when restoring a legacy draft with no compatible source",
"change": "Return original draft when both compatible source and prior inheritance metadata are absent",
"targeted_tests": "9 inheritance controls + exact failing legacy partition/recovery test, all passed"
},
"installed": {
"status": "installed",
"commit": "042ffbde44cac27704d6f8b7ec25b525a42e3575",
"release": "/var/www/investmoz-homologacao/releases/042ffbde44cac27704d6f8b7ec25b525a42e3575-6dfae60c",
"previous_release": "/var/www/investmoz-homologacao/releases/57fc914821d0cefa02caa80a74b3d42e663f2742-f563f9a7",
"database_migrations": 0,
"content_imports": 0,
"requested_commits": [
"042ffbde44cac27704d6f8b7ec25b525a42e3575"
],
"finished_at": "2026-10-22T08:16:16.903501+00:00"
},
"http": {
"/build/revision.json": {
"status": 200,
"body": {
"commit": "042ffbde44cac27704d6f8b7ec25b525a42e3575",
"branch": "main",
"built_at": "2026-10-22T08:16:14.331119+00:00",
"manifest_sha256": "655eef6e6a5e71c5138c68465a5b2ffc36d2cadeff96e6b35682dbfd19d42e79"
}
},
"/api/v1/fiscal-consumer": {
"status": 200,
"body": {
"data": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
}
}
},
"/investimentos": {
"status": 302,
"location": "https://teste-investidor.tempo.co.mz/login"
},
"/simulador-fiscal": {
"status": 200,
"body": "HTML available"
},
"checked_utc": "2026-10-22T08:17:20.250804+00:00"
},
"configuration_before": {
"read_only": true,
"utc": "2026-10-22T08:16:34.265947+00:00",
"revision": {
"commit": "042ffbde44cac27704d6f8b7ec25b525a42e3575",
"branch": "main",
"built_at": "2026-10-22T08:16:14.331119+00:00",
"manifest_sha256": "655eef6e6a5e71c5138c68465a5b2ffc36d2cadeff96e6b35682dbfd19d42e79"
},
"live": "/var/www/investmoz-homologacao/releases/042ffbde44cac27704d6f8b7ec25b525a42e3575-6dfae60c",
"env_path": "/var/www/html/teste-investidor.tempo.co.mz/.env",
"env_sha256": "7cdaba591bb5787485a349c24db2fd7c8279436da0eb31502e44db2fffa21d03",
"env_mode": "0o640",
"uid": 1001,
"gid": 33,
"private_preparation_env": "unset",
"config": {
"private_preparation": false,
"investor_path": true,
"fiscal_consumer": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
},
"preparation_version": "private-investment-preparation-2026-v1"
}
},
"configuration_enable": {
"utc": "2026-10-22T08:16:49.343216+00:00",
"revision": {
"commit": "042ffbde44cac27704d6f8b7ec25b525a42e3575",
"branch": "main",
"built_at": "2026-10-22T08:16:14.331119+00:00",
"manifest_sha256": "655eef6e6a5e71c5138c68465a5b2ffc36d2cadeff96e6b35682dbfd19d42e79"
},
"changed": true,
"env_before_sha256": "7cdaba591bb5787485a349c24db2fd7c8279436da0eb31502e44db2fffa21d03",
"env_after_sha256": "a6b4e9064cf6dbb2d945b53418a6c9252f9c736ff3fde4016b95b74885a9ee0f",
"backup": "/var/lib/investmoz-deploy/backups/private-preparation-20261022/env-7cdaba591bb5787485a349c24db2fd7c8279436da0eb31502e44db2fffa21d03.private",
"backup_bytes_verified": true,
"only_key_changed": "PRIVATE_INVESTMENT_PREPARATION_ENABLED",
"mode_preserved": true,
"owner_preserved": true,
"config": {
"private_preparation": true,
"investor_path": true,
"fiscal_consumer": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
},
"preparation_version": "private-investment-preparation-2026-v1"
},
"fiscal_configuration_changed": false,
"database_operations": false,
"recovery": "Restore previous key value only against recorded post-change hash, rebuild config cache; preserve subsequent changes and all data"
},
"configuration_after": {
"read_only": true,
"utc": "2026-10-22T08:17:21.883131+00:00",
"revision": {
"commit": "042ffbde44cac27704d6f8b7ec25b525a42e3575",
"branch": "main",
"built_at": "2026-10-22T08:16:14.331119+00:00",
"manifest_sha256": "655eef6e6a5e71c5138c68465a5b2ffc36d2cadeff96e6b35682dbfd19d42e79"
},
"live": "/var/www/investmoz-homologacao/releases/042ffbde44cac27704d6f8b7ec25b525a42e3575-6dfae60c",
"env_path": "/var/www/html/teste-investidor.tempo.co.mz/.env",
"env_sha256": "a6b4e9064cf6dbb2d945b53418a6c9252f9c736ff3fde4016b95b74885a9ee0f",
"env_mode": "0o640",
"uid": 1001,
"gid": 33,
"private_preparation_env": "true",
"config": {
"private_preparation": true,
"investor_path": true,
"fiscal_consumer": {
"enabled": true,
"coverage_start": "2026-01-01",
"coverage_end": "2026-12-31",
"message": "IVA geral sobre base líquida disponível; enquadramento declarado."
},
"preparation_version": "private-investment-preparation-2026-v1"
}
},
"effective_procedural_version": "private-investment-preparation-2026-v1",
"new_fiscal_rules_published_or_activated": false,
"qa_fixtures_copied": false,
"accepted_scenarios_repeated_manually": false,
"limitations": "No new scenario executed in homologation and no real dossier or personal data created. QA functional evidence reused; destination verification limited to revision, configuration and entry routes. Sector/fiscal exclusions remain explicit."
}
}
@@ -2136,3 +2136,18 @@ Procedimento: após a decisão, recuperar o main actual, rever a comparação e
A Tempo autorizou a implementação após o fecho do recorte. Main remoto foi actualizado por avanço directo de `57fc9148` para `064296e1`, preservando a sequência `a76369eb → 52fbb146 → a1fbda06 → 064296e1`; não havia alteração concorrente ou conflito no momento do envio. A cadeia automática recusou a primeira tentativa no teste frontend «server draft snapshots split private identity from economic values»: 188/189 passaram. A versão servida anterior `57fc9148` foi conservada, conforme o mecanismo de recuperação; não se contornou a verificação.
Causa concreta: o adaptador de continuidade acrescentava `compatible_fields_snapshot` vazio na recuperação de um rascunho legado sem nenhuma origem compatível. Correcção delimitada na branch `codex/adaptive-delivery-compatibility-QA`: devolver o rascunho original quando não há origem compatível nem metadados de herança anteriores. A herança com origem/metadados continua executada, preservando edições e limites por dossier. Nove controlos dirigidos da herança e o teste exacto da partição/recuperação passaram; não se reabriram os cálculos, relatórios ou cenários aceites. A correcção deve seguir o mesmo processo automático; não altera regras fiscais, esquema ou dados activos. Recibos da tentativa e da disponibilização final em `outputs/investmoz-adaptive-path-delivery-20261022`.
### Percurso adaptativo disponibilizado na homologação — 22/10/2026, 10:17 Maputo
Autorização expressa da Tempo executada. Main passou de `57fc9148` por avanço directo para `064296e1`, conservando a ancestralidade `a76369eb → 52fbb146 → a1fbda06 → 064296e1`. O remoto não tinha alterações concorrentes adicionais no momento da integração; não houve conflito, reset ou envio forçado. A primeira verificação automática recusou o novo metadado vazio na recuperação legada e conservou a release anterior; a causa e a correcção dirigida constam da secção anterior. A correcção `042ffbde44cac27704d6f8b7ec25b525a42e3575` foi ensaiada em branch e integrada por avanço directo, sem suprimir o teste que detectou a incompatibilidade.
**Revisão efectivamente servida:** `042ffbde44cac27704d6f8b7ec25b525a42e3575`, branch main, build de 22/10/2026 às 10:16:14 Maputo; instalação automática concluída às 10:16:16. Manifesto SHA256 `655eef6e6a5e71c5138c68465a5b2ffc36d2cadeff96e6b35682dbfd19d42e79`. Conferida em `https://teste-investidor.tempo.co.mz/build/revision.json` e no recibo protegido da cadeia. A cadeia correu as verificações próprias; manualmente só foram repetidos os dez controlos afectados pela incompatibilidade. Zero migrations e zero importações no destino, sem copiar fixtures QA.
**Funcionalidade utilizável:** `https://teste-investidor.tempo.co.mz/investimentos` (login normal); abrir ou criar o dossier legítimo do investimento e usar «Preparar o pedido de investimento privado» / «Comparar e alterar contexto». Estão disponíveis as perguntas condicionais, fundamentos, comparação antes de confirmação, requisitos/documentos e próximos passos do lote `private-investment-preparation-2026-v1`, com os limites de 2026 já documentados. A conferência do destino limitou-se à revisão, configuração efectiva e entradas: investimentos redirecciona ao login (302), simulador responde 200. Não se criaram dossiers/contas reais ou sintéticas no destino nem se repetiram os cenários funcionais QA aceites.
**Habilitação concreta, distinta de fiscalidade:** a configuração do percurso `PRIVATE_INVESTMENT_PREPARATION_ENABLED` estava ausente/false; passou a true mediante a sessão SSH habitual autenticada pelo utilizador. Antes da escrita foram conferidos revisão servida e hash da configuração; cópia protegida dos bytes anteriores verificada, alteração limitada a essa chave, proprietário e modo0640 preservados, cache de configuração reconstruída e workers notificados de reinício gracioso. Hash .env anterior `7cdaba591bb5787485a349c24db2fd7c8279436da0eb31502e44db2fffa21d03`; posterior `a6b4e9064cf6dbb2d945b53418a6c9252f9c736ff3fde4016b95b74885a9ee0f`. A leitura posterior confirmou `investor-path.enabled=true` e `private_preparation=true`. A cópia de recuperação permanece privada em `/var/lib/investmoz-deploy/backups/private-preparation-20261022/`; não contém uma publicação de parâmetros e não segue para Git.
**Estado fiscal preservado:** nenhuma publicação/activação de nova regra e nenhuma operação na base activa. O consumidor IVA geral previamente autorizado manteve a mesma disponibilidade, cobertura2026 e mensagem antes/depois. As exclusões sectoriais, forma indirecta/dimensão monetária não determinada, benefícios territoriais e apuramento fiscal completo continuam explícitos e não bloqueiam o lote procedimental concluído.
**Suspensão/recuperação:** desligar somente a chave do novo percurso e reconstruir cache/reiniciar graciosamente os workers mantém dossiers, documentos, respostas, versões, relatórios e históricos. Para reverter configuração, usar o valor anterior apenas depois de conferir o hash actual e preservar alterações posteriores; não substituir todo o .env sem conferir concorrência. A reversão de código/build segue o procedimento de releases já existente, sem restaurar dados antigos. A release anterior foi efectivamente conservada na primeira tentativa recusada. Recibo completo local em `outputs/investmoz-adaptive-path-delivery-20261022/delivery-receipt.json`; a presente actualização documental fica na branch de registo, sem novo push main ou nova disponibilização desnecessária.
File diff suppressed because one or more lines are too long