Files
SGF/docs/MODULAR_NAVIGATION_COMPLETION.md
T
2026-11-02 20:29:34 +02:00

75 lines
10 KiB
Markdown

# Navegação modular — regressão e perfis de desenvolvimento
Incremento local posterior: [fila administrativa de conferência](MODULE_ASSOCIATION_QUEUE_DELIVERY.md), com filtros/paginação, prévia obrigatória, decisão individual e provas sintéticas isoladas. Não altera os pendentes protegidos nem constitui aceitação visual ou implantação em 8039.
Fila aceite em 02/11/2026, com autorização de checkpoint local de código funcional/testes/documentação; ver [aceitação](MODULE_ASSOCIATION_QUEUE_ACCEPTANCE.md). Revisão visual, carga de implantação, seis registos sem associação e cache bloqueada permanecem separados e preservados.
Conferência posterior das associações em 02/11/2026: [inventário e proposta de tratamento](MODULE_ASSOCIATIONS_REVIEW.md). Cinco registos pendentes na instalação local e um cliente sintético na demonstração 8039, todos preservados sem associação. Nenhuma atribuição automática ou decisão de módulo executada; revisão humana, volume/paginação e revisão visual continuam separados.
**Aceitação técnica expressa em 02/11/2026**, registada no [relatório de entrega](MODULAR_NAVIGATION_DELIVERY.md), com autorização de checkpoint exclusivamente local e limitado à entrega. Revisão visual, associações antigas pendentes e volume/paginação permanecem separados. Não autoriza publicação, direitos públicos novos ou activação de candidatas; Compras mantém-se em **0.1.1**.
Actualização de 01/11/2026 à [entrega inicial](MODULAR_NAVIGATION_DELIVERY.md). Concluídas as duas frentes técnicas: regressão da suite existente e configuração de perfis sintéticos num ambiente de desenvolvimento separado. A [revisão visual](MODULAR_NAVIGATION_VISUAL_REVIEW.md) continua pendente e separada.
Conferência de **02/11/2026**: resultados e hashes dos JUnit confirmados; 184 ficheiros relevantes sem diferenças em relação à cópia validada; perfis e instância isolada preservados, com resposta HTTP 200. Concessões, pertenças, auditoria, guarda original e apontador de Compras conservam as impressões digitais da conclusão. Compras permanece instalado em **0.1.1**. Não se repetiram testes nem provisionamento, nem se modificaram associações ou permissões. Ver [evidência da retoma](proofs/modular-navigation-recheck-20261102.json).
## Isolamento e preservação
Foi criado um cluster PostgreSQL próprio em loopback **55439**, identificado como `sgf_modular_regression_2576427d1939`. A aplicação principal, a demonstração anterior e a sua guarda de base permanecem no destino original; não foram paradas nem migradas para este cluster.
| Finalidade | Aplicação/base/role |
| --- | --- |
| Regressão descartável | Cópia da aplicação em `C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/app`; base `sgf_tempo_test`; role `sgf_test_runner`. |
| Desenvolvimento persistente isolado | Cópia em `development-app`, no mesmo directório de execução; base `sgf_modules_dev_2576427d1939`; role `sgf_modules_qa_2576427d1939`; HTTP `http://127.0.0.1:8039`. |
As roles das aplicações não têm administração do cluster, criação de bases/roles ou bypass de RLS. A base de desenvolvimento tem proprietário e acesso distintos da regressão: recriar a base de regressão não apaga os perfis ou a demonstração de desenvolvimento.
As cópias recebem apenas adaptações explícitas da identidade física: porta da regressão e, na cópia de desenvolvimento, nome de base/role. As guardas PHP e SQL continuam a comparar identidades exactas; não foram removidas. Os ficheiros adaptados são enumerados nos manifestos locais `port-adaptations.json` e `development-identity-adaptations.json`. A guarda do repositório principal continua intacta.
As migrações existentes foram aplicadas apenas às bases novas deste cluster. Não há migração nova de produto nem aplicação de migração em instalação pública, dados reais ou demonstração anterior. Não foram activadas candidatas de Compras: a cópia preserva o apontador instalado, sem mudar a versão seleccionada no host original.
A conferência de preservação comparou contagem e impressão digital de `permission_grants`, `company_memberships` e `identity_audit` da instalação SGF, a guarda original e o apontador instalado de Compras. Os cinco resultados permaneceram iguais. Os registos e credenciais não foram exportados para o relatório.
## Regressão
- Suite histórica completa do checkout: **185 testes, 3 220 asserções**, aprovada.
- Inclui identidade, isolamento de empresas, catálogo, prestações/rascunhos, B1, preparação/pré-visualização, classificação contabilística, cálculo/perfis fiscais, facturas/PDF, recebimentos, oficinas, custos directos/industriais, orçamento e pacote de Compras instalado.
- Os clientes de teste passaram a declarar o módulo da sua fixture e a enviar o token nas leituras. As asserções de negócio anteriores foram conservadas, incluindo recusas, versões, idempotência, rollback e bloqueios SQL.
- `UsesModuleFixture` prepara associações explícitas apenas para os dados sintéticos novos da suite, no cluster descartável. Não é middleware nem mecanismo de migração de registos antigos. Não executa atribuições na instalação ou na demonstração anterior.
- A preparação destrutiva dos testes exige agora um identificador de execução e confere o nome efectivo do cluster antes de `RefreshDatabase`. A execução directa da suite destrutiva na demonstração persistente é recusada.
- A suite focada anterior não foi repetida por rotina. A alteração da configuração dos perfis e a nova guarda de descoberta afectaram esses testes; por isso foi feita a repetição delimitada, com mais um caso de protecção: **8 testes, 90 asserções**, aprovados.
- Não houve alterações de interface nesta continuação, pelo que não se repetiu o build nem os testes estáticos de navegação já aprovados. As verificações de sintaxe e de whitespace das alterações novas passaram.
As primeiras tentativas da regressão identificaram que os destinos físicos estavam também fixados em ficheiros SQL. O runner passou a adaptar esses ficheiros na cópia isolada, mantendo as condições de recusa. Os resultados de aprovação correspondem à execução com a identidade isolada coerente, sem desligar guardas.
## Perfis configurados e conferidos por HTTP
São três contas novas, sintéticas, da empresa/unidade criadas na base própria. Nenhuma conta de cliente foi seleccionada ou recebeu perfil.
| Perfil | Descoberta | Autoridade exemplificada |
| --- | --- | --- |
| Preparador | Seis módulos | Preparação de custos e rascunhos; sem validação dos seus custos. Administração explícita apenas nesta empresa sintética. |
| Revisor | Seis módulos | Validação de custos e revisão comercial; sem preparação correspondente ou administração de acessos. |
| Consulta | Seis módulos | Consulta concedida; sem preparação, validação ou administração. |
`SGF_DEVELOPMENT_PROFILES` permite configurar os identificadores exactos `user:tenant:company` no ficheiro de ambiente privado da instância. A configuração predefinida do produto continua vazia. A descoberta exige ambiente de desenvolvimento **e a guarda da base isolada**; copiar um perfil para configuração de base de cliente não o activa. Em produção o desvio de descoberta continua indisponível.
As verificações HTTP autenticaram separadamente as três contas, seleccionaram os seis módulos e conferiram a separação de autoridade. Confirmaram também recusas de escrita para revisão/consulta, recusa da administração a esses perfis e manutenção das guardas dos adaptadores de fornecedores. Não houve navegador, capturas, pagamento ou associação automática.
Stock continua em preparação. A descoberta de Compras não instala configuração operacional, fontes históricas ou capacidades candidatas: os adaptadores que exigem a sua composição/base QA própria continuam a recusar execução nesta base. As funções disponíveis conservam as condições e limitações anteriores.
O exemplo de cadastro pendente continua sem qualquer associação de módulo, visível apenas na consulta administrativa autorizada e sinalizado como pendente. As listagens operacionais não o incorporam. Nenhum registo anterior foi atribuído por defeito a Comercial, Compras ou outro módulo.
As credenciais novas estão exclusivamente em `C:/laragon/data/sgf-tempo/run/modular-regression-2576427d1939/private/development.json`, fora do Git e da raiz web. Não usar nem substituir o ficheiro de entrada manual da oficina ou as credenciais anteriores.
## Operação e recuperação locais
Os scripts de preparação são `modular-regression-run.mjs` e `modular-development-host.mjs`. O primeiro copia o checkout e prepara/testa o cluster descartável; o segundo prepara uma aplicação, base e role diferentes para os perfis persistentes. Os testes focados podem ser seleccionados separadamente pelo modo `focused`. As verificações HTTP estão em `modular-development-http-proof.mjs`.
Não repetir o provisionamento sobre uma demonstração existente: o script recusa um host de desenvolvimento já configurado. Para suspender a instância, usar o PID local de `development-web.pid` e o `pg_ctl` com o directório exacto do cluster acima, depois de conferir a identidade. Não usar serviços, bases ou credenciais da instalação principal para recuperar este ambiente. Não apagar associações, dados antigos ou apontadores de Compras como procedimento de recuperação.
O directório local conserva os relatórios JUnit, saídas completas, manifestos das adaptações e provas HTTP. A [prova resumida](proofs/modular-navigation-completion.json) contém apenas resultados técnicos, sem credenciais.
Continuam separados: revisão visual/aceitação da equipa, comportamento visual de recarga das páginas autónomas, atribuição humana das associações antigas, avaliação de volume/paginação e qualquer implantação/uso real. A suite automatizada completa não declara executadas verificações manuais ou provas externas que não pertençam a ela.
Sem publicação, push, checkpoint de aceitação, alterações dos direitos públicos ou activação de candidatas de Compras.