1. Descrição do Problema & Contexto
Durante a execução de pipelines de compilação e sincronização no Windows (resources:sync e project:update-all), foram identificados dois pontos de fricção no ambiente de desenvolvimento:
Pilar 1: Invalidação de Cache por Códigos de Cor ANSI no Tailwind CLI
-
No Windows, ao invocar
tailwindcss.cmd --help, o binário emite caracteres de escape de formatação ANSI colorida (\x1b[34mv4.3.3\x1b[39m). -
A função
tailwind_recursos_cli_version()emgestor/controladores/agents/arquitetura/tailwind-recursos.phputiliza expressão regular/tailwindcss\s+v?([0-9]+(?:\.[0-9]+){1,3})/isem antes limpar sequências ANSI. -
Isso faz com que no Windows a versão detectada seja avaliada como
'unknown', enquanto no Linux/CI ela é detectada como'4.3.3'. -
Como a versão compõe o hash de
fingerprintde cada recurso no.tailwind-build-manifest.json, qualquer sincronização ou restauração vinda do git/CI invalida 100% dos 237 recursos, forçando a recompilação redundante de todos os arquivos CSS e gerando um diff espúrio de mais de 3.000 linhas no manifesto.
Pilar 2: Falha de Descritores de Arquivo dup() in/out/err failed no rsync do Windows
-
Ao executar tarefas via terminais reaproveitados (como o task runner do VS Code com reaproveitamento de painel
bash -i -c), handles herdados de processos anteriores que terminaram com erro ficam inválidos. -
O binário
rsyncdo MSYS2/Git Bash falha ao tentar duplicar os descritores de I/O para abrir os pipes do transporte SSH (-e ssh), resultando no errodup() in/out/err failed(código de saída 12). -
Essa armadilha precisa ser catalogada na skill de governança
c2f-shell-and-windows-trapscom instruções para isolamento de tarefas ("presentation": { "panel": "new" }ou abertura de nova sessão).
2. Escopo Técnico de Alterações
Módulo 1: Sanitização no Núcleo do Compilador Tailwind
-
Em
gestor/controladores/agents/arquitetura/tailwind-recursos.php:-
Na função
tailwind_recursos_cli_version(), aplicar limpeza de sequências de escape ANSI (/\x1b\[[0-9;]*[a-zA-Z]/ou passagem deNO_COLOR=1/FORCE_COLOR=0) antes de realizar o casamento da expressão regular da versão. -
Assegurar que tanto no Windows quanto no Linux a versão retorne a string limpa
'4.3.3'.
-
Módulo 2: Suíte de Testes Automatizados
-
Em
tests/Unit/PHP/TailwindRecursosTest.php(ou teste unitário dedicado de arquitetura):-
Adicionar teste unitário validando que
tailwind_recursos_cli_version()extrai corretamente a versão semântica a partir de saídas brutas contendo sequências de escape ANSI e formatações de console variadas.
-
Módulo 3: Governança & Documentação de Skills
-
Em
.codex/skills/c2f-shell-and-windows-traps/SKILL.md(e nos 4 espelhos.claude,.cursor,.gemini,.github):-
Adicionar a armadilha de reaproveitamento de terminais no VS Code com falha
dup() in/out/err failednorsyncdo MSYS2. -
Documentar a necessidade de sanitização de saídas ANSI ao inspecionar binários CLI multiplataforma.
-
3. Critérios de Validação e Aceite
-
Estabilidade de Cache do Tailwind:
-
php cli/c2f.php resources:syncexecutado no Windows deve reconhecer a versão'4.3.3', mantendo osfingerprintscompatíveis com o repositório. -
O comando deve reportar
0 para compilar, 237 em cachesem gerar diffs de versão'unknown'no.tailwind-build-manifest.json.
-
-
Suíte de Testes 100% Verde:
-
Execução do PHPUnit passando sem regressões.
-
-
Paridade de Espelhos e Evidências:
-
Skills atualizadas com MD5 idêntico nos 5 espelhos.
-
Evidências registradas em
sdd/implementation/BATCH-170.md,BATCH-INDEX.mdeCURRENT.md.
-