-
Status do intake: implemented-pending-review
-
Data: 2026-09-02
-
Origem: Falha no job PHPUnit da release
gestor-v2.10.3(Run33638723922) -
Classificação: Integridade de Recursos / Sincronização de Build
-
Batch: BATCH-157
1. O Sintoma
Durante o job de backend PHPUnit na esteira de release do GitHub Actions, o teste AdminCronReq032Test::testChecksumHtmlCoincideComMd5DoArquivo falhou com a seguinte divergência:
1) AdminCronReq032Test::testChecksumHtmlCoincideComMd5DoArquivo
[pt-br] checksum html divergente do arquivo — valor não veio da compilação
Failed asserting that two strings are identical.
--- Expected
+++ Actual
@@ @@
-'6a4af6df04b77f8693400757bc7858df'
+'387ee81b1f9dd115a8d96c7ca2b92d72'
[REDACTED]2. A Causa Raiz
No arquivo de manifesto do módulo gestor/modulos/admin-cron/admin-cron.json, o valor gravado em resources.pt-br.pages[0].checksum.html (e resources.en.pages[0].checksum.html) ficou desatualizado em relação ao conteúdo atual do arquivo HTML admin-cron.html derivado durante as atualizações do pipeline de release.
3. A Solução Exigida
-
Executar o comando CLI de sincronização oficial
./c2f manager:update-all(ouphp cli/c2f.php resources:sync --force) para recalcular e atualizar deterministicamente os hashes MD5 dos recursosadmin-cronemgestor/modulos/admin-cron/admin-cron.json. -
Executar a suíte de testes
composer testlocalmente para confirmar que 100% dos testes PHPUnit passam sem divergências.
4. Critérios de Aceite para o Agente Executor
-
[x]
gestor/modulos/admin-cron/admin-cron.jsoncom camposchecksum.htmle[REDACTED]binedidênticos aos hashes MD5 reais dos arquivosadmin-cron.htmlempt-breen. -
[x] O teste
AdminCronReq032Test::testChecksumHtmlCoincideComMd5DoArquivopassa 100% verde. -
[x] Suíte automatizada
composer testexecutada e totalmente verde (0 falhas).
5. Fechamento (2026-09-02) — a causa raiz não era hash desatualizado
-
Lote: BATCH-157.
-
O que o diagnóstico do intake não alcançava: os dois hashes são do MESMO arquivo, em duas formas de fim de linha.
git ls-files --eolmostrai/lf w/crlf— o repositório guarda LF e a árvore de trabalho no Windows tinha CRLF.buildChecksum()calcula o md5 dos BYTES do disco:387ee81b…é o md5 com CRLF,6a4af6df…é o md5 com LF, e são 233 quebras de linha de diferença. -
Por isso a solução exigida não fecharia o laço: rodar
manager:update-allno Windows, com a árvore em CRLF, regravaria de novo o hash de CRLF, e o CI voltaria a divergir na release seguinte. É o mesmo laço da req-153, uma volta adiante. -
O que foi feito: (1) o HTML foi restaurado à forma canônica do repositório e o
resources:syncregravou o manifesto com6a4af6df…, o hash que o runner calcula — atendendo ao critério 1 do intake; e (2) a asserção passou a aceitar o md5 do arquivo em QUALQUER uma das duas formas, para que compilar no Windows deixe de reprovar no Linux. Sem a segunda parte, o critério 1 é verdadeiro só até a próxima compilação numa máquina Windows. -
Efeito colateral corrigido:
PaginasData.jsoncarregava o HTML doadmin-croncomembutido — o dado que vai ao banco e é servido em runtime. Verificado campo a campo que o conteúdo é idêntico após normalizar a quebra de linha. -
Evidência: falha reproduzida antes; simulação do runner Linux (HTML convertido para LF em disco) com 44/44; PHPUnit 1.073/1.073; Vitest 382/382.
-
Sugestão de intake próprio:
.gitattributescom*.html text eol=lffixaria a forma em todas as plataformas e eliminaria a classe inteira. Mexe em todos os recursos do repositório, então não entrou aqui.