Ir ao conteúdo
SEED engenhariaDesign System

Dataviz

5. Fronteiras e pendências abertas

seed-dataviz.md v0.22 · §05seção 10 de 1205-fronteiras-e-pendencias-abertas.md · MD5 75829f83
  • Gêmeos seed-tokens.json/seed-tokens.css a regenerar com a §3cENCERRADO em 2026-08-09, na promoção do DT (o prazo declarado era exatamente este gate). Os dois gêmeos foram para v1.4. Achado da execução: o débito era MAIOR do que o §7.0 dizia — os gêmeos declaravam v1.1 e não continham nenhum token do pacote mobile v1.2 (M1–M3: breakpoints, tipografia fluida clamp(), --seed-fs-field-touch, safe-area). A defasagem era de duas versões, não uma. Detalhe no §7.0 do seed-tokens.md v1.4, com o supersede formal da redação antiga da pendência.
  • DG não escritoENCERRADO em 2026-08-09 (§4, 13 decisões, estável).
  • DM não escritoestável desde 2026-08-11 (spec na v0.5 §4b, promoção pelo "aprovo" do Rafael sobre o lote de formalização). DP e DI não escritoso DI foi escrito na v0.9 (§4c) e fechado por inteiro na v0.12: DI-a e DI-b, ambos estável em 2026-08-11 (o DI-b por prova impressa física — item próprio abaixo). Resta o DPo DP foi escrito na v0.14 (§4d, DP1–DP14) e é estável desde 2026-08-11, por aprovação no gate visual sobre o preview v0.3. Ele abre seis pendências nominais próprias, DP-P1 a DP-P6, listadas no §4d.16; nenhuma bloqueia a spec e todas bloqueiam a promoção a estável. Fechado o DP, a Fase 5 fecha e o marco é disparado — e o marco tem um item obrigatório já decidido: a auditoria de impacto das lacunas do §6 do estudo-viver-de-ia.md (KPI/número-protagonista, ranking com barra embutida, progresso de conclusão, timeline e camada de movimento), para dizer, linha a linha, se cada lacuna é aditiva ou exige supersede em algo já estável.
  • PREVIEWS APROVADOS AUSENTES DO DRIVEFECHADA em 2026-08-11 (pendência P6 do MANIFESTO, aberta e fechada no mesmo dia). O Rafael reanexou os dois arquivos da pasta local de downloads dos cards; a conferência bateu 2/2: seed-dataviz-graficos-preview.html 82.126 B 8d1930598b9d124d3807fc80f70b0fbf e seed-dataviz-monitoramento-preview.html 30.166 B f146c84a3d140a892d1de87ee37d334c. As suites foram re-executadas contra os artefatos reais (163·0 e 85·0·6). Registro de método: a leitura de volta pegou a ausência antes de qualquer perda — na §1 do MANIFESTO, a mesma classe de defeito só apareceu depois de um arquivo ter sido sobrescrito.

Erratas abertas contra os previews aprovados (E1–E6, medidas em 2026-08-11)#

Todas nasceram da execução das suites contra os artefatos REAIS, depois do gate visual. Nenhuma altera decisão da spec — onde o preview diverge da spec, quem manda é a spec; a errata existe para que a divergência não seja lida um dia como se fosse regra.

AS SEIS FORAM CORRIGIDAS em 2026-08-11 (v0.7). Os previews passam a seed-dataviz-graficos-preview.html v1.3 e seed-dataviz-monitoramento-preview.html v0.8, e as suites fecham em 163 PASS · 0 FAIL e 105 PASS · 0 FAIL · 0 FAIL·DOC. Gate visual do Rafael em 2026-08-11: aprovado. As v1.3/v0.8 passam a ser os artefatos VIGENTES do DG e do DM; as v1.2/v0.7 seguem ancoradas no MANIFESTO como o registro do que sustentou as promoções. As três correções visíveis que motivaram o gate — E1 (medidores expõem role="meter"), E3 (troca de cor do "esperado" do ET5 e da hachura do no-data) e E5 (rótulo da pizza sai de dentro da fatia) — foram vistas e aceitas. As versões v1.2/v0.7 permanecem ancoradas no MANIFESTO como os artefatos que sustentaram a promoção do DM.

