fix: complete InvesteMoz validation and error corrections

This commit is contained in:
2026-10-29 21:47:33 +02:00
parent 63147312e2
commit daf8623441
718 changed files with 127308 additions and 20959 deletions
@@ -2033,3 +2033,13 @@ reversão e limites no início do [manual existente](unification/traceability-an
As entregas posteriores de Competitividade e dos filtros provinciais ficam
disponíveis nesta pasta; não se declara nova instalação ou aceitação visual.
Mantidos os 3.555 requisitos da matriz CSV, os recibos e os históricos fiscais.
### 29/10/2026 — correcções e validação automática local após reconciliação
Validação técnica local concluída na branch `codex/investemoz-reconciliation-20261029`, a partir de `63147312`. Cobertura conferida contra o inventário completo: **798 testes PHP** (91 Unit, 706 Feature em 216 classes e 1 ensaio de schema com 3106 asserções) e **1190 testes frontend**. Tipos TypeScript, PHPStan nível 7 sem erros, Pint, lint/formatação, compilação e os controlos positivos/negativos C132 passaram. Resultados de repetições consolidados por identificador de teste, sem duplicar contagens e sem novos skips.
Correcções incluem contratos de dados e falhas explícitas de leitura/hash, continuidade do contexto do dossier no simulador, invalidação do cache actual da página inicial, leitura de originais antes do carregamento do catálogo opcional e directório mínimo de contas na administração autorizada. A classificação territorial reutiliza directamente o âmbito público existente, eliminando a subconsulta recursiva redundante; a varredura de rotas com o catálogo territorial completo passou em cerca de 35 segundos, com limite QA de 20 segundos por consulta. Mantidos os testes de exclusão de referências privadas/não aprovadas. Fixtures alinhadas com autenticação, MFA recente, publicação explícita e separação dos snapshots pessoal/económico. O fake HTTP de assets também isola manifestos de fontes mutáveis.
Execução exclusivamente em bases QA isoladas em `127.0.0.1:55441`, com contextos vazios ou clones preparados conforme as guardas originais. Os 28 originais editoriais foram recuperados de arquivo local e conferidos por SHA-256; seis testes editoriais passaram com scanner real. Preservados os originais, arquivos de fontes, ferramentas históricas, chave da aplicação, dados activos e históricos. Zero migrações/importações/escritas na base activa, push ou deployment. A alteração inclui formatação abrangente do código mantido; o manifesto de hashes identifica os ficheiros validados.
**Conferência visual autenticada pendente:** a revisão automática interrompeu Computer Use por não conseguir determinar com confiança o URL actual do Chrome. Não foi declarado aceite visual de Competitividade nem encerramento transversal de ACT-01, ACT-02 ou V2-07/V2-10. Recibo e provas: [local-validation-20261029.json](unification/local-validation-20261029.json).
@@ -0,0 +1,542 @@
{
"recorded_at": "2026-10-29T19:46:20.694141+00:00",
"repository": "InvesteMoz / portal-investidor",
"base_commit": "63147312e2fdb6dc235bcb2763f47d8b1aeeac3c",
"branch": "codex/investemoz-reconciliation-20261029",
"status": "automated_validation_passed_visual_validation_pending",
"validated_source": {
"manifest": "outputs/validation-20261029/validated-source-manifest.json",
"sha256": "1291c22692f90f9baaa85e5f252d5db2301dccb83d6d887fa76a0efae1618ba1",
"files": 715,
"includes_maintained_code_formatting": true
},
"totals": {
"php_default_inventory": 797,
"php_unit": 91,
"php_feature": 706,
"schema_lifecycle_additional": 1,
"php_total_with_schema": 798,
"frontend": 1190,
"feature_classes": 216,
"new_skips": 0,
"remaining_automated_failures": 0
},
"checks": {
"unit-verified": {
"result": "passed",
"tests": 91,
"passed": 91,
"assertions": 405
},
"fresh-corrections": {
"result": "passed",
"tests": 3,
"passed": 3,
"assertions": 298
},
"simulator-storage": {
"result": "passed",
"tests": 15,
"passed": 15,
"assertions": 445
},
"simulator-corrections": {
"result": "passed",
"tests": 13,
"passed": 13,
"assertions": 810
},
"proactive-retry": {
"result": "passed",
"tests": 16,
"passed": 16,
"assertions": 157
},
"remaining-final": {
"result": "passed",
"tests": 63,
"passed": 63,
"assertions": 447
},
"fiscal-clean": {
"result": "passed",
"tests": 24,
"passed": 24,
"assertions": 291
},
"schema": {
"result": "passed",
"tests": 1,
"passed": 1,
"assertions": 3106
},
"editorial-final": {
"result": "passed",
"tests": 6,
"passed": 6,
"assertions": 1336
},
"routes-final": {
"result": "passed",
"tests": 1,
"passed": 1,
"assertions": 6
},
"simulator_consolidated": {
"result": "passed",
"tests": 171,
"passed": 171,
"evidence_method": "Distinct testcase outcomes consolidated from complete initial run and complete passing replacement classes.",
"source_junit": [
"simulator-verified.junit.xml",
"simulator-corrections.junit.xml"
]
},
"fresh_consolidated": {
"result": "passed",
"tests": 350,
"passed": 350,
"evidence_method": "Distinct testcase outcomes consolidated from complete initial run and complete passing replacement classes.",
"source_junit": [
"fresh-verified.junit.xml",
"fresh-corrections.junit.xml"
]
}
},
"static_checks": {
"phpstan": {
"level": 7,
"errors": 0
},
"pint": "passed",
"typescript": "passed",
"lint": {
"files": 633,
"errors": 0,
"warnings": 0
},
"frontend_format": {
"files": 655,
"result": "passed"
},
"production_build": "passed",
"build_notes": [
"Existing optional font fallback and bundle-size/timing advisories remain non-fatal."
],
"c132": {
"result": "passed",
"case": "C132",
"source_explicit_constant_OFF": true,
"effective_configuration_OFF": true,
"configuration_cached": false,
"database_connections_used": 0,
"active_writes": 0
},
"c132_negative_controls": {
"result": "passed",
"case": "C132",
"checks": {
"safe": "passed",
"missing_source": "passed",
"enabled_source": "passed",
"stale_cache_enabled": "passed",
"missing_effective": "passed",
"constant_false": "passed",
"comment_only": "passed",
"environment_switch": "passed"
},
"active_writes": 0
}
},
"coverage": {
"feature_groups": {
"fresh": [
"tests/Feature/ApiContractTest.php",
"tests/Feature/BusinessMarketplacePublicTest.php",
"tests/Feature/ClamDQueueWorkerIntegrationTest.php",
"tests/Feature/ClusterValueChainTest.php",
"tests/Feature/CountryCandidateMfaTest.php",
"tests/Feature/CrmIntakeTest.php",
"tests/Feature/DashboardOpportunityAccessTest.php",
"tests/Feature/DashboardTest.php",
"tests/Feature/DevelopmentEnvironmentTest.php",
"tests/Feature/DocumentLibrarySchemaCompatibilityTest.php",
"tests/Feature/ExampleTest.php",
"tests/Feature/ExistingBusinessCompatibilityTest.php",
"tests/Feature/ExistingBusinessFoundationTest.php",
"tests/Feature/ExistingBusinessIntakeTest.php",
"tests/Feature/ExistingBusinessWizardTest.php",
"tests/Feature/ImportDocumentBatchTest.php",
"tests/Feature/ImportLegalSourceArchiveTest.php",
"tests/Feature/IndependentDocumentOperationsTest.php",
"tests/Feature/InterestSubmissionTest.php",
"tests/Feature/InvestmentPortfolioTest.php",
"tests/Feature/InvestmentRelationshipTest.php",
"tests/Feature/InvestmentStructureTest.php",
"tests/Feature/InvestmentTerritorialTraceabilityTest.php",
"tests/Feature/InvestmentTerritoryTest.php",
"tests/Feature/InvestmentUnificationTest.php",
"tests/Feature/InvestmentWorkspaceTest.php",
"tests/Feature/InvestmentZoneAttachmentTest.php",
"tests/Feature/InvestmentZoneTest.php",
"tests/Feature/InvestorGuidanceTest.php",
"tests/Feature/InvestorPathTest.php",
"tests/Feature/LandAssistanceTest.php",
"tests/Feature/LegacyContentTest.php",
"tests/Feature/ManagementAccessTest.php",
"tests/Feature/OpportunityCanonicalWorkflowTest.php",
"tests/Feature/OpportunityManagementTest.php",
"tests/Feature/OpportunityOriginReviewTest.php",
"tests/Feature/OpportunityPublicationScopeTest.php",
"tests/Feature/OpportunityRealDocumentOperationsTest.php",
"tests/Feature/OpportunityRealEstateDraftTest.php",
"tests/Feature/OpportunityResourcesTest.php",
"tests/Feature/OrganizationCountryInstallationTest.php",
"tests/Feature/OrganizationCountryTest.php",
"tests/Feature/PartnershipExchangeTest.php",
"tests/Feature/PortalAuditConsumerLotTest.php",
"tests/Feature/PortalAuditContinuationTest.php",
"tests/Feature/PortalAuditNextLotTest.php",
"tests/Feature/PortalAuditRoutesTest.php",
"tests/Feature/PortalManagementTest.php",
"tests/Feature/PortalOperationsTest.php",
"tests/Feature/PortalOriginCompatibilityTest.php",
"tests/Feature/PortalProfileAccessTest.php",
"tests/Feature/PortalProfileInstallationTest.php",
"tests/Feature/PortalQaMfaTracePrivacyTest.php",
"tests/Feature/PortalRealDocumentConsumersTest.php",
"tests/Feature/PortalServicesTest.php",
"tests/Feature/PublicPortalNavigationTest.php",
"tests/Feature/ReferenceCatalogTest.php",
"tests/Feature/SimulationDraftContinuityTest.php",
"tests/Feature/SimulationExecutionTest.php",
"tests/Feature/SimulationFormDraftTest.php",
"tests/Feature/SimulationTaxRuleGovernanceTest.php",
"tests/Feature/SkillsEducationSchemaTest.php",
"tests/Feature/TerritorialRegistryTest.php",
"tests/Feature/TerritoryGeometryImportTest.php"
],
"simulator": [
"tests/Feature/CatalogueSelectorReferencesTest.php",
"tests/Feature/ContentManagementEntryTest.php",
"tests/Feature/CorridorAgribusinessBatchTest.php",
"tests/Feature/CorridorAgribusinessInvestorPathTest.php",
"tests/Feature/CorridorAgribusinessOpportunitiesTest.php",
"tests/Feature/InvestmentAnchorIntegrationTest.php",
"tests/Feature/InvestmentComplementsTest.php",
"tests/Feature/InvestmentConsumerScopeTest.php",
"tests/Feature/InvestmentContextContinuityTest.php",
"tests/Feature/InvestmentCorridorContextTest.php",
"tests/Feature/InvestmentOpportunityChoicesTest.php",
"tests/Feature/InvestmentPortfolioContinuityTest.php",
"tests/Feature/InvestmentTreatmentScopeTest.php",
"tests/Feature/IrpcAnnualSettlementDraftTest.php",
"tests/Feature/IrpcGroupedDraftTest.php",
"tests/Feature/IrpcInterestCerDraftTest.php",
"tests/Feature/IrpcMrftaDraftTest.php",
"tests/Feature/IrpcNormalAssessmentDraftTest.php",
"tests/Feature/IrpcNormalBaseDraftTest.php",
"tests/Feature/IrpcNormalCostsDraftTest.php",
"tests/Feature/IrpcNormalDepreciationDraftTest.php",
"tests/Feature/IrpcNormalDraftTest.php",
"tests/Feature/IrpcNormalFormPreparationDraftTest.php",
"tests/Feature/IrpcNormalPeriodFxDraftTest.php",
"tests/Feature/IrpcNormalProfitDraftTest.php",
"tests/Feature/IrpcNormalSchedulesDraftTest.php",
"tests/Feature/IrpcReliefsDraftTest.php",
"tests/Feature/IrpcSpecialCessationPriorDraftTest.php",
"tests/Feature/IrpcSpecialCombinationsDraftTest.php",
"tests/Feature/IrpcSpecialDraftTest.php",
"tests/Feature/IrpcSpecialMonthlyDraftTest.php",
"tests/Feature/IrpcSpecialStartPeriodDraftTest.php",
"tests/Feature/IrpcWithholdingDraftTest.php",
"tests/Feature/IspcQuarterDraftTest.php",
"tests/Feature/IspcResidualDraftTest.php",
"tests/Feature/IvaAcquisitionAllocationDraftTest.php",
"tests/Feature/IvaAcquisitionBCDraftTest.php",
"tests/Feature/IvaAcquisitionContinuityDraftTest.php",
"tests/Feature/IvaAcquisitionRightDraftTest.php",
"tests/Feature/IvaActSaleBaseDraftTest.php",
"tests/Feature/IvaAgroDraftTest.php",
"tests/Feature/IvaAnnexIDraftTest.php",
"tests/Feature/IvaBaggageDraftTest.php",
"tests/Feature/IvaBeveragePartitionDraftTest.php",
"tests/Feature/IvaBeverageRestitutionDraftTest.php",
"tests/Feature/IvaClosureDraftTest.php",
"tests/Feature/IvaCommissionBaseDraftTest.php",
"tests/Feature/IvaCompositionBaseDraftTest.php",
"tests/Feature/IvaConditionalDraftTest.php",
"tests/Feature/IvaCulturalDraftTest.php",
"tests/Feature/IvaCurrencyEventDraftTest.php",
"tests/Feature/IvaDigitalDraftTest.php",
"tests/Feature/IvaExclusionBaseDraftTest.php",
"tests/Feature/IvaExportBeneficiaryDraftTest.php",
"tests/Feature/IvaExportDirectDraftTest.php",
"tests/Feature/IvaExportServiceDraftTest.php",
"tests/Feature/IvaForeignOperationDraftTest.php",
"tests/Feature/IvaFuelBaseDraftTest.php",
"tests/Feature/IvaFundraisingDraftTest.php",
"tests/Feature/IvaGoodsAllocationDraftTest.php",
"tests/Feature/IvaGoodsLocationDraftTest.php",
"tests/Feature/IvaGoodsPresumptionDraftTest.php",
"tests/Feature/IvaHealthGoodsDraftTest.php",
"tests/Feature/IvaImportAssetsDraftTest.php",
"tests/Feature/IvaImportBeneficiariesDraftTest.php",
"tests/Feature/IvaImportCustomsDraftTest.php",
"tests/Feature/IvaImportDevelopmentDraftTest.php",
"tests/Feature/IvaImportExemptionsDraftTest.php",
"tests/Feature/IvaImportInvestmentDraftTest.php",
"tests/Feature/IvaImportServicesDraftTest.php",
"tests/Feature/IvaImportSpecialRegimesDraftTest.php",
"tests/Feature/IvaImportSuppliesDraftTest.php",
"tests/Feature/IvaInternationalAssetDraftTest.php",
"tests/Feature/IvaListedGoodsDraftTest.php",
"tests/Feature/IvaListedServicesDraftTest.php",
"tests/Feature/IvaMinerDraftTest.php",
"tests/Feature/IvaNoncashBaseDraftTest.php",
"tests/Feature/IvaObjectiveImportDraftTest.php",
"tests/Feature/IvaOfferPathsDraftTest.php",
"tests/Feature/IvaOfferPreparationsDraftTest.php",
"tests/Feature/IvaOfferWorkflowDraftTest.php",
"tests/Feature/IvaOnboardSupplyDraftTest.php",
"tests/Feature/IvaOperationsDraftTest.php",
"tests/Feature/IvaOwnNameDraftTest.php",
"tests/Feature/IvaPharmaInputsDraftTest.php",
"tests/Feature/IvaProductionCalendarDraftTest.php",
"tests/Feature/IvaProductionDraftTest.php",
"tests/Feature/IvaPropertyTransferDraftTest.php",
"tests/Feature/IvaPublicationsDraftTest.php",
"tests/Feature/IvaPublicAuthorityBaseDraftTest.php",
"tests/Feature/IvaRationalDraftTest.php",
"tests/Feature/IvaReducedBasesDraftTest.php",
"tests/Feature/IvaRefundDraftTest.php",
"tests/Feature/IvaRegularizationDraftTest.php",
"tests/Feature/IvaRemissionDraftTest.php",
"tests/Feature/IvaSecondhandDraftTest.php",
"tests/Feature/IvaServiceLocationDraftTest.php",
"tests/Feature/IvaServiceNormalDraftTest.php",
"tests/Feature/IvaServicesGroupDraftTest.php",
"tests/Feature/IvaServicesNatureDraftTest.php",
"tests/Feature/IvaSocialDraftTest.php",
"tests/Feature/IvaSpecialRegimeDraftTest.php",
"tests/Feature/IvaSubstitutionDraftTest.php",
"tests/Feature/IvaTemporaryBenefitDraftTest.php",
"tests/Feature/IvaTravelEventDraftTest.php",
"tests/Feature/IvaValueReviewDraftTest.php",
"tests/Feature/LegacyEditorialWorkflowTest.php",
"tests/Feature/ModeloAAcquisitionsDraftTest.php",
"tests/Feature/OpportunityCorridorExplorerTest.php",
"tests/Feature/OpportunityPromotionTest.php",
"tests/Feature/PrivateInvestmentPreparationTest.php",
"tests/Feature/ProcurementTest.php",
"tests/Feature/SimulatorClosureRecoveryTest.php",
"tests/Feature/TerritoryGeometryApprovedAdministrationTest.php",
"tests/Feature/TerritoryGeometryConsumerAccessTest.php"
],
"proactive": [
"tests/Feature/CatalogueProvinceCoverageTest.php",
"tests/Feature/FiscalFormEntryTest.php",
"tests/Feature/InvestorUsabilityScopeTest.php",
"tests/Feature/IrpcCreditCarryDraftTest.php",
"tests/Feature/IrpcEconomicCreditDraftTest.php",
"tests/Feature/IrpcInternationalCreditDraftTest.php",
"tests/Feature/IrpcPecDraftTest.php",
"tests/Feature/ProactiveInvestmentTest.php",
"tests/Feature/ProactiveSupplyTest.php"
],
"other": [
"tests/Feature/AiGatewayTest.php",
"tests/Feature/ClamDScannerIntegrationTest.php",
"tests/Feature/ClusterCompetitivenessTest.php",
"tests/Feature/DatabaseErrorRedactionTest.php",
"tests/Feature/EducationalGuidesTest.php",
"tests/Feature/EducationTest.php",
"tests/Feature/OpportunitySearchTest.php",
"tests/Feature/ProvinceSearchCompatibilityTest.php",
"tests/Feature/SectorCatalogueContentTest.php",
"tests/Feature/SimulationFiscalMaintenanceActorTest.php",
"tests/Feature/SimulationFiscalQaPreviewTest.php",
"tests/Feature/SimulationPublishedFiscalTest.php",
"tests/Feature/SimulationRateLimitTest.php",
"tests/Feature/SimulatorCashflowContinuityTest.php",
"tests/Feature/SimulatorReviewMessagesTest.php"
]
},
"additional_recursive_feature_classes": [
"tests/Feature/Auth/AuthenticationTest.php",
"tests/Feature/Auth/EmailVerificationTest.php",
"tests/Feature/Auth/PasswordConfirmationTest.php",
"tests/Feature/Auth/PasswordResetTest.php",
"tests/Feature/Auth/QaAccountSelectionTest.php",
"tests/Feature/Auth/RegistrationTest.php",
"tests/Feature/Auth/TwoFactorChallengeTest.php",
"tests/Feature/Auth/TwoFactorDecryptionFailureTest.php",
"tests/Feature/Auth/VerificationNotificationTest.php",
"tests/Feature/Settings/ProfileUpdateTest.php",
"tests/Feature/Settings/SecurityTest.php",
"tests/Feature/SuiteCrm/SuiteCrmClientTest.php",
"tests/Feature/SuiteCrm/SuiteCrmProbeTest.php"
],
"other_group_explanation": "Fiscal maintenance, QA preview and published fiscal classes require an empty QA schema; the source-rich clone already contains protected rule identities. Those complete classes passed in fiscal-clean.log. SectorCatalogueContentTest passed in remaining-final.log. The single proactive failure passed with its complete 16-case class in proactive-retry.log. No original fixed-database guard was weakened."
},
"data_preservation": {
"active_database_writes": 0,
"active_migrations": 0,
"active_imports": 0,
"remote_pushes": 0,
"deployments": 0,
"application_key_changes": 0,
"original_sources_and_historical_tools_unchanged": true,
"qa_host": "127.0.0.1",
"qa_port": 55441,
"original_qa_cluster_read_only_export": true,
"original_qa_cluster_stopped_after_export": true,
"editorial_originals_recovered_and_sha256_verified": 28,
"editorial_source_archives_unchanged": true,
"qa_fixture_data_is_not_acceptance_content": true
},
"fixes": [
"Explicit collection, scalar, query-row and response contracts without analysis suppressions.",
"Checked file/hash/size and regular-expression failures; invalid Unicode is preserved and rejected explicitly.",
"Public contact JSON endpoint avoids unrelated profile/navigation database access.",
"Guarded editorial migrations admit only the existing verified isolated QA identity; negative production/host/port/name/URL/driver tests pass.",
"Idempotent interest acknowledgements preserve the current workflow state and use the existing required authentication and UUID contract.",
"Simulator provenance retains dossier opportunity choices while selected-consumer fields and requirements remain scoped.",
"Home cache invalidation includes the current sector-organization cache key.",
"Location classification uses the authoritative public territorial query directly, avoiding a redundant recursive self-subquery while retaining public-ancestor and publication restrictions.",
"Original article reading remains available before loading the optional agribusiness opportunity catalogue.",
"Authorized profile administration recovers the minimal existing-account directory and selection hints without exposing authentication secrets.",
"Regression fixtures use authenticated actors, recent MFA where required, explicit publication and current public document projections; contact fields are partitioned into the personal snapshot.",
"Laravel HTTP asset fakes also disable mutable Vite font manifests; the build/test race was removed without changing production fonts.",
"Maintained PHP/frontend formatting and lint findings corrected; source archives, generated code and historical evidence retained."
],
"limitations": [
{
"area": "Authenticated visual validation / Competitiveness",
"status": "pending",
"reason": "Automatic Computer Use review could not determine the current Chrome URL with sufficient confidence. UI automation stopped; no bypass or visual acceptance claim."
},
{
"area": "Delivery",
"status": "local_only",
"reason": "No push, deployment, production migration or editorial publication was requested or performed."
}
],
"requirements": "Technical validation only. Does not close ACT-01, ACT-02, V2-07/V2-10 or replace visual/content acceptance.",
"evidence": [
{
"path": "outputs/validation-20261029/unit-verified.log",
"sha256": "caab7fe5f23a2f5374cb1b243ef8f9e53d588c0f7d4633c083e2af6a9924fb38"
},
{
"path": "outputs/validation-20261029/fresh-verified.log",
"sha256": "898b13c9910c106fa80d3ce995bf7874054a8a8d7d72712f58e87c9a7510e4c7"
},
{
"path": "outputs/validation-20261029/fresh-corrections.log",
"sha256": "b83b6ce6d7b85df6ce28c6f448812138d9448b57122bbe1e91db710bd49a9f0a"
},
{
"path": "outputs/validation-20261029/fresh-consolidated.junit.xml",
"sha256": "3f5f71db80fdf417613ad845c51e74cb058591b8371ee33672bd430fff3e08d3"
},
{
"path": "outputs/validation-20261029/simulator-verified.log",
"sha256": "396eecbac488062c70ff300f868b9ecf0bf649ab2eb6db0aa090d602d2257d09"
},
{
"path": "outputs/validation-20261029/simulator-corrections.log",
"sha256": "a7a8c7a4671eeca464c77600394d2dc9dc8ccdd1650d480b8844e15bee34307f"
},
{
"path": "outputs/validation-20261029/simulator-consolidated.junit.xml",
"sha256": "2af02b152d295469c81c2936aeb98f0f82b68462dc3368a576d12dcfa1419511"
},
{
"path": "outputs/validation-20261029/simulator-storage.log",
"sha256": "db95e5152d2d94bc45944bb710d97fd8cbe59dccecb4d7c71d27b1069262498f"
},
{
"path": "outputs/validation-20261029/proactive-final.log",
"sha256": "918b530b7e0479c72f4a3fcbe05ed2aae2218a0fe66b5344002ad0a94aebd944"
},
{
"path": "outputs/validation-20261029/proactive-retry.log",
"sha256": "179a15860d17421136d5e4f1cb30750a89e20a88df783b057a287bbb3af19d6f"
},
{
"path": "outputs/validation-20261029/other-final.log",
"sha256": "33ca85df50db88017110cf67bd284ee785f69ce9726da4acb9f7e168ad0cd6d9"
},
{
"path": "outputs/validation-20261029/fiscal-clean.log",
"sha256": "470046e008195cc2af3bea722d2a2b3e0a1175912d14c1096e6cb75cbb0606c7"
},
{
"path": "outputs/validation-20261029/remaining-final.log",
"sha256": "ec2d1ac9aebcaf2c01e2787f37dd31577c740ea6c72f931711626531825df68a"
},
{
"path": "outputs/validation-20261029/schema.log",
"sha256": "f7f155a4d3d5bd22e98f5231e69d19b569dee19bd56164822b2834d87a211f57"
},
{
"path": "outputs/validation-20261029/frontend-verified.log",
"sha256": "3b2c56e930c6f6caae69076b3dcecd33423c41d09fd48945bd3c0524f7b40f93"
},
{
"path": "outputs/validation-20261029/phpstan-final-verified.log",
"sha256": "1997495ca8f04c2ec09798d55607d1a2f85e3338b772f258666465bf658032d2"
},
{
"path": "outputs/validation-20261029/pint-verified.log",
"sha256": "cd1a94fc2cf6a965b86e1a4809d6c7fb9148b1ee374e1010ed2ac96ff4876ec2"
},
{
"path": "outputs/validation-20261029/pint-fixture-verified.log",
"sha256": "cd1a94fc2cf6a965b86e1a4809d6c7fb9148b1ee374e1010ed2ac96ff4876ec2"
},
{
"path": "outputs/validation-20261029/pint-territory-verified.log",
"sha256": "cd1a94fc2cf6a965b86e1a4809d6c7fb9148b1ee374e1010ed2ac96ff4876ec2"
},
{
"path": "outputs/validation-20261029/pint-last-fixture-verified.log",
"sha256": "cd1a94fc2cf6a965b86e1a4809d6c7fb9148b1ee374e1010ed2ac96ff4876ec2"
},
{
"path": "outputs/validation-20261029/routes-final.log",
"sha256": "63481f3b07a7ec555694d7e1e4b3e72d287e7db03752bc1c9ef1c3dc3e861418"
},
{
"path": "outputs/validation-20261029/territorial-query-qa.json",
"sha256": "7f329807105e166bc2eaef43383ac9de189a7e8f5cd452e1943924671991217f"
},
{
"path": "outputs/validation-20261029/check-final-verified.log",
"sha256": "f3dc103584f6845d61a8ce8954c66685a1c0500123cfe738a6d67bb1dd10cfbd"
},
{
"path": "outputs/validation-20261029/types-latest.log",
"sha256": "5346ac8a6566c1c38cb0bbda6a029579df58cd78af78e2c4845d9c82b5d1d76c"
},
{
"path": "outputs/validation-20261029/build-verified.log",
"sha256": "adf5a5136e1ea02dcfa8e054f2303d9e115d9ec65bc6c765a5d618a614783f05"
},
{
"path": "outputs/validation-20261029/editorial-final.log",
"sha256": "fb50ba0514a7c0aceaa0c84650693debb817d2732179000799bc4480ef436545"
},
{
"path": "outputs/validation-20261029/editorial-originals-recovery.json",
"sha256": "9f9998a06fee6cde241cca54f5a8060283934328721249a5ad00bcddefa50b9c"
}
],
"qa_runtime_cleanup": {
"temporary_preview_server_stopped": true,
"temporary_postgresql_cluster_stopped": true,
"existing_application_processes_stopped": 0,
"qa_backups_and_evidence_retained": true
}
}
@@ -7570,3 +7570,13 @@ Recibo: docs/investmoz/unification/province-search-qa-20261029.json. Instalaçã
**Separação mantida:** este resultado encerra a lacuna técnica de compatibilidade/expansão provincial descrita acima, sem declarar conferência visual dos controlos e sem encerrar os requisitos amplos ACT-02/V2-07/V2-10. A conferência visual autenticada de Competitividade continua **pendente — execução e registo pela equipa**. As provas aceites dessa funcionalidade não foram reabertas nem substituídas pela correcção dos filtros. Diagnóstico da ligação Edge continua separado; leitura de URL não declarada recuperada. Nenhum processo local foi terminado nem porta libertada; InvesteMoz e SGF preservados.
Para o registo da equipa: no cluster autorizado, editar conteúdo legítimo → Guardar rascunho no servidor → sair e reabrir → comparar campos/versão recuperados → conferir na ficha pública exclusivamente a versão aprovada. Registar utilizador/âmbito autorizado, URL/cluster, versão instalada, versões guardada/aprovada, resultado e divergências. Uma nova gravação não deve substituir a aprovação pública existente; nova aprovação depende da decisão de conteúdo aplicável. Sem exemplar aprovado disponível, manter essa parte da conferência pendente em vez de publicar dados sintéticos.
### 29/10/2026 — correcções e validação automática local após reconciliação
Validação técnica local concluída na branch `codex/investemoz-reconciliation-20261029`, a partir de `63147312`. Cobertura conferida contra o inventário completo: **798 testes PHP** (91 Unit, 706 Feature em 216 classes e 1 ensaio de schema com 3106 asserções) e **1190 testes frontend**. Tipos TypeScript, PHPStan nível 7 sem erros, Pint, lint/formatação, compilação e os controlos positivos/negativos C132 passaram. Resultados de repetições consolidados por identificador de teste, sem duplicar contagens e sem novos skips.
Correcções incluem contratos de dados e falhas explícitas de leitura/hash, continuidade do contexto do dossier no simulador, invalidação do cache actual da página inicial, leitura de originais antes do carregamento do catálogo opcional e directório mínimo de contas na administração autorizada. A classificação territorial reutiliza directamente o âmbito público existente, eliminando a subconsulta recursiva redundante; a varredura de rotas com o catálogo territorial completo passou em cerca de 35 segundos, com limite QA de 20 segundos por consulta. Mantidos os testes de exclusão de referências privadas/não aprovadas. Fixtures alinhadas com autenticação, MFA recente, publicação explícita e separação dos snapshots pessoal/económico. O fake HTTP de assets também isola manifestos de fontes mutáveis.
Execução exclusivamente em bases QA isoladas em `127.0.0.1:55441`, com contextos vazios ou clones preparados conforme as guardas originais. Os 28 originais editoriais foram recuperados de arquivo local e conferidos por SHA-256; seis testes editoriais passaram com scanner real. Preservados os originais, arquivos de fontes, ferramentas históricas, chave da aplicação, dados activos e históricos. Zero migrações/importações/escritas na base activa, push ou deployment. A alteração inclui formatação abrangente do código mantido; o manifesto de hashes identifica os ficheiros validados.
**Conferência visual autenticada pendente:** a revisão automática interrompeu Computer Use por não conseguir determinar com confiança o URL actual do Chrome. Não foi declarado aceite visual de Competitividade nem encerramento transversal de ACT-01, ACT-02 ou V2-07/V2-10. Recibo e provas: [local-validation-20261029.json](local-validation-20261029.json).