test: verify local main against isolated PostGIS QA

This commit is contained in:
2026-11-04 10:16:58 +02:00
parent 66a5dbf311
commit dc0bbd74d5
3 changed files with 82 additions and 1 deletions
@@ -0,0 +1,62 @@
{
"date": "2026-11-04",
"scope": "main local; isolated PostgreSQL/PostGIS tests; no push or deployment",
"tested_base_commit": "66a5dbf3118de8ff4787d2a7a5854df578df01ba",
"qa": {
"host": "127.0.0.1",
"port": 55441,
"exclusive_cluster": "C:\\Users\\macbook\\.config\\investmoz\\main-qa-20261104-pgdata",
"databases": [
"investmoz_test",
"simulator_fiscal_delta_20261021_test",
"proactive_investment_20261027_test",
"main_reference_20261104_test",
"main_extra_20261104_test"
],
"ready": true
},
"tests": {
"unique_cases_passed": 1325,
"unique_assertions": 28377,
"failures_remaining": 0,
"feature_files_covered": 274,
"unit_cases": 94,
"schema_lifecycle_assertions": 3106,
"competitiveness": {
"tests": 7,
"assertions": 93
},
"province_filters": {
"tests": 4,
"assertions": 364
}
},
"initial_diagnostics_preserved": [
"snapshot encryption mismatch: verified original key used only in process APP_PREVIOUS_KEYS",
"combined RefreshDatabase traits regrouped; aborted reference copy restored",
"fiscal test fixtures separated from snapshot rules",
"GD/WebP loaded for QA CLI processes only",
"outdated audit total corrected: preserve13 business events and verify8 scan events and idempotent replay"
],
"application_source_changed": false,
"test_correction": {
"file": "tests/Feature/PortalServicesTest.php",
"sha256": "cc2e90c1929b6b2ef050c1c9e58ae2e15ef3c3189459f12ee25d24e26ce9651b",
"reason": "Preserve 13 business audit records and verify the eight existing malware worker start/result events and replay idempotency"
},
"preservation": {
"historical_files_verified_and_restored": 523,
"generated_outputs_archived": 17,
"original_qa_dumps_unchanged": true,
"matrix": {
"unique_requirements": 3555,
"columns": 49
},
"active_database_operations": 0,
"remote_push": false,
"active_migrations": false,
"service_restarts": false
},
"evidence": "outputs/main-db-qa-20261104/result.json; readiness.json; evidence-preservation.json; *.junit.xml",
"visual_acceptance": "previous pending states preserved; no visual conference performed"
}
@@ -9087,3 +9087,14 @@ Verificação do delta: 25 testes frontend dirigidos aprovados; TypeScript e com
Pedido expresso da Tempo: integrar a reconciliação na `main` local, preservar as alterações, verificar conflitos e testes, sem enviar para o remoto. A `main` anterior (`4b3c7e16`) foi preservada em `backup/main-before-reconciliation-20261104`. A integração de `codex/investemoz-reconciliation-20261029` (`f17e807c`) fez fast-forward: a main anterior é antepassada da origem. Não houve nova resolução automática nem descarte de conteúdo; a árvore integrada foi conferida idêntica à origem. Os oito conflitos gravados já estavam resolvidos no commit de origem e não existem marcadores em app/resources/routes/tests/docs. Sem alterações por gravar anteriores ou alterações nos outros worktrees.
Verificação local: 1.672 testes frontend aprovados, zero falhas; TypeScript global aprovado; compilação QA aprovada em `public/build-qa-opportunities` (avisos de fontaine opcional e dimensão dos chunks); sintaxe dos 468 ficheiros PHP alterados aprovada; `git diff --check` limpo. Matriz preservada com 3.555 requisitos únicos e 49 colunas. Recibos e logs: `outputs/reconciliation-main-local-20261104/integrity.json`. Testes dependentes de PostgreSQL não reexecutados: não havia listener da QA isolada em 55441. Provas anteriores preservadas, sem as apresentar como nova execução. Esta integração não declara aceitação funcional/visual integral, disponibilização no portal nem execução de migrações. Sem push, escrita na base activa, publicação de conteúdos ou alteração de serviços/permissões.
### 04/11/2026 — base QA exclusiva e testes da main local
Pedido expresso da Tempo: preparar QA isolada e executar os testes de base de dados da main local, sem tocar na base activa nem enviar alterações ao remoto. Base de código `66a5dbf3`, após integrar a reconciliação. Criado cluster PostgreSQL/PostGIS novo em directório exclusivo `C:/Users/macbook/.config/investmoz/main-qa-20261104-pgdata`, apenas em `127.0.0.1:55441`, com cinco bases terminadas em `_test`. Guardas conferem nome, porta e directório real antes de migrações/testes; sem configuração em cache, DB_URL ou fallback activo. InvesteMoz, SGF e os restantes clusters não foram reiniciados nem reconfigurados. QA permanece disponível; nenhuma instalação de serviço ou alteração global do PHP.
Resultado final por caso distinto, substituindo o resultado inicial apenas quando houve repetição documentada: **1.325 aprovados, 28.377 asserções, zero falhas por resolver nesta ronda**. Todos os 274 ficheiros Feature cobertos, mais 94 casos unitários e ciclo de schema com 3.106 asserções. Inclui Competitividade 7/93 e filtros provinciais 4/364. A ronda principal inicial teve 877 casos, 873 aprovados, duas falhas e dois erros; os quatro casos passaram em repetição dirigida após carregar GD/WebP apenas no processo QA e corrigir uma expectativa antiga de auditoria. O teste conserva os 13 eventos de negócio, verifica os oito eventos já existentes de início/resultado de quatro scans e confirma ausência de duplicação no replay. Não se alterou o código da aplicação.
Preparação e diagnósticos preservados: dois snapshots QA anteriores restaurados em bases separadas e actualizados pelas migrações locais; histórico de uma migração da oferta reconciliado só no clone, após comparar colunas, constraints, índices, políticas e RLS com o schema actual. Dois testes com traits combinados de RefreshDatabase tinham sido mal agrupados: executor da cópia de referência interrompido, logs conservados, cópia restaurada e testes separados; não foi perda de dados activos. Fixture fiscal própria executada em schema limpo, sem apagar versões legítimas do snapshot. Chave local compatível do snapshot verificada e disponibilizada apenas ao executor como chave anterior, sem expor, alterar chave ou reescrever registos. Originais editoriais existentes copiados para a fixture QA com hashes verificados. Falhas iniciais não são apagadas nem apresentadas como regressões resolvidas no produto sem causa demonstrada.
Preservação: 523 JSON históricos conferidos/restaurados por SHA256, 17 saídas novas arquivadas separadamente; dumps originais QA inalterados. Matriz mantém 3.555 requisitos únicos e 49 colunas. Pint, sintaxe do teste alterado e diff-check aprovados. Sem push, publicação, migração/escrita activa ou alteração de permissões activas. Estas provas não substituem a conferência visual autenticada nem encerram requisitos transversais; pendências anteriores conservadas. Recibo: `docs/investmoz/unification/main-local-database-qa-20261104.json`; resultados por teste, tentativas iniciais, executores e JUnit em `outputs/main-db-qa-20261104/`.
+9 -1
View File
@@ -285,7 +285,14 @@ class PortalServicesTest extends TestCase
$this->post('/management/portal-services/disclosure-authorization/apply')
->assertRedirect(route('services.manage'))->assertSessionHasNoErrors();
$this->assertDatabaseCount('portal_resource_revisions', 8);
$this->assertDatabaseCount('audit_events', 13);
// Four synchronous scans now retain their start and result in the audit ledger.
$this->assertSame(13, DB::table('audit_events')->where('source_system', '!=', 'document-malware-worker')->count());
$this->assertDatabaseCount('audit_events', 21);
foreach (DB::table('portal_resources')->whereIn('id', $resourceIds)->pluck('document_id') as $documentId) {
$this->assertSame(['scan_result_recorded', 'scan_started'], DB::table('audit_events')
->where('source_system', 'document-malware-worker')->where('entity_id', $documentId)
->orderBy('action')->pluck('action')->all());
}
$this->assertSame(4, DB::table('portal_resources')->where('published', true)->count());
$this->assertSame(4, DB::table('documents')->where('data_classification', 'public')->where('rights_status', 'authorized')->count());
$this->assertDatabaseHas('portal_resources', ['id' => $resourceIds[2], 'published' => true, 'source_confirmation' => 'identified', 'legal_status' => 'unknown']);
@@ -308,6 +315,7 @@ class PortalServicesTest extends TestCase
$this->assertDatabaseHas('portal_resource_links', ['resource_id' => $resourceIds[0], 'target_type' => 'module', 'target_key' => 'simulator']);
$this->post('/management/portal-services/disclosure-authorization/apply')->assertSessionHasNoErrors();
$this->assertDatabaseCount('portal_resource_revisions', 8);
$this->assertDatabaseCount('audit_events', 21);
}
public function test_qa_library_preserves_an_original_without_inventing_a_topic_or_auto_publishing(): void