# Módulo 26 — Empacotamento reproduzível, limpeza final e novo ZIP consolidado

## Fechamentos desta rodada

- o bundle consolidado passou a remover resíduos transitórios de runtime do `portal`, `platform` e `gateway` antes do empacotamento;
- `platform/storage/runtime/mysql-bundle` e `platform/storage/runtime/remote-bridge` deixaram de carregar arquivos transitórios para o ZIP final;
- a suíte canônica `final-product-regression` passou a incluir o boundary oficial do SSO, a obrigatoriedade do launch via portal e a regressão de subdiretório montado em `/nvr`;
- a tela `/login-tecnico` continua isolada e auditável, mas preserva o contrato de navegação integrada sob `/nvr` sem competir com o fluxo principal;
- `scripts/build-final.sh` agora não só empacota como também extrai e revalida o ZIP gerado, incluindo `php artisan about`, `scripts/test.sh` e `scripts/test-regression.sh` no artefato final.

## Critérios cobertos

- portal real + NVR + gateway íntegros no novo ZIP consolidado;
- build previsível, com `BUILD_MANIFEST.sha256` gerado a partir da árvore saneada;
- runtime Laravel real do NVR operacional no bundle entregue;
- regressão raiz e regressão consolidada executadas sem skip indevido do `platform`.
