Componentes
Histórico da §48 — seed-componentes.md
Título completo no canon: Histórico da seção §48 — Painel — grade, lentes, frescor, edição direta e mapa (não é regra)
Base (3 rodadas encadeadas, 2026-08-12): R1 canon interno — DF6 (esta fronteira) e DM10 (tempo real é produto); a Régua de Espera do Bloco 3 em três regimes compostos (ação · carga inicial · refresh sobre conteúdo, com delay de 1s e permanência mínima); os dois regimes de live region do §1.13 (discreto × contínuo, uma por componente); o §46 inteiro (SH2 landmarks nomeados, SH5 ativo que sobrevive ao grayscale); o DP12 (destino externo × interno); o §40 (densidade compacta medida em 33px); e a §6b do
estudo-viver-de-ia.md— a auditoria que mostrou que a "camada de movimento" não era lacuna de token (existem 4 durações + 4 easings +prefers-reduced-motiondesde os primitivos) e sim de consumo. R2 mercado — comutador de visualização no ClickUp, Notion e Linear: as lentes mostram os mesmos itens com filtro e layout próprios sobre a mesma fonte; trocar de lente não altera os itens; e a adequação da lente depende do dado. R3 normas — WCAG 2.2.2 (nível A): informação que se atualiza sozinha, começa automaticamente e é apresentada em paralelo com outro conteúdo exige mecanismo para pausar, parar, esconder ou controlar a frequência; painel com intervalo escolhível (30s / 5min / manual) satisfaz pelo controle de frequência. Base adicional da rodada 3 (edição direta): WCAG 2.2, SC 2.5.7 Dragging Movements (AA) — toda funcionalidade que usa arrasto tem de ter caminho de ponteiro único alternativo; e a documentação do ClickUp sobre gantt × timeline (ver PN3c). Consolidados aprovados pelo Rafael em 2026-08-12 e 2026-08-13.
(Estado: estável. Gate visual do Rafael APROVADO em 2026-08-13 sobre o preview v0.6 — o quarto e último gate do bloco, depois das quatro camadas automatizadas. Com ele o bloco 6C FECHA e a Fase 6 vai a 3/3 blocos concluídos (6A §46 Shell · 6B §47 Página institucional · 6C §48 Painel). A promoção é dos contratos PN1–PN54; as decisões de marca S3, S4 e S6 seguem proposta — ver a ressalva no cabeçalho do §48 e a pendência PN-P1 em §48.9. Este bloco é o primeiro do projeto validado em cinco camadas, e a quinta (render-contraste.mjs) nasceu de um defeito que as outras quatro não podiam ver.)
Rodada 1 — 2026-08-12, preview v0.1 → v0.2. suite-painel.mjs 67 PASS · 0 FAIL — prova
de que as guardas são reais: contra um preview com 5 defeitos deliberados (lente desabilitada em
vez de oculta, frequência sem opção manual, pílula pintada pelo sinal, aria-valuemin ausente,
base proporcional não declarada) ela reprova em 6; render-painel.mjs 17 PASS · 0 FAIL;
contraste-painel.py 44 PASS · 0 FAIL após as correções que a própria medição exigiu. O
gate visual reprovou o v0.1 e produziu o PN3b — as lentes "linha do tempo" e "calendário"
desenhavam listas. Preview a v0.2, suíte a 75, render a 25; contra a versão em que as
duas lentes voltam a ser lista, a suíte reprova em 6.
Rodada 2 — 2026-08-13, preview v0.3. Oito lentes (S1) e camada visual (PN21).
suite-painel.mjs v2 107 PASS · 0 FAIL; prova: contra um preview com 4 defeitos
plantados — gantt sem dependências, véu a 35%, dois heros, transition com duração solta — ela
reprova exatamente nos 4. render-painel.mjs v2 37 PASS · 0 FAIL, medindo em Chrome real
3 conectores de dependência com extensão em pixels, 5 faixas de responsável com sub-linhas de
sobreposição em tops distintos, marca de capacidade no mesmo x, excedente com largura real,
contorno do mapa com bbox medido e 5 pontos dentro do viewBox. contraste-painel.py v2 70 PASS
· 0 FAIL, incluindo os pares do hero escuro (branco × cinza-900 = 13,86; itálico
turquesa-300 = 7,57; botão-solução = 5,11).
Rodada 3 — 2026-08-13, preview v0.5 → v0.6. Cinco camadas, todas verdes, todas re-executadas contra o artefato final:
| Camada | Ferramenta | Placar | O que ela mede |
|---|---|---|---|
suite-painel.mjs v4 |
Node + jsdom | 133 PASS · 0 FAIL | Estrutura, ARIA, tokens, classes fantasma, referências fantasma, higiene |
render-painel.mjs v3 |
Chrome headless | 37 PASS · 0 FAIL | Colapso da grade em 3 larguras, geometria das oito lentes, frescor vivo |
render-edicao.mjs v1 |
Chrome headless | 142 PASS · 0 FAIL | Os 33 contratos de edição direta, filtro, escala, mapa e criação — gesto por gesto, com pixels |
render-contraste.mjs v1 |
Chrome headless | 6 PASS · 0 FAIL | Contraste de composição renderizada nos dois temas (368 textos medidos), não de par de token |
contraste-painel.py v2 |
Python | 70 PASS · 0 FAIL | Pares declarados, calculados fora do navegador |
Rodada 4 — 2026-08-13 (noite), preview v0.6 → v0.7 → v0.8. A inversão do hero. Cinco
camadas re-executadas contra o v0.8 final: suite-painel.mjs 139 PASS · 0 FAIL (era 133;
entram NV-01, PN21-05c/05d/05e/05f/05g) · render-painel.mjs 37 · 0 ·
render-edicao.mjs 142 · 0 · render-contraste.mjs 6 · 0 · contraste-painel.py
78 · 0 (era 70; entram PC-H5b, PC-H6…PC-H11). Nenhum artefato canônico foi
tocado — cinco arquivos de preview e validação, e nenhum dos 40 HTML do repositório.
Errata E-6C-01 (2026-08-13, achado na conferência de ambiente): título e selo declaravam
versões diferentes. O <title> do preview dizia "preview v0.3" e o selo na tela dizia
"preview v0.5" — duas declarações de versão no mesmo arquivo, discordando. A guarda HIG-03
passava verde porque media apenas presença de versão no título. O defeito importa porque o
título da aba é o primeiro sinal de arquivo fresco — três relatos de "não funciona" nesta
sessão foram cache, e um título que mente cega justamente o instrumento usado para detectar cache.
Correção estrutural, não sintomática: a versão passa a ter fonte única (constante
VERSAO_PREVIEW no gen-painel.py), consumida por dois marcadores do molde
(@@VERSAO_TITULO@@ no título, @@VERSAO@@ no selo, este com data e hora) — divergir deixa de
ser possível por construção. Preview bumpado a v0.6 porque o artefato corrigido tem de ser
distinguível do defeituoso na tela. Guarda de regressão permanente, creditada ao Rafael:
HIG-06 — título e selo declaram a MESMA versão; contra um artefato com a versão do título
plantada de volta em v0.3, a suíte reprova em exatamente 1, e a mensagem nomeia os dois
valores.
Escrito em 2026-08-12. Estes quatro blocos — KPI, ranking, progresso e timeline — são os buracos vermelhos que o censo de lacunas do
estudo-viver-de-ia.md(§6) encontrou e que a auditoria de impacto do marco da Fase 5 (§6b daquele arquivo) classificou como aditivos: nenhum exige supersede em algoestável. O achado estrutural do censo foi que os buracos não eram gráficos — eram componentes de dado que não são gráficos, uma classe intermediária sem dono entre o Bloco 6 (dados) e o DG (gráficos core). É esta seção.