-
Status: implemented-pending-homologation
-
Intake:
sdd/human-requests/req-152.md -
Data: 2026-09-01
-
Classificação: pipeline de projeto, Docker/bare-metal, bootstrap CLI
1. Diagnóstico causal
ai-workspace/en/scripts/dev-environment/updates-manager-database.sh tratava dockerPath como obrigatório e encerrava sempre com docker exec [REDACTED]. Isso contradizia a configuração já aceita pelo resolvedor de projetos: no HestiaCP, [REDACTED]-[REDACTED] aponta diretamente para o Gestor do tenant e não existe container por projeto.
A homologação incremental tornou visíveis dois contratos adicionais:
-
o
config.phpe suas bibliotecas precisam do diretório de trabalho na raiz do Gestor durante a execução CLI host; -
gestor/phinx.phpé requerido dentro demigracoes(), portanto precisa vincular$_GESTORao escopo global antes de carregarconfig.php.
2. Implementação
-
dockerPathexplícito: modo Docker; -
target/path_testssobdev-environment/data/sites/:dockerPathderivado, modo Docker; -
outro
target/path_testscontendo o atualizador PHP: modo host; -
qualquer outro cenário: erro explícito, sem fallback por adivinhação.
No modo host, o comando roda em subshell com cd "$PATH_HOST"; no modo Docker, a chamada continua em [REDACTED], agora sem bash -c. Os argumentos são um array Bash e o identificador do projeto é validado antes de entrar nas expressões jq.
gestor/phinx.php declara global $_GESTOR antes do require_once $configPath. A correção é restrita ao contexto de produção do Phinx e preserva o caminho especial do instalador.
3. Evidências
Automatizadas locais
-
bash -n updates-manager-database.sh: aprovado. -
Testes focados: 10/10, 30 asserções.
-
PHPUnit completa: 1008/1008, 4.347 asserções, 4 skips esperados, 0 falhas.
-
php -l gestor/phinx.php: aprovado. -
Caminho Docker direto:
docker exec [REDACTED] php ... --helpaprovado, sem mutação de banco.
Runtime Lab HestiaCP
Alvo: [REDACTED]-lab em [REDACTED].
-
Tentativa 1: confirmou a seleção host, mas revelou o diretório de trabalho incorreto.
-
Tentativa 2: confirmou o diretório do Gestor, mas revelou o escopo parcial de
$_GESTORno bootstrap Phinx. -
Tentativa 3: pipeline 5/5 aprovado, com migrações, recursos, arquivos e
TRANSACAO_COMMIT; banco+19 ~0 =0. -
Repetição idempotente: pipeline 5/5 aprovado, banco
+0 ~0 =19.
Backups reversíveis mantidos exclusivamente no Lab:
-
[REDACTED] -
[REDACTED]
Nenhuma credencial foi registrada no repositório ou nas evidências.