# Baseline e gate — 28/09/2026 Registo histórico da Fase 0. O proprietário autorizou depois a progressão automática; o gate de aprovação abaixo foi ultrapassado por essa instrução. Consultar `implementation-status.md` e `validation.md` para a execução e métricas actuais. ## Execução e resultados | Verificação executada | Resultado | | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | PHPUnit completo em PostgreSQL/PostGIS isolado | 138 testes, 1.463 verificações, todos aprovados; 27,943 s | | PHPStan completo | Zero erros | | TypeScript `--noEmit` | Aprovado | | Lint páginas investment/portfolio e PortalNavigation | Aprovado | | Pint do script de inventário | Primeira verificação encontrou estilo; formatado; verificação final aprovada, assim como `php -l` | | Build Vite | Aprovado, 2.354 módulos, 11,78 s; aviso de dependência opcional fontaine, sem falha | | Inventário agregado | Executado em transacção READ ONLY/REPEATABLE READ; 93 tabelas; JSON adjacente | | Backup da base | SHA-256 conferido; manifesto regista restauro verificado em 93 tabelas | Backup privado da base: `storage/app/private/portfolio-version-backup-20260928-011346/`. O backup antecede a migration de versão editorial; a reconciliação existente documenta apenas `migrations` 34→35. Backup completo anterior da aplicação: `C:/laragon/backups/portal-investidor-20260927-101224/RESTAURO.md`. Não publicar estes backups nem as configurações privadas. Esta fase não fez alterações de esquema ou conteúdo de negócio. As versões instaladas foram lidas de `composer.lock` e dos pacotes em `node_modules`; as versões PostgreSQL/PostGIS foram consultadas na base local. O JSON contém contagens, nunca registos pessoais ou credenciais. ## Comandos reproduzíveis (PowerShell) ```powershell $validationPhp = 'C:/Users/macbook/AppData/Local/Temp/investmoz-validation-20260924/php/php.exe' & $validationPhp tools/zones-baseline.php & $validationPhp vendor/bin/phpstan analyse --no-progress --memory-limit=512M & $validationPhp vendor/bin/pint --test tools/zones-baseline.php node node_modules/typescript/bin/tsc --noEmit node_modules/.bin/vp.cmd lint resources/js/pages/investment resources/js/pages/portfolio resources/js/components/PortalNavigation.tsx ``` Em outra sessão, exclusivamente para testes, com PostgreSQL QA disponível na porta 55441: ```powershell $validationPhp = 'C:/Users/macbook/AppData/Local/Temp/investmoz-validation-20260924/php/php.exe' $env:DB_CONNECTION='pgsql' $env:DB_DATABASE='portal_services_test' $env:DB_HOST='127.0.0.1' $env:DB_PORT='55441' $env:DB_USERNAME='education_test' $env:DB_URL='' & $validationPhp vendor/bin/phpunit --do-not-cache-result ``` Depois de terminar PHPUnit, executar `npm.cmd run build` na sessão normal. Não substituir o manifesto Vite enquanto testes Inertia o lêem. O PHP padrão do PATH não é adequado ao baseline PostgreSQL; não executar `composer setup`, que altera configuração e base. ## Ficheiros e reversão Criados: `tools/zones-baseline.php`, `docs/investmoz/zones/README.md`, `diagnosis-and-adr.md`, `plan-and-traceability.md`, `baseline.md`, `baseline-data.json`. Nenhum ficheiro aplicacional removido. Build regenera artefactos derivados em `public/build` e ficheiros Wayfinder. Endpoints, componentes de produto e dados de negócio permanecem funcionalmente iguais; nenhuma migration criada nesta fase. Rollback da fase consiste em retirar os novos artefactos de documentação/inventário, preservando os backups; não exige rollback de base. Não havia `.git`. Foi inicializado repositório local na branch `feature/zee-zfi-catalogue`, usando `C:/laragon/bin/git/cmd/git.exe`. Não há identidade Git configurada; commits não executados e nenhum ficheiro sensível adicionado ao índice. Antes de versionar a aplicação inteira, rever exclusões de anexos, dumps e storage privado. Não confundir branch sem commit inicial com histórico de recuperação completo. ## Limites e riscos - Testes passam para o código actual; não comprovam requisitos ZEE/ZFI ainda não implementados. - Nenhum novo ensaio de navegador, carga, leitor de ecrã, falha de rede ou UAT foi executado nesta fase. Evidências anteriores estão em `../unification/validation.md` e não são homologação do novo catálogo. - Ausência de geometrias impede demonstrar cobertura territorial real. Não inventar coordenadas ou perímetros. - Fontes jurídicas, entidades competentes, validade e nomes das zonas exigem conferência documental na Fase 1. Não foram carregadas regras fiscais ou certificados. - R2–R5 da revisão arquitectural continuam abertos; a Fase 0 não os resolve. - A aprovação editorial anterior pelo próprio gestor conflita com o novo requisito de segregação. Novo domínio seguirá revisão independente; a transição do legado precisa decisão explícita e migração de permissões. - SLO/SLA, retenção, responsáveis nominais e calendário de UAT não foram fornecidos. Devem ser decisões registadas, não valores inventados. ## Checklist de gate | Condição | Estado | | -------------------------------------------------------------- | ----------------------------- | | Código acessível e versões/comandos identificados | Sim | | Backup existente com restauro documentado e checksum conferido | Sim | | Baseline de testes reproduzido | Sim | | Diagnóstico, matriz de decisões, ADR e backlog preparados | Sim | | Escopo piloto aprovado pelo proprietário | Pendente — proposta no README | | Identidade Git e primeiro commit | Pendente | | Transição de permissões e responsáveis de validação | Pendente | | Autorização para iniciar Fase 1 | A aguardar decisão no gate | Recomendação: **Go condicionado**. Próxima fase proposta: ER/dicionário, matriz jurídica, identidade canónica e relações tipadas, migrations aditivas e testes GIS/integridade/reversão em base isolada. Não iniciada.