Sétimo ponto, achado durante a correção e tratado dentro da E3: a hachura do chart-no-data desenhava as linhas em cat-5-stroke — a mesma armadilha do ET5, e no lugar mais sensível possível, porque "sem medição" é justamente o que nunca pode parecer uma categoria. Passou a consumir chart-axis. Regra que sai daqui: posição categórica nunca serve de neutro. Quando um desenho precisa de "referência", "contexto" ou "ausência", ele consome um token com esse papel declarado (chart-no-data, chart-grid, chart-axis, ou cinza de contexto do DG17) — nunca cat-N, porque cat-N é uma posição de série e pode mudar de cor em qualquer supersede de paleta, como mudou.

# Errata (medida) Onde Consequência
E1 role="meter" não implementado no preview do DM — o arquivo só DESCREVE a regra num parágrafo explicativo (0 ocorrências do atributo) monitoramento v0.7 O DM4 não foi validado pelo gate visual, porque não havia o que ver. A regra permanece na spec e sua implementação real é do produto (useMeter do React Aria); o próximo preview do DM deve implementá-la para que o gate possa exercê-la com leitor de tela
E2 Sparkline a 1,6px; a hierarquia de traço — declarada em comentário no PRÓPRIO arquivo — manda 2px para dado monitoramento v0.7 Traço de dado abaixo do peso canônico, entre "estrutura" (1px) e "dado" (2px). Corrigir para 2px na próxima edição do preview; a spec (§4.6) não muda
E3 O "esperado" do gráfico ET5 consome chart-cat-5 monitoramento v0.7 Consequência não intencional do supersede da categórica: na v1.0 o cat-5 era cinza-400 (neutro, correto para uma referência), e na v1.5 virou violeta. Referência de comparação não pode carregar cor de categoria viva. O ET5 deve consumir tinta neutra (chart-no-data ou chart-grid); o medido segue em cat-1. Primeira consequência colateral medida do supersede — a classe de risco que qualquer troca de paleta cria
E4 Deriva de hex primitivo: 4 dos 17 primitivos embutidos divergem da rampa do §2.1, nos DOIS previews (o bloco de tokens foi copiado entre eles): cinza-300 #A9BCC8#ACBECA · cinza-50 #F5F8FA#F2F6F9 · cinza-800 #3A4A54#38464F · turquesa-300 #66D2C2#66D1C2. Somam-se os hex categóricos derivados inline no preview de gráficos (#4FC3E8, #00506F, #A8DCEF, #FFD166) ambos Nenhum veredito muda (remedição completa: espalhamento das bandas 9/10/19 light e 9/8/17 vs 10/8/18 canônico; tinta da meta 7,07 vs 7,24 — deltas ≤1 ponto). Mas prova que o bloco de tokens dos previews foi digitado, não copiado do canônico. Guarda que nasce daqui: preview novo deve importar o seed-tokens.css ou ter o bloco conferido contra a rampa por script
E5 Rótulo interno "45%" sobre a fatia cat-1 da pizza gráficos v1.2 Na paleta v1.5 mede 4,30 < 4,5 — o rótulo vai para fora com linha-guia (DG5-b remedido, §4.2). Defeito latente que só apareceu porque a regra é medida, não fixa
E6 <title> e texto de abertura dizem "preview v0.1" nos DOIS arquivos (as versões reais são v1.2 e v0.7); o do DM ainda cita "§3c do seed-tokens.md v1.4" ambos A "identificação positiva por leitura" do MANIFESTO §3.1 não funciona nestes dois arquivos — só o MD5 os identifica. É a mesma família do defeito da §1 (afirmação que não encontra o seu objeto), aqui invertida: o arquivo mente sobre si mesmo. Corrigir rótulo e referência na próxima edição
  • contraste-dg.py desatualizado (pendência P8 do MANIFESTO.md): ainda mede o DG11 (contorno morto) e a paleta antiga — e, o que só se soube em 2026-08-11, percorre apenas três séries, que são justamente as que passam. Reclassificada de higiene para guarda ausente: era ele quem deveria ter flagrado o colapso do modo claro acima de 3 séries. Especificação da reescrita no DI18 (§4c.12); a execução é lote seguinte, junto do preview e da suíte do DI.
  • Aliases gauge-band-* nos gêmeos: só nascem quando o produto consumir o medidor (fronteira declarada no supersede DM3 da §3c) — não antecipar.
  • Teto da empilhada (DG10-b): o racional de paleta caiu com a categórica v1.5; o teto de 4 permanece por não ter sido reavaliado em gate. Reavaliar (4→5) quando um caso real do ERP pedir, com preview e gate.
  • EMENDA DEVIDA ao seed-tokens.md §3c (regra GI2): registrar o colapso de claridade da rampa categórica escuraCUMPRIDA em 2026-08-11, na edição v1.5 da §3c (o gatilho GI2 "editar por outro motivo" disparou com a categórica estendida). O registro inclui a remedição com a paleta nova (75/75/71/71/67) e a consequência declarada: o DG13 permanece obrigatório.
  • Textura em série preenchida no IMPRESSO (DI): o DG13 hoje só dispara em escuro + grayscale, e o impresso sai do modo claro. Pela medição, o claro tem espalhamento suficiente (7 pontos)…TRATADA em 2026-08-11 (v0.9), e a redação acima continha uma ERRATA (E7). Os "7 pontos" eram da categórica v1.0, com três séries. Remedido com as seis posições da v1.5 em modo claro: pior par 1 ponto (cat-1 × cat-4 e cat-3 × cat-5). O claro não tinha margem estreita — tinha margem nenhuma acima de três séries. Resultado: DI2 supersede o gatilho do DG13 (§4c.2), que passa a grayscale ∩ (escuro OU ≥4 séries). O que a errata ensina: um número medido carrega o contexto em que foi medido; ao citá-lo depois de um supersede de paleta, o contexto tem de ser reconferido, não herdado. A pergunta original — se o modo de impressão entra no gatilho — segue ABERTA no DI-b, item abaixo.
  • DI-b — veredito do gatilho da textura no papel (DI3, §4c.3).FECHADO em 2026-08-11 por prova impressa física (folha de 7 itens, impressa em cor e em escala de cinza pelo driver). Veredito: o impresso NÃO entra no gatilho, porque não precisa — em cor as 6 séries se distinguem; em mono, que é grayscale por definição, o DI2 já dispara. Os dois pares que colapsaram a olho são os dois pares previstos pela medição em tela (cat-1 × cat-4 e cat-3 × cat-5, ambos a 1 ponto), sem falso positivo nem falso negativo. Consequência maior que o veredito: o piso de claridade é calibrado por FORMA, não por meio — supersede registrado no §4c.3 e no §6.
  • Empilhada 100%, waterfall, boxplot e combo de eixo duplo ficaram fora da v1 do DG (DG9). Entram quando o ERP pedir — a spec é aditiva, nenhuma delas mexe no que foi promovido.
  • Slot ET5 (gráfico do alerta de geração)ENCERRADO na v0.13 por supersede do DM8 (§4b): o e-mail de alerta não leva gráfico, leva símbolo de alerta. Racional do Rafael: um PNG único servido a todos os disparos carrega números que não são do destinatário, e um alerta que contradiz o próprio texto destrói a confiança que ele existe para ter. O dado real vive no sistema. O slot volta ao seed-email.md sem regra nova — o EC5 já manda rasterizar ícone sob demanda a partir do SVG normalizado, em /email/v1/icones/. Deixa de ser pendência da dataviz.
  • NM5 (ícones): se a F5 expandir o set de glifos (ex.: ícones de tipo de gráfico), dispara o seed-icones.md próprio — gatilho registrado, não disparado.
  • Skeleton/empty de gráfico (herdados do Bloco 3, 2026-08-04): entram no DG.
  • Gauge em grayscale (observado no render de 2026-08-09): o desenho canônico do gauge (DM) deve prever textura/hachura ou rótulo de faixaCUMPRIDA na v0.5: o DM entregou as duas previsões — rótulo textual de estado sempre visível (DM7) e textura por banda no gatilho escuro+grayscale (DM11). A prova impressa real continua no DI (o gatilho de textura no modo de impressão segue em aberto, item acima da textura no impresso).
  • Guarda nova nascida da promoção do DT — paridade-tokens.py (2026-08-09): a regra "o .md, o .json e o .css formam uma unidade; alterar um exige alterar os três" existia desde a v1.0 do seed-tokens.md sem nenhum detector, e por isso os gêmeos ficaram duas versões atrás sem que ninguém notasse — ler o .md não revela nada sobre o conteúdo dos gêmeos. O script mede 3 portões: G1 não-regressão (todo token do CSS anterior continua existindo, com o mesmo valor), G2 paridade (todo token do JSON tem contraparte no CSS, salvo isentos declarados), G3 cobertura (o inventário nominal da §3c e do pacote v1.2 está nos dois gêmeos, em light e dark). Placar na promoção: 43 PASS · 0 FAIL. Fato relevante de método: o G1 reprovou a primeira tentativa de regeneração — ela reescrevia o CSS inteiro a partir do JSON e, no caminho, renomeou --seed-sp-* para --seed-space-*, perdeu o composto --seed-focus-ring (que só existe no CSS) e serializou sombras/famílias/beziers como estrutura DTCG em vez de valor CSS. A entrega passou a ser por edição cirúrgica do arquivo anterior. Lição transferível: regeneração total a partir de um modelo incompleto perde token em silêncio; preservar bytes é mais seguro que reconstruir e conferir.
  • Matriz de render se CRUZA, não se amostra (2026-08-09, achado do gate do DG): a primeira matriz tinha 4 cenários e cobria claro+grayscale e escuro, mas nunca a combinação escuro+grayscale — que era exatamente onde estava o defeito. Amostrar combinações dá a sensação de cobertura sem a cobertura. A matriz passou a 6 cenários cruzando tema × grayscale × largura, e o render mede o fill resolvido pelo navegador, cobrando textura onde deve haver e ausência onde não deve.
  • Aprendizado de ferramenta (2026-08-09): o screenshot via CLI do Chrome (--screenshot --window-size=360,...) truncou a renderização à direita e simulou um overflow que não existia (scrollWidth medido: 360, zero elementos estourando). A camada de render da F5 usa puppeteer (viewport + fullPage), nunca o CLI — vale como requisito da futura suite de render do DG.

