From 4f72751b8bd423c0240d776331d7561d2dcd154a Mon Sep 17 00:00:00 2001 From: nala Date: Thu, 29 Oct 2026 22:31:49 +0200 Subject: [PATCH] docs: record authenticated preservation and installer reconciliation --- .../consolidated-review-matrix-2026-10-03.md | 12 + .../local-validation-20261029.json | 270 +++++++++++++++++- .../unification/traceability-and-manual.md | 12 + 3 files changed, 284 insertions(+), 10 deletions(-) diff --git a/docs/investmoz/consolidated-review-matrix-2026-10-03.md b/docs/investmoz/consolidated-review-matrix-2026-10-03.md index e26b752b..dd723f84 100644 --- a/docs/investmoz/consolidated-review-matrix-2026-10-03.md +++ b/docs/investmoz/consolidated-review-matrix-2026-10-03.md @@ -2089,3 +2089,15 @@ Branch enviada e SHA remoto conferido: `codex/investemoz-reconciliation-20261029 **Instalação: pendente conforme a sequência pedida.** O ficheiro antigo de sessão SSH indicava connected_ready, mas o respectivo processo já não está operativo; a tentativa não interactiva com chave de host fixada foi recusada. A revisão instalada, capacidade actual e novo backup/restauro ainda não foram confirmados nesta entrega. Após o registo visual: sessão autenticada, alvo/capacidade/contrato/delta actuais, backup consistente e restauro isolado, avanço normal de main e pipeline existente, preservação da release anterior e verificação final de revisão/hashes/C132/dados/ficheiros/permissões. Sem migrações, importações ou alterações de permissões solicitadas no activo. Detalhes, cinco hashes e proposta: campo `git_delivery` do recibo existente `local-validation-20261029.json`. Este registo actualiza o estado de entrega; os resultados e recibos históricos da validação mantêm o seu contexto temporal. + +### 29/10/2026 — preparação autenticada: preservação e contrato concluídos, visual pendente + +Sessão SSH reaberta e autenticada pelo utilizador no terminal. Conferência actual do destino: release `fde7343894964043fa633e3d4d07385a6cb7e039`, symlink correcto, pipeline inactivo e C132 positivo. Cerca de 67 GiB livres e 51 GiB de memória disponível no ensaio, 12 CPUs lógicas; mantida a verificação existente de 5 GiB do instalador. + +Backup fresco consistente de `teste_investidor:5432`, criado em 29/10/2026 às 22:25:27 (Africa/Johannesburg), em `/var/backups/investmoz-validated-delivery-20261029T202505Z/backup`: 200 tabelas de schemas não sistémicos e 369 ficheiros/configurações verificados. Restauro isolado sem rede, porta interna55441: contagens e checksums iguais nas 200 tabelas; contentor temporário removido. O inventário de 200 inclui os outros schemas além das 176 tabelas públicas dos recibos anteriores; não indica perda nem invalida essas provas. Hash do dump: `89739eb0ac022b90423ab30194d4fcc7a81a1fffc97af260a43f9e902f3f1ea9`. + +**Contrato reconciliado no servidor:** alterados apenas os cinco hashes revistos, após confirmar que as cinco migrações já estão no ledger e que a cópia anterior coincide com o instalado. Corpos de operações equivalentes; nenhuma migração repetida e nenhum SQL de alteração na base activa. Pipeline byte a byte preservado, incluindo a comparação estrita do contrato. Contrato anterior conservado no backup; recibo auditável em `schema-contract-reconciliation.json` na pasta superior. C132 voltou a passar após a reconciliação. + +**IVA herdado conferido contra o instalado:** os quatro ficheiros de runtime instalados coincidem por SHA-256 com `main` e ainda não contêm o incremento `d1551dab`. O âmbito de entrega é a correspondência 05/06/07, pertença exclusiva das operações, contagem única no campo14 e reutilização actual dos campos01/02. Não cria tratamento positivo06, não infere estrangeiro=06 nem transforma desconhecido em zero. Provas IVA/P001 aceites reutilizadas, com preservação de histórico, snapshots e edições deliberadas. + +**Continua pendente a conferência visual dirigida da candidata**, pela equipa, com registo nesta matriz. O conector permanece sem browser acessível. Não houve avanço de main, troca de release, importações ou alteração de permissões. Após o resultado visual, reconferir que o destino e a base de preservação continuam actuais antes do avanço normal e do pipeline existente; preservar quaisquer alterações legítimas entretanto ocorridas. As provas automáticas de 798 testes PHP e1190 frontend mantêm-se aceites, sem repetição integral. Detalhes no campo `git_delivery.authenticated_preparation` do recibo existente. diff --git a/docs/investmoz/unification/local-validation-20261029.json b/docs/investmoz/unification/local-validation-20261029.json index 952882a0..2c32a790 100644 --- a/docs/investmoz/unification/local-validation-20261029.json +++ b/docs/investmoz/unification/local-validation-20261029.json @@ -3,7 +3,7 @@ "repository": "InvesteMoz / portal-investidor", "base_commit": "63147312e2fdb6dc235bcb2763f47d8b1aeeac3c", "branch": "codex/investemoz-reconciliation-20261029", - "status": "automated_validation_passed_visual_validation_pending", + "status": "git_delivered_preservation_and_contract_ready_visual_pending", "validated_source": { "manifest": "outputs/validation-20261029/validated-source-manifest.json", "sha256": "1291c22692f90f9baaa85e5f252d5db2301dccb83d6d887fa76a0efae1618ba1", @@ -531,6 +531,26 @@ { "path": "outputs/validation-20261029/editorial-originals-recovery.json", "sha256": "9f9998a06fee6cde241cca54f5a8060283934328721249a5ad00bcddefa50b9c" + }, + { + "path": "outputs/validation-20261029/delivery-preflight-result.json", + "sha256": "cea393e575b2ede50833fda0845885eb0abae866149641e3bbe61bd327b89183" + }, + { + "path": "outputs/validation-20261029/delivery-backup-result.json", + "sha256": "6a743f5cc301520ee7482552121b5ef91cc94690b46e8ba5a1f114d0565fd134" + }, + { + "path": "outputs/validation-20261029/delivery-restore-result.json", + "sha256": "7330e1ca5fd6015392390a5bc2229c64dc9068564bfc44760fa2eef655c42fbf" + }, + { + "path": "outputs/validation-20261029/contract-reconciliation-result.json", + "sha256": "e9be3c089504759888e71562ec747e974bbdc0cf8803dea7d2948aa03d6d1820" + }, + { + "path": "outputs/validation-20261029/delivery-preparation-verified-result.json", + "sha256": "f667c4007091b80730c761e571247abeb6e994437b041350cef30d2ba7e54ff3" } ], "qa_runtime_cleanup": { @@ -688,7 +708,47 @@ "tests/frontend/iva-p001-correspondence.test.mjs" ], "origin_commit": "d1551dab", - "scope": "Previously reconciled IVA/P001: correspondence of fields 05/06/07, exclusive aggregation, field 14 single counting and current 01/02 reuse. Preserve the accepted QA evidence; reconcile this inherited delta with the installed destination before installation. This is not newly introduced by daf86234." + "scope": "Previously reconciled IVA/P001: correspondence of fields 05/06/07, exclusive aggregation, field 14 single counting and current 01/02 reuse. Preserve the accepted QA evidence; reconcile this inherited delta with the installed destination before installation. This is not newly introduced by daf86234.", + "confirmed_against_installed": true, + "installed_source_comparison": [ + { + "path": "resources/js/components/simulation-operations.tsx", + "installed_sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf", + "baseline_main_sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf", + "candidate_sha256": "dde59e9ff3a0a53cf082e35a0c8d8eea5bd438b1fe06af88483afdc32541b005", + "inherited_delta_not_yet_installed": true + }, + { + "path": "resources/js/lib/iva-acquisitions.ts", + "installed_sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977", + "baseline_main_sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977", + "candidate_sha256": "b8a8c4a72e35fea7026fd01b0e8e26d44248539eca1a77e8d58ca15a72f218fb", + "inherited_delta_not_yet_installed": true + }, + { + "path": "resources/js/lib/iva-modelo-a.ts", + "installed_sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846", + "baseline_main_sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846", + "candidate_sha256": "e34cac6d3c0473a64e896cfc4641c1da29382aab13de2bd0e78e1ff33c770c87", + "inherited_delta_not_yet_installed": true + }, + { + "path": "resources/js/lib/iva-operations.ts", + "installed_sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54", + "baseline_main_sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54", + "candidate_sha256": "87f616ea2b3a844dea352a6c4d2db25a8de612df3e4edab4c395cc8fa0297a50", + "inherited_delta_not_yet_installed": true + } + ], + "still_to_install": true, + "confirmed_functional_scope": [ + "User-confirmed correspondence of IVA fields 05/06/07.", + "Exclusive operation membership and single-count aggregation in field 14 = 01+03+05+06+07.", + "Reuse current 01/02 from classified sales even without acquisition rows, only when the inputs exist and are current.", + "No invented positive field-06 treatment, no inference foreign=06, no conversion of unknown values to zero, no automatic rate activation.", + "Preserve original snapshots, history, deliberate edits and frozen report inputs." + ], + "proof_reuse": "Existing directed IVA/P001 evidence and the accepted 1190-case frontend result; no tax-rule reassessment or full test rerun." }, "migration_contract": { "reference": "Last recorded server contract in outputs/province-search-20261029/province-preflight.json; current server contract not refreshed.", @@ -732,7 +792,7 @@ "new_migration_paths": [], "proposed_contract": "outputs/validation-20261029/schema-contract-proposed.json", "proposed_contract_sha256": "01673b8c817d7189416398927164d6daf787628d39012ee1221512fabf4933a7", - "active_contract_updated": false, + "active_contract_updated": true, "active_SQL_executed": false, "next_action": "After authenticated current-target comparison and fresh preservation evidence, reconcile these five source hashes through the existing operator-controlled process; do not bypass the pipeline gate.", "proposed_source_contract": { @@ -827,7 +887,36 @@ "database/migrations/2026_10_21_130000_correct_fiscal_maintenance_actor_constraints.php": "49aad23e494914ce939f29929a0a934251c6096ea88d85f0ffdfcf86944af61b", "database/migrations/2026_10_22_230000_create_portal_tenders.php": "03f8ec30add71a355f7ac6a55d4b0f4ab7d70f298142788a4ddceb2106f5fe9b", "database/migrations/2026_10_28_180000_create_proactive_supply_observations.php": "9058739b3305490f6184899d19505760a07df1fe5262d638e0cde12b92a99669" - } + }, + "status": "reconciled_five_reviewed_hashes_without_migration_execution", + "reconciliation": { + "at": "2026-10-29T20:27:46.553905+00:00", + "reviewed_candidate": "8a8204eb536003e2ee71a8379ca2ad5cdebcde38", + "installed_commit_unchanged": "fde7343894964043fa633e3d4d07385a6cb7e039", + "changed_paths": [ + "database/migrations/2026_10_16_130000_add_investment_zone_editorial_draft.php", + "database/migrations/2026_10_16_140000_add_investment_zone_operational_details.php", + "database/migrations/2026_10_16_150000_create_investor_navigation_preferences.php", + "database/migrations/2026_10_18_160000_add_portal_editorial_content.php", + "database/migrations/2026_10_28_180000_create_proactive_supply_observations.php" + ], + "changed_hashes": 5, + "operation_body_differences": 0, + "five_migrations_already_recorded": true, + "previous_contract": "/var/backups/investmoz-validated-delivery-20261029T202505Z/backup/schema-contract.json", + "before_sha256": "49639d06fb20c4fb2873e5e7b1177c76aa098ca7b931400899b588bb8897ddfe", + "pipeline_sha256_unchanged": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604", + "strict_source_contract_check_preserved": true, + "backup_dump_sha256": "89739eb0ac022b90423ab30194d4fcc7a81a1fffc97af260a43f9e902f3f1ea9", + "restore_tables_verified": 200, + "database_migrations_executed": 0, + "active_database_writes": 0, + "deployment_triggered": false, + "visual_acceptance": "pending", + "status": "reconciled", + "after_sha256": "1bac3f5af9513242acb1ffd67b44fda53fe12c5bb22a42f3bad212b5b8bfc002" + }, + "strict_check_retained": true }, "visual": { "status": "pending_team_execution_and_record", @@ -845,13 +934,13 @@ "pending_results_do_not_prove_portal_failure": true }, "installation": { - "status": "pending", + "status": "prepared_visual_acceptance_pending", "existing_pipeline": "/var/www/deploy/investmoz-pipeline.py", "last_known_installed": "fde7343894964043fa633e3d4d07385a6cb7e039", - "last_known_installed_evidence": "outputs/province-search-20261029/province-status-4.json; historical observation, not a fresh destination check", - "fresh_target_and_capacity_checked": false, - "fresh_backup_restore_verified": false, - "SSH": "Historical connected_ready file has no live province-session worker; pinned-host BatchMode SSH attempt returned Permission denied (publickey,password). No credential requested in chat or guessed.", + "last_known_installed_evidence": "Authenticated preflight and post-reconciliation verification on 2026-10-29, not the earlier historical observation.", + "fresh_target_and_capacity_checked": true, + "fresh_backup_restore_verified": true, + "SSH": "Authenticated existing pinned-host session confirmed by completed remote requests; credential not recorded.", "sequence": [ "Record the bounded visual conference by the team.", "Re-establish authenticated deployment session and read current installed revision, service, capacities and source contract.", @@ -863,7 +952,168 @@ "database_migrations_requested": 0, "content_imports_requested": 0, "permissions_changes_requested": 0, - "deployment_triggered": false + "deployment_triggered": false, + "ready_for_installation": false, + "remaining": [ + "Execute and record the bounded visual conference of the candidate by the team.", + "Before advancing main, recheck that the installed revision and preservation baseline are still current; reconcile any legitimate intervening change.", + "Advance main normally and run the existing guarded pipeline for the fixed delivery revision, preserving the previous release.", + "Verify installed revision/source hashes, C132 and preservation of data/files/permissions; record the installation." + ] + }, + "authenticated_preparation": { + "checked_at": "2026-10-29T20:28:52.994602+00:00", + "preflight": { + "installed_commit": "fde7343894964043fa633e3d4d07385a6cb7e039", + "current_link_matches": true, + "contract_matches_installed_sources_before_reconciliation": true, + "volumes": [ + { + "path": "/var/www/investmoz-homologacao/releases", + "device": 2306, + "available_bytes": 72163291136, + "available_inodes": 23290806 + }, + { + "path": "/var/lib/investmoz-deploy", + "device": 2306, + "available_bytes": 72163291136, + "available_inodes": 23290806 + }, + { + "path": "/var/backups", + "device": 2306, + "available_bytes": 72163291136, + "available_inodes": 23290806 + }, + { + "path": "/var/lib/docker", + "device": 2306, + "available_bytes": 72163291136, + "available_inodes": 23290806 + }, + { + "path": "/tmp", + "device": 2306, + "available_bytes": 72163291136, + "available_inodes": 23290806 + } + ], + "existing_five_GiB_pipeline_check_present": true, + "database_identity": { + "database": "teste_investidor", + "port": 5432, + "reader": "postgres", + "database_bytes": 407377587 + }, + "five_migrations_already_applied": [ + { + "migration": "2026_10_16_130000_add_investment_zone_editorial_draft", + "batch": 17 + }, + { + "migration": "2026_10_16_140000_add_investment_zone_operational_details", + "batch": 18 + }, + { + "migration": "2026_10_16_150000_create_investor_navigation_preferences", + "batch": 19 + }, + { + "migration": "2026_10_18_160000_add_portal_editorial_content", + "batch": 20 + }, + { + "migration": "2026_10_28_180000_create_proactive_supply_observations", + "batch": 23 + } + ], + "pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604" + }, + "fresh_backup": { + "stage": "/var/backups/investmoz-validated-delivery-20261029T202505Z/backup", + "created_at": "2026-10-29T20:25:27Z", + "target": { + "database": "teste_investidor", + "port": 5432 + }, + "tables": 200, + "files_verified": 369, + "dump_sha256": "89739eb0ac022b90423ab30194d4fcc7a81a1fffc97af260a43f9e902f3f1ea9", + "files_sha256": "24a3fe38be338f184e4d90bcdb740370739eb71490f63aedc18b433075913c66", + "restore_verified": false + }, + "isolated_restore": { + "restore_verified": true, + "tables_verified": 200, + "container_network": "none", + "database": "validated_delivery_restore_20261029_test", + "port": 55441, + "source_dump_sha256": "89739eb0ac022b90423ab30194d4fcc7a81a1fffc97af260a43f9e902f3f1ea9", + "active_database_writes": 0, + "capacity_before_restore": { + "available_memory_bytes": 54866030592, + "logical_cpus": 12, + "load_average": [ + 2.50048828125, + 2.62646484375, + 2.646484375 + ] + } + }, + "post_reconciliation": { + "checked_at": "2026-10-29T20:28:52.994602+00:00", + "installed_commit": "fde7343894964043fa633e3d4d07385a6cb7e039", + "contract_matches_reviewed_candidate": true, + "strict_pipeline_verification_unchanged": true, + "inherited_iva_sources": [ + { + "path": "resources/js/components/simulation-operations.tsx", + "installed_sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf", + "baseline_main_sha256": "a7e55972fa790063dcf11945055de2af46a77db9e509900af22ede7ec47bb4cf", + "candidate_sha256": "dde59e9ff3a0a53cf082e35a0c8d8eea5bd438b1fe06af88483afdc32541b005", + "inherited_delta_not_yet_installed": true + }, + { + "path": "resources/js/lib/iva-acquisitions.ts", + "installed_sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977", + "baseline_main_sha256": "cce283b1d0a07fb383fcb527225f4dd5bec829010a662cbaae1d60e595221977", + "candidate_sha256": "b8a8c4a72e35fea7026fd01b0e8e26d44248539eca1a77e8d58ca15a72f218fb", + "inherited_delta_not_yet_installed": true + }, + { + "path": "resources/js/lib/iva-modelo-a.ts", + "installed_sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846", + "baseline_main_sha256": "c641619a05613c1620385baad0e9ffbf810dd970aafb30e12b3a7f9a3bf11846", + "candidate_sha256": "e34cac6d3c0473a64e896cfc4641c1da29382aab13de2bd0e78e1ff33c770c87", + "inherited_delta_not_yet_installed": true + }, + { + "path": "resources/js/lib/iva-operations.ts", + "installed_sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54", + "baseline_main_sha256": "ec37b949f1233c5f5c14a87450c421ed29fabf1ed5b73fb32564564a2bc31f54", + "candidate_sha256": "87f616ea2b3a844dea352a6c4d2db25a8de612df3e4edab4c395cc8fa0297a50", + "inherited_delta_not_yet_installed": true + } + ], + "C132_after_reconciliation": { + "result": "passed", + "case": "C132", + "source_explicit_constant_OFF": true, + "effective_configuration_OFF": true, + "configuration_cached": false, + "database_connections_used": 0, + "active_writes": 0 + }, + "active_database_writes": 0, + "migration_execution": false, + "deployment_triggered": false, + "visual_acceptance": "pending_team_execution_and_record" + }, + "active_business_database_writes": 0, + "production_migration_execution": 0, + "portal_release_switch": false, + "visual_acceptance": "pending_team_execution_and_record" } } } diff --git a/docs/investmoz/unification/traceability-and-manual.md b/docs/investmoz/unification/traceability-and-manual.md index 378da422..17fca804 100644 --- a/docs/investmoz/unification/traceability-and-manual.md +++ b/docs/investmoz/unification/traceability-and-manual.md @@ -7626,3 +7626,15 @@ Branch enviada e SHA remoto conferido: `codex/investemoz-reconciliation-20261029 **Instalação: pendente conforme a sequência pedida.** O ficheiro antigo de sessão SSH indicava connected_ready, mas o respectivo processo já não está operativo; a tentativa não interactiva com chave de host fixada foi recusada. A revisão instalada, capacidade actual e novo backup/restauro ainda não foram confirmados nesta entrega. Após o registo visual: sessão autenticada, alvo/capacidade/contrato/delta actuais, backup consistente e restauro isolado, avanço normal de main e pipeline existente, preservação da release anterior e verificação final de revisão/hashes/C132/dados/ficheiros/permissões. Sem migrações, importações ou alterações de permissões solicitadas no activo. Detalhes, cinco hashes e proposta: campo `git_delivery` do recibo existente `local-validation-20261029.json`. Este registo actualiza o estado de entrega; os resultados e recibos históricos da validação mantêm o seu contexto temporal. + +### 29/10/2026 — preparação autenticada: preservação e contrato concluídos, visual pendente + +Sessão SSH reaberta e autenticada pelo utilizador no terminal. Conferência actual do destino: release `fde7343894964043fa633e3d4d07385a6cb7e039`, symlink correcto, pipeline inactivo e C132 positivo. Cerca de 67 GiB livres e 51 GiB de memória disponível no ensaio, 12 CPUs lógicas; mantida a verificação existente de 5 GiB do instalador. + +Backup fresco consistente de `teste_investidor:5432`, criado em 29/10/2026 às 22:25:27 (Africa/Johannesburg), em `/var/backups/investmoz-validated-delivery-20261029T202505Z/backup`: 200 tabelas de schemas não sistémicos e 369 ficheiros/configurações verificados. Restauro isolado sem rede, porta interna55441: contagens e checksums iguais nas 200 tabelas; contentor temporário removido. O inventário de 200 inclui os outros schemas além das 176 tabelas públicas dos recibos anteriores; não indica perda nem invalida essas provas. Hash do dump: `89739eb0ac022b90423ab30194d4fcc7a81a1fffc97af260a43f9e902f3f1ea9`. + +**Contrato reconciliado no servidor:** alterados apenas os cinco hashes revistos, após confirmar que as cinco migrações já estão no ledger e que a cópia anterior coincide com o instalado. Corpos de operações equivalentes; nenhuma migração repetida e nenhum SQL de alteração na base activa. Pipeline byte a byte preservado, incluindo a comparação estrita do contrato. Contrato anterior conservado no backup; recibo auditável em `schema-contract-reconciliation.json` na pasta superior. C132 voltou a passar após a reconciliação. + +**IVA herdado conferido contra o instalado:** os quatro ficheiros de runtime instalados coincidem por SHA-256 com `main` e ainda não contêm o incremento `d1551dab`. O âmbito de entrega é a correspondência 05/06/07, pertença exclusiva das operações, contagem única no campo14 e reutilização actual dos campos01/02. Não cria tratamento positivo06, não infere estrangeiro=06 nem transforma desconhecido em zero. Provas IVA/P001 aceites reutilizadas, com preservação de histórico, snapshots e edições deliberadas. + +**Continua pendente a conferência visual dirigida da candidata**, pela equipa, com registo nesta matriz. O conector permanece sem browser acessível. Não houve avanço de main, troca de release, importações ou alteração de permissões. Após o resultado visual, reconferir que o destino e a base de preservação continuam actuais antes do avanço normal e do pipeline existente; preservar quaisquer alterações legítimas entretanto ocorridas. As provas automáticas de 798 testes PHP e1190 frontend mantêm-se aceites, sem repetição integral. Detalhes no campo `git_delivery.authenticated_preparation` do recibo existente.