Conn2Flow
Navegação das docs

MDD

req-284: cache do Tailwind por recurso portável e varredura automática sem seeds

"Toda hora fica recompilando sem precisar." Um project:update-all [REDACTED] levou cerca de 20 minutos e manteve o Lab em manutenção; quase todo o tempo foi recompilação de…


id: "REQ-284" title: "Cache do Tailwind por recurso que não sobrevive a outra pasta ou terminal, e varredura automática que lê os seeds" status: "implemented-pending-homologation" date: "2026-10-19" author: "executor" target_repo: "conn2flow" batch: "BATCH-293" topology: "solo" autonomy: "autonomo_monitorado" origin: "Pedido do Engenheiro Chefe Humano (2026-10-19), a partir do incidente da REQ-141 do conn2flow-site"

req-284: cache do Tailwind por recurso portável e varredura automática sem seeds

Relato

"Toda hora fica recompilando sem precisar." Um project:update-all [REDACTED] levou cerca de 20 minutos e manteve o Lab em manutenção; quase todo o tempo foi recompilação de .precompiled.css que não tinha mudado.

Diagnóstico (medido em 2026-10-19)

  1. A chave do cache depende do caminho absoluto. tailwind_recursos_fingerprint() usa o caminho de cada fonte como chave (realpath). Toda página Tailwind recebe os modais de sistema do core como fonte automática (req-148), resolvidos em SYSTEM_PATH. Rodando o core de outra pasta (worktree, outro clone) ou com a letra do drive em outra caixa (c:\ no terminal do VS Code, C:\ no PowerShell), a chave muda e o cache cai inteiro.

    • Medido: core em conn2flow-req141-main → 88 de 1295 fingerprints iguais no site, 1207 recompilados em 528 s; os recursos do core, 523 recompilados, 0 em cache, 99 s.

    • O conteúdo já é normalizado (\r\n → \n) desde a req-114; a quebra de linha não é a causa.

  2. Layouts e bundles varrem o projeto inteiro, inclusive os seeds. O input temporário importa o input central (@import "tailwindcss", detecção automática) e o CLI roda com cwd na raiz do projeto. O Tailwind lê db/data/*.json (126 MB no site), logs/, backups/ etc. a cada compilação.

    • Medido: o CSS da platform-editor compilado às 13:28 manteve classes que não existiam mais em HTML nenhum ([scrollbar-width:none], sm:flex-wrap): elas estavam só no PaginasData.part-001.json antigo, regravado depois do Tailwind.

    • Experimento isolado: com cwd na raiz, a classe que só existe em db/data/*.json entra no CSS; com cwd vazio, não.

Escopo

  1. Fingerprint portável: cada fonte entra pela raiz a que pertence (gestor: para o projeto ou o próprio core, core: para fontes do core usadas por projeto) com caminho relativo, comparação sem caixa no Windows. Versão do manifesto vai para 2 (recompilação única na primeira execução).

  2. Inputs de layout e bundle excluem da detecção automática o que não é autoria: db/data, logs, backups, temp, .tailwind-build, node_modules, vendor. A varredura de PHP e JS dos módulos continua (layouts dependem dela).

  3. Testes PHPUnit: fingerprint igual com a raiz em outra pasta e com outra caixa de drive; diferente quando o conteúdo muda; input temporário com as exclusões.

  4. (Achado na medição) Recursos de texto entram nos *Data.json com quebra de linha LF: o mesmo arquivo vinha com \r\n (checkout com autocrlf) ou \n (saída do Tailwind) e o checksum e a versão mudavam sem mudança de conteúdo.

  5. (Achado no deploy) O diff de choque do manifesto de instalação não carrega arquivo acima de INSTALACAO_DIFF_MAX_BYTES: um seed de 83 MB marcado como editado derrubava a API de deploy com 500.

  6. Skills c2f-executor-agent e c2f-project-pipeline-and-tasks: mudança só de projeto vai por project:deploy; project:update-all só com core e projeto mudando juntos.

Fora do escopo

  • Pôr no fingerprint os arquivos achados pela detecção automática (o cache continua sem enxergar mudança em PHP/JS de módulo); registrado como observação.

  • Mudança no css:rebuild e na escolha de comando dos agentes (vai para skill/memória).

Critérios de aceite

  1. Duas compilações seguidas do conn2flow-site, uma da árvore principal e outra de uma worktree do core: a segunda com 0 recompilados.

  2. CSS de layouts e bundles sem classes que só existem em db/data; nenhuma classe de PHP/JS de módulo perdida (diff de seletores medido).

  3. PHPUnit verde.

O Futuro é Híbrido: Humano + IA.

O Conn2Flow é a ferramenta. Se você precisa do Arquiteto para desenhar a estratégia da sua empresa usando essa tecnologia...

Contrate Consultoria Especializada