Erratas E9–E16 (nascidas na janela do sub-bloco DI, 2026-08-11)#

As E1–E6 (subseção acima) foram divergências do PREVIEW em relação à spec. Estas oito são de natureza mais variada — e três delas são de uma classe nova e desconfortável: correção declarada que não foi inteiramente aplicada, ou que foi aplicada sem remedir o que quebrou.

# Errata (medida) Onde Estado
E7 O §5 afirmava "o claro tem 7 pontos de espalhamento" — número da categórica v1.0 com três séries. Com as seis da v1.5 o pior par mede 1 ponto este arquivo, §5 RESOLVIDA — motivou o DI2
E8 A §3c do seed-tokens.md declara o fundo de referência dark como #1C252B; o token real é #1D272D. Causa raiz achada depois: o número foi copiado do preview, que embutia o valor errado — não do token seed-tokens.md §3c aberta; emenda registrada
E9 seed-dataviz.md v0.8 (74.897 B) ficou sem âncora no MANIFESTO.md, que ainda ancorava a v0.7 MANIFESTO.md §3.7 fecha na edição do MANIFESTO deste lote
E10 As cópias v1.5 de seed-tokens.json/.css em validacao/ não são declaradas em lugar nenhum. Mantidas de propósito pelo Rafael como insumo histórico da execução do paridade-tokens.py validacao/ declarar em prosa, como já se faz com o LEIA-ME
E11 Pizza de 5 séries sem textura alguma. Violava o DG13 já na redação ANTIGA — o gatilho escuro ∩ grayscale se aplicava a ela e nunca foi implementado. Não é consequência do DI2; o DI2 apenas tornou visível preview do DG v1.3 CORRIGIDA na v1.4
E12 O §6 deste arquivo afirmava, na linha do supersede do gatilho, que "a suite extrai todos os seletores que ligam textura e exige as duas condições em cada um". A suíte não tinha nenhuma seção de DG13. 163 verificações, zero sobre a regra que o gate humano criou §6 · suite-dataviz-dg.mjs CORRIGIDA — seção DG13/DI2 com 11 verificações + E3/E13 com 2; suíte vai a 176 PASS · 0 FAIL
E13 A hachura do chart-no-data apontada para chart-axis pela E3 mede 2,80 contra o preenchimento — abaixo do piso de 3:1. A E3 trocou um valor certo com semântica errada por um valor errado com semântica certa seed-tokens.md §3c RESOLVIDA — token próprio chart-no-data-hatch (v1.7): 3,93 light · 3,84 dark
E14 A correção da E3 foi PARCIAL. Ela trocou a tinta da hachura apenas no swatch da legenda; os dois <pattern> SVG que desenham a hachura de verdade continuaram em chart-cat-5-stroke — ou seja, em violeta — desde a v1.5. Quatro ocorrências preview do DG v1.3 CORRIGIDA na v1.4
E15 Terceira ocorrência da mesma armadilha: a série "Esperada" do gráfico medida × esperada consumia cat-5-stroke. É referência, não categoria preview do DG v1.3 CORRIGIDA na v1.4 — passa a cinza de contexto (linha 4,74 · rótulo 6,55), o mesmo papel que o preview do DM adotou na E3
E16 Deriva de 19 tokens SEMÂNTICOS no bloco embutido do preview, contra o canônico: surface-page/raised/subtle dark, text-primary/secondary/inverse dark, toda a família feedback-danger, border-* dark, chart-grid, chart-positive, chart-negative, chart-no-data. A E4 achara 4 primitivos; ninguém tinha auditado os semânticos preview do DG v1.3 CORRIGIDA na v1.4, por script a partir do canônico — que é literalmente a guarda que a E4 pediu

| E17 | vector-effect não é herdada (SVG 2: Inherited: no). Declará-la num <g> é inócuo — não alcança os <path> filhos. A primeira escrita do preview do DI cometeu isso; o preview do DG sempre fez certo, por seletor universal .seed-chart__plot svg *, que atinge cada elemento individualmente | preview do DI v0.1 | CORRIGIDA na v0.2 — regra por seletor universal + teste DI6-04 que reprova qualquer <g> carregando o atributo. A lei do §4.6 estava certa; o que faltava era a implementação que a torna verdadeira |

A classe de defeito que E14 e E16 expõem, e que vale mais que as erratas em si. A E3 foi declarada corrigida em 2026-08-11 e o arquivo nunca foi lido de volta no ponto corrigido — conferiu-se o MD5 (que muda com qualquer edição) e o placar da suíte (que não media aquilo). É a assinatura exata do defeito da §1 do MANIFESTO.md, agora numa variação mais sutil: não é "a propagação foi afirmada e não aconteceu", é "a correção foi afirmada e aconteceu pela metade". Regra que fica: correção de errata é verificada pela medição do que ela prometia consertar, não pelo fato de o arquivo ter mudado. Se a errata dizia "a hachura não pode ser categórica", o teste é varrer TODAS as hachuras — foi o que o NEU-01 passou a fazer.

A E16 fecha um ciclo aberto pela E4 e explica a E8: a §3c copiou o fundo de referência dark do preview (#1C252B) em vez de copiar do token (#1D272D). Bloco de token digitado à mão não contamina só o artefato — contamina o canônico que o cita.

Emendas devidas a outros arquivos canônicos#

Arquivo Emenda Quando
seed-email.md v0.11 Referenciar o PNG do gráfico do alerta (ET5) quando existir Spec pronta (DM8); dispara quando o PNG @2x existir no R2
seed-componentes.md v0.47 Sparkline dentro da tabela §40 (célula de tendência) Gatilho cumprido — gate do DM confirmou (DM5/DM6, §4b). A emenda entra na próxima edição real do seed-componentes.md (regra GI2), referenciando o contrato decorativo do DM6
seed-tokens.md v1.6 §3c ERRATA E8 (medida em 2026-08-11): a §3c declara o fundo de referência do dark como cartão surface-raised #1C252B; o valor real do token no seed-tokens.css é #1D272D. Corrigir o hex citado Nenhum veredito muda — remedi as 6 séries contra os dois valores e os deltas ficam entre −0,16 e −0,24 (cat-1 8,50→8,31 · cat-6 10,66→10,42), todos com folga enorme sobre o piso de 3:1. Entra na próxima edição do arquivo por outro motivo (regra GI2), como a E3 entrou
seed-componentes.md v0.47 §44 O GI1 descreve a cadeia de 3 camadas para componentes de UI; para gráfico há um 4º salto (--chart-NchartConfigvar(--color-CHAVE)), especificado no DI11 (§4c.11) Não é conflito: o GI1 continua correto no seu domínio. A emenda é uma referência cruzada, a entrar na próxima edição real do seed-componentes.md (regra GI2)
MANIFESTO.md v1.1 Linhas deste arquivo, do seed-tokens.md e do contraste-dataviz.py CUMPRIDA em 2026-08-09MANIFESTO.md v1.2 ancora os artefatos da F5 (e fecha de quebra a pendência P4, do marco v1.5)

Esc