Ir ao conteúdo
SEED engenharia

Roadmap

s11. F10 — Material: vidro e metal

estávelseed-ds-roadmap.md v2.168 · §s11seção 12 de 19s11-f10-material-vidro-e-metal-fechada-em-2026-09.md · MD5 ff0a2086

Título completo no canon: F10 — Material: vidro e metal ✅ FECHADA em 2026-09-13 — F10.1 a F10.6 (aberta em 2026-09-12 pelo veredito dele V-1 = B, MANIFESTO §204; fechada no §213). O marcador desta linha ficou "⚪ ABERTA" até 2026-09-14 com as seis fases ✅ — corrigido no §217.1; é a mesma classe que a v2.42 e a linha da F9 registram.

Por que existe. Pedido dele em 2026-09-12, verbatim: "Estou achando as telas criadas com o DS muito basicas, botoes, barras, menus etc. ta faltando alguma coisa. Faça uma pesquisa profunda sobre aplicação de liquid Glass metalizado em DS de grandes empresas, ou algo parecido. e gere 2 exemplos, um com o DS atual e outro com a aplicação das melhorias para eu comparar." A pesquisa e o par de telas estão em 09-pesquisa/material-vidro-metal-2026-09-12/ (pesquisa.md · material.css · compositor.py); o diagnóstico medido: um material só para navegação e conteúdo, fundo sem luz, luz só no hero, estados chapados, quase nenhum movimento. Ele decidiu B — adotar a proposta inteira (mesma marca; muda material, profundidade e movimento), com o alcance marcado em V-3: fundo com luz · barra superior em vidro · rail em metal · cartões em vidro · botões primários em metal · números KPI com brilho · barras e pílulas com luz · micro-movimento. A sidebar NÃO foi marcada e fica como é hoje (peça opaca) — aplicado como marcado, exposto a veto (MA-P4).

O que a pesquisa manda cuidar (fontes datadas no pesquisa.md): vidro é da camada de navegação, nunca do conteúdo denso (Apple, Fluent); opacidade ≥ 0,7 sobre fundo que não se controla (convenção de mercado); todo estado de sistema respeitado (sem backdrop-filter, reduzir transparência, mais contraste, reduzir movimento → sólido/parado); a Apple recuou três vezes em um ano por legibilidade; Microsoft desliga acrílico em economia de bateria. E o que a folha não mediu: contraste efetivo sobre vidro (o render-contraste.mjs aborta em fundo composto) e custo de GPU no SIGA real.

brick entrega governa custo declarado estado
F10.1 Tokens de material: --seed-mat-* no seed-tokens.json (DTCG) + gêmeo CSS + seed-tokens.md (v1.24): opacidade do vidro por tema, desfoque, saturação, especular, borda de vidro, sombras de vidro em camadas, luz do fundo, curvas do metal; e os fallbacks como regra escrita V-2 dele (80 % · 72 % · 18 px); piso ≥ 0,7 0,5 sessão ✅ 2026-09-12 — 18 tokens no grupo semantic.mat (+2 derivados só do gêmeo: --seed-mat-glass, --seed-mat-glass-filter); seed-tokens.md v1.24 §3d; fallbacks executáveis no gêmeo (sem backdrop-filter, reduced-transparency, contrast: more, reduced-motion); adição pura — paridade-tokens.py 110 PASS · 0 FAIL, gêmeo 330 → 350 variáveis; o fundo com luz é derivado da rampa turquesa (os hex do estudo não existem na paleta e não entraram); o 20 % de metal do gate não virou valor (MA-P5). MANIFESTO §205
F10.2 Canon: seção "Material" no seed-componentes.md (a numerar depois da última viva) — onde vai vidro (barra superior, cartões, pílulas), onde vai metal (rail, ação primária, avatar), o que fica opaco (sidebar, tabela, lista densa, conteúdo), o fundo com luz, movimento com função e desligável, os fallbacks; regra de contraste do metal: gradiente só do token para o lado escuro pesquisa §1; CP20 (a tinta passa nos dois extremos) 0,5 sessão ✅ 2026-09-12 — seed-componentes.md v1.48 §93 "MATERIAL — vidro e metal", decisões MA1–MA12 (onde vai vidro · onde vai metal · o que fica opaco, sidebar inclusive · fundo com luz só na casca, mantendo surface-subtle declarado · micro-movimento desligável · fallbacks no token · régua RC obrigatória · emissão pelo módulo único · tinta de marca no vidro = -strong · nenhuma textura de período fixo · calibração por peça · alcance declarado), receitas por peça, medições da primeira aplicação e calibrações registradas; estado emitido · em gate (F10.4). Na mesma edição: errata E-CF-06 no §46 e a pendência SH-P9. MANIFESTO §206
F10.3 Régua: contraste rasterizado sobre vidro — renderiza a tela, apaga o texto (cor transparente), amostra os pixels atrás de cada caixa de texto e mede o pior pixel contra a tinta declarada; entra no rito (fechar.sh) para toda tela com data-material "quem cria um fundo novo cria a obrigação de medir o contraste sobre ele" (HV1) 1 sessão ✅ 2026-09-12 — 06-validacao/contraste/contraste-raster.mjs (contrato RC: duas capturas, com e sem texto; máscara de glifo por diferença, cobertura ≥ 0,5; pior pixel contra a tinta) + guardas/guarda-material.py no fechar.sh (9ª guarda) + cobaia provas/contraste-raster/ com placar escrito antes (reprova 1,22 e 3,38 exatos). Provada no canon: tela-painel 298/299 textos passam, pior pixel 4,60 = o mesmo par do contraste-composicao.mjs; tela-shell acusou o que nenhuma régua via — o rótulo do item ativo do rail vaza 1 px da pílula sobre o gradiente (2,08 → MA-P6). A MA-P1 foi medida (ver a tabela de pendências). Bloqueio da promoção a canon levantado; a F10.4 roda a régua em toda tela que ganhar data-material
F10.4 Aplicação, lote 1: shell §46 + painel §48 pelos GERADORES (gen-shell.py, gen-painel.py), a camada de material emitida do token (nunca CSS copiado); régua F10.3 verde; gate visual nos dois temas V-3 0,5 sessão ✅ 2026-09-13 — gate dele (MANIFESTO §207, verbatim): "V-M1 shell: aprovo · V-M2 painel: aprovo · V-M3 metal do rail: 1 · V-M4 sidebar: vidro · veto: nenhum"; a §93 vira estável (v1.49), a sidebar entra no vidro (gen-shell v0.9, régua RC 71/71 nos dois temas), o rail fica no token. Do gate nasce a SH-P10 (a barra do item ativo do rail). Entregue em 2026-09-12: nasce 06-validacao/ferramentas/material_bloco.py (módulo único: tokens --seed-mat-* medidos no gêmeo, fallbacks extraídos verbatim, receita por peça); gen-shell.py v0.9 e gen-painel.py v0.16 emitem a camada e declaram data-material="vidro-metal" — as duas telas entram na régua RC do rito: 0 texto abaixo do piso nos dois temas (shell 71/71 · painel 298/298 claro e 299/299 escuro). O caminho até o zero mudou quatro coisas: MA-P6 consertado no gerador; a tinta de marca no vidro remapeada para text-brand-strong (9 textos em 4,42–4,49 → passam); tokens v1.25 (a luz do canvas escuro cai de 40/26 para 26/18 % — o micro-rótulo do KPI media 4,41); e a calibração por escopo, que não fazia nada (o var() resolve onde é declarado), passou a reemitir os tokens no escopo. Suítes próprias verdes (suite-shell 72·0, render-shell 34·0, suite-painel 146·0, render-painel 37·0, render-edicao 142·0, render-contraste 6·0, colisão 4·0, valor-gêmeo 2·0, forced-colors 4·0, TP1 2·0). Gate visual dele: folha com as duas telas nos dois temas, a calibração do rail (1 · 0,7 · 0,4 medidos: 4,73 · 5,38 · 5,86) e a sidebar (MA-P4) — endereço no MANIFESTO §206 e na memória da sessão. Vira ✅ com o veredito. MANIFESTO §206
F10.5 Aplicação, lote 2: as outras telas com gerador — contadas em 2026-09-13, são oito (chat, detalhe, gantt, lista, quadro, referência, tabela e o site; esta linha dizia "7"); lote 3: as seis telas SEM gerador (atividade, autenticação, busca, configurações, documento, onboarding — a linha dizia "7") só depois do gerador delas (VT-P1/P3, MA-P3) regra §14.4 (edita-se o gerador) 1 sessão + o brick VT ✅ 2026-09-13 — gate dele no mesmo dia (MANIFESTO §212, verbatim): "V-M5 chat: aprovo · V-M5 detalhe: aprovo · V-M5 gantt: aprovo · V-M5 lista: aprovo · V-M5 quadro: aprovo · V-M5 referencia: aprovo · V-M5 tabela: aprovo · V-M6 luz do topo do rail: 8 · V-M7 site: a · veto: nenhum" — as sete telas aprovadas como geradas, a luz do rail fica em 8 % e o site fica sem a camada até a MA-P2 (a linha desta fase o incluía no lote; a decisão dele o tira até a medição de GPU). Entregue em 2026-09-13: as sete telas de aplicação emitem a camada pelo material_bloco.py (gen-tela-chat v0.2, detalhe v0.3, gantt v0.2, lista v0.4, quadro v0.2, referência v0.3, tabela v0.3; regeneração byte-idêntica), com data-material no <html> — nove telas na régua RC do rito, 18/18 medições sem texto abaixo do piso. A régua achou o ponto cego da F10.4: a luz do topo do metal do rail (30 %) derrubava o primeiro rótulo branco a 3,25–4,27 em seis telas (o shell passara porque o item ativo ocupa a primeira posição); tokens v1.26 (8 % no topo; pior 4,69; MA2 aplicada), com a alternativa sem luz renderizada na folha. Três instrumentos aprenderam a camada com o sinal certo (RAIL-02, SH1-c, rota 1 do contraste-composicao) e o material_bloco.completar() deriva a lista de tokens. O site (§47) foi renderizado como variante e vai ao gate como pergunta (V-M7); o gerador não o emite até o veredito. Folha do gate F10.5: sete telas nos dois temas (V-M5), a luz do topo do rail 8 % × 0 % (V-M6), o site (V-M7) e o veto. Vira ✅ com o veredito. MANIFESTO §211
F10.6 Vitrine e registry: página /material/ gerada (regra + render vivo + controles), o registry ganha a camada (esta linha dizia @seed/theme; a forma certa, medida na implementação, é um item PRÓPRIO @seed/material — o tema do shadcn só carrega apelidos de cor), skill seed-ds herda por geração; a bancada de desempenho para a lista longa (MA-P2) nasce na própria página MK23 (qualquer IA acha, lê, cita, usa) 0,5 sessão ✅ 2026-09-13 — registry: 4.º item @seed/material (seed-material.css, classes .seed-mat-* emitidas pelo material_bloco.py, sob data-material; guarda RG-8) · vitrine: /material/ (regra byte a byte, amostra viva montada só com o registry, controles ao vivo, telas com a camada medidas no disco, bancada da MA-P2 com window.seedMatMedir) e a página de cada tela diz se carrega a camada · skill: passo do material no modo código (versão 2026.09.13+5202b3cc). Guardas: RG 7·0, VT 14·0, SK 10·0; regeneração byte-idêntica dos três. A bancada mediu nesta máquina de desenvolvimento (8 núcleos, 16 GB, Chrome 153): 8,3–8,9 ms por quadro com e sem a camada até 240 cartões — custo indistinguível aqui; a máquina de campo é o que fecha a MA-P2. MANIFESTO §213

Pendências da fase (nascem aqui, com código):

código origem o que é dono estado
MA-P1 folha do gate, §4 "não medi" contraste efetivo sobre vidro não foi medido por instrumento; a proposta NÃO vira canon sem a régua F10.3. MEDIDA em 2026-09-12 pela régua da F10.3 nos dois quadros do estudo (1180 × 800, 42 textos por tema, pior pixel atrás de cada glifo): sobre vidro e luz nenhum texto cai abaixo do piso em nenhum tema. O custo do material está nos rótulos brancos do rail sob o reflexo do metal — Projetos 7,47 → 4,79 · Obras 6,59 → 4,79 · Compras 7,26 → 5,17 · Finanças 7,06 → 5,42 (piso 4,5: margem de 0,29) — e no KPI com tinta em gradiente (13,72 → 7,53, piso 3,0). 27 de 42 textos perdem contraste no claro e 26 no escuro, todos acima do piso. O único FAIL (Comercial 2,08 → 2,67) é pré-existente do canon (MA-P6). Registro com as tabelas: 09-pesquisa/material-vidro-metal-2026-09-12/regua-raster-2026-09-12.md sessão ✅ medida · o reflexo do rail (metal-sheen a 30 % no topo) é a primeira calibração da F10.4
MA-P2 pesquisa (Microsoft: acrílico é GPU-intensivo) custo de backdrop-filter no ERP real (dezenas de cartões numa lista longa); vidro fora do chrome espera a medição em máquina de CAMPO. Instrumento pronto desde 2026-09-13 (F10.6): a bancada em https://ds.seed.eng.br/material/#sec-custo (N cartões de vidro, rolagem de 3 s, quadros com e sem a camada; window.seedMatMedir(n, ms) para agentes). Primeira medição, máquina de desenvolvimento (8 núcleos, 16 GB, Chrome 153, 1440 px): 60/120/240 cartões → 8,3/8,9/8,4 ms por quadro com a camada, 8,4/8,3/8,3 sem; p95 8,5–8,6; um quadro de 133 ms na montagem de 120. Segunda medição, 2026-09-14, máquina dele (8 núcleos, 16 GB, DPR 1,25, janela 1536 px, Chrome 153; 120 cartões): 8,5 ms por quadro com a camada, 8,4 sem; p95 8,6 nos dois; pior quadro 41,7 × 16,8 (um quadro, [inferência] o da montagem); 0 de 353 e 0 de 359 acima de 50 ms — indistinguível também aqui, mas é máquina de porte de desenvolvimento. Ele vai medir hoje em outras máquinas e mandar todos os resultados (MANIFESTO §216.1); fecha quando a mais fraca delas estiver medida sessão · medições dele Cinco medições dele em máquinas da empresa, 2026-09-14 (MANIFESTO §220.2, transcritas das capturas; DPR 1, Chrome 152, 120 cartões, 3 s): 24 núcleos · 32 GB · 1278 px e 12 núcleos · 16 GB · 1920 px → 16,7 ms médio e p95 com e sem, 0 quadros acima de 50 ms; 12 núcleos · 16 GB · 2560 px → um quadro de 33,4 ms com (0 acima de 50); 4 núcleos · 8 GB · 2560 px (duas medições) → médio 17 ms, p95 16,8–16,9, um quadro de 50,1 e de 66,9 ms com a camada (1 de 177 e 1 de 176), 17 ms sem. Leitura: 16,7 ms é o intervalo do monitor de 60 Hz — as duas cenas seguram a taxa em todas; o custo é UM quadro isolado nas máquinas de 4 núcleos a 2560 px (a contagem de quadros bate com um único evento); a posição do quadro na rolagem [não conferido] — a bancada passou a informá-la (§220.3). Sete medições em cinco portes ✅ FECHADA em 2026-09-14 por veredito dele (MANIFESTO §221.1, verbatim: "V-MA2.1 MA-P2: fechar · V-MA2.2 site: a · veto: nenhum"): o MA12 do §93 (componentes v1.56) libera vidro fora do chrome com o piso de campo escrito; o site recebe a camada (tela-site.html v0.3, §47); a bancada continua pública e diz em que quadro caiu o pior intervalo
MA-P3 F10.5 6 das 16 telas de referência não têm gerador (atividade, autenticação, busca, configurações, documento, onboarding — VT-P1/P3; esta linha dizia 7 até 2026-09-13): a camada de material não pode entrar nelas sem antes nascer o gerador. Estado em 2026-09-13: 9 telas com material (shell, painel e as sete da F10.5), o site SEM a camada por veredito dele (V-M7 = a, até a MA-P2), 6 esperando gerador 🟡 EM GATE desde 2026-09-14 (MANIFESTO §217): as seis telas ganharam gerador (porte byte-idêntico salvo o selo do bloco de tokens; gen-tela-atividade/autenticacao/busca/configuracoes/documento/onboarding.py + moldes), e CINCO receberam a camada pelo material_bloco.py (documento fica sem, por C25 + MA3). Régua RC 0 FAIL em 14 de 14 telas nos dois temas; a linha de base no HEAD achou 10 textos de dívida pré-existente (tinta de marca sobre brand-subtle, 4,28 — corrigidos com text-brand-strong, §5-g; o acervo inteiro virou CT-P9). Folha do gate: V-P3.1–V-P3.5 + veto. **Veredito dele em 2026-09-14 (MANIFESTO §218.1), verbatim: "V-P3 atividade: aprovo · V-P3 autenticacao: aprovo-com-luz — uma observação, a logo está aplicada de maneira errada (…) V-P3 busca: aprovo · V-P3 configuracoes: aprovo · V-P3 onboarding: aprovo · veto: nenhum". A observação da logo é a MR-P18 (defeito de agosto, não do material); a MA-P3 fecha quando ela fechar sessão · veredito dele ✅ FECHADA em 2026-09-14 — veredito verbatim (MANIFESTO §220.1): "V-F11.2 login: aprovo" (a MR-P18 fechara no mesmo dia)
MA-P4 V-3 dele a sidebar não foi marcada em "onde aplicar"; fica opaca como hoje. Se foi esquecimento, uma palavra dele a inclui ele ✅ fechada em 2026-09-13 — "V-M4 sidebar: vidro"; aplicada no gen-shell.py (receita vidro, a mesma da barra superior) e medida: shell 71/71 nos dois temas, pior pixel 4,52/4,60 (pares pré-existentes)
MA-P5 V-2 dele o "escovado" do rail (traço de 1 px repetido) virava moiré ao escalar — ele baixou o metal a 20 % por isso. Consertado em 2026-09-12 (o traço saiu; textura por grão + reflexo); a calibração final do metal por peça é da F10.4, com o render na mesa sessão ✅ consertada no estudo · calibração na F10.4
MA-P6 régua F10.3 aplicada ao canon (tela-shell.html, 2026-09-12) o rótulo do item ativo do rail ("Comercial", 11 px/800, caixa alta) vaza 1 px da pílula arredondada sobre o gradiente do rail: um pixel de glifo com cobertura total mede 2,08 (turquesa-900 sobre #006A60) — 0,4 % dos pixels do rótulo, nos dois temas. Invisível para o contraste-composicao.mjs (a pílula pinta cor opaca e a rota "cor declarada" não olha pixel). Evidência: 09-pesquisa/material-vidro-metal-2026-09-12/evidencia-raster/rail-comercial-1px-6x.png. Conserto em gen-shell.py (pílula mais larga, ou rótulo menor) no lote 1 da F10.4, que já toca o shell — nunca no HTML sessão ✅ fechada em 2026-09-12 (F10.4): medido antes de mexer — "COMERCIAL" a 800 media 71,5 px num item de 72 px (o papel micro passou a 11 px na v1.14 e a conta do SH3 era de 9 px); conserto no gen-shell.py v0.9 (o rótulo consome o tracking do papel, −0,2 px → 67,7 px; max-width: 72px como rede), errata E-CF-06 no §46; régua RC: shell sem texto abaixo do piso nos dois temas; render-shell 34·0
SH-P9 F10.4 (medição do MA-P6) o shell e o painel pedem font-weight: 800 (rótulo ativo do rail, KPI, botão da solução, sujeito do hero) e os moldes só carregam Montserrat 400/500/600/700 — não há ExtraBold em 03-assets/fontes/montserrat/: o navegador sintetiza o 800 a partir do 700 (medido: 700 e 800 têm o mesmo avanço, 69,52 px). A guarda TP1 não vê (mede se as faces declaradas carregam, não se os pesos pedidos têm face). Saídas com custo no §46 do seed-componentes.md v1.48: (a) trazer o ExtraBold e re-medir o rail; (b) baixar os 800 para 700 sessão · veredito dele ✅ fechada em 2026-09-14 por aplicação da sessão, exposta a veto (MANIFESTO §223.4) — medido antes de aplicar: NÃO havia síntese (o Chrome só sintetiza quando a face casada pesa < 600); o 800 rendia 700, pixel-idêntico (0 px em 4 telas × 2 temas, duas medições). Saída (b) no acervo inteiro: 26 moldes, token titulo-tela (tokens v1.27), 2 geradores, 3 asserts, canon §46/PN13/BU-02; a alternativa (a) renderizada e descartada (marca §4.1/§4.3); TP1-d conta peso sem face
CT-P9 MA-P3 (MANIFESTO §217.5 e §217.7, 2026-09-14) tinta de marca sobre a superfície suave reprova no pixel — no acervo inteiro. A linha de base das cinco telas portadas achou 10 textos com text-link (#098475) sobre surface-brand-subtle (4,28) ou surface-subtle (4,23), todos anteriores ao material e invisíveis às réguas por cor declarada (o par É o declarado). O canon já tem a resposta desde a v1.19 (tokens §5-g, text-brand-strong: 5,82 sobre surface-subtle); corrigido só nas cinco telas. Falta: (1) censo do par no acervo com a régua RC (chips do §22, avatar com inicial, item ativo de navegação, bancadas e peças — hoje NÃO MEDIDO, a RC só roda em tela com data-material); (2) a regra no canon (§22, §46, §48 prescrevem -strong sobre as superfícies suaves, ou o gêmeo escurece text-link) — decisão com custo medido sessão · censo sem gate; regra em gate ✅ FECHADA em 2026-09-15 (MANIFESTO §224.1–§224.2) — veredito dele, verbatim: "V-CT9 regra: a": a regra entrou como linha nova na gramática do §73.5 (seed-componentes.md v1.58) com notas nos §22.2, §32.2 e §46.5 e nota datada no §5-g do seed-tokens.md; nenhum token muda; (b) descartada por ele. Histórico: censo feito em 2026-09-14 (MANIFESTO §223.3), regra em gate (V-CT9): régua RC em 208 de 208 HTML rastreados de 05-html-de-referencia/ e 07-pecas/ (20.694 textos; 04-email/ fora, declarado) — zero ocorrências do par em bancadas e telas; as duas únicas vivas eram o rótulo do cabeçalho de duas folhas de gate (gen-capas-rede, gen-destaques-instagram: primitivo turquesa-600 sobre surface-subtle, 4,23) — corrigidas para text-brand-strong (aplicação, §5-e/§5-g). Saídas para o gate: (a) regra nos §22/§32/§46/§73.5 e tokens §5-g (custo residual: zero ocorrências) · (b) escurecer text-link no gêmeo (= turquesa-700 = text-brand-strong; muda 412 textos renderizados dos quais 404 passam hoje, 17 pastas de peça a re-renderizar; supersede a decisão de 2026-08-20). Recomendação: (a). Os outros pares abaixo do piso que o censo achou viraram CT-P10
CT-P10 censo RC da CT-P9 (MANIFESTO §223.3, 2026-09-14) · 🟡 parte aplicada em 2026-09-15 (MANIFESTO §225.4): tela-detalhe com text-brand-strong no rail lateral e o banco-dataviz-tokens portado (molde + gerador; o 3,90 era opacity:.9, o 2,92 era um toast transiente) — RC claro 0 de 81; em gate: V-CT10.1 frota (a régua reprovou a ANOTAÇÃO do mock, não o adesivo — o adesivo é texto em SVG, que a RC não lê) e V-CT10.2 as quatro peças aprovadas (16 PNG mudam se tudo for aprovado); os dois pares escuros do dataviz e a leitura de SVG viraram CT-P11 outros pares abaixo do piso achados pelo censo de 208 artefatos (tema claro, repouso, 1440 px) — 50 textos em 16 arquivos: as-built-lombada (separadores "·" em tinta de marca sobre turquesa-800, 2,04); 11 mocks de frota (texto sobre a lataria renderizada, 2,21 — decidir se a RC é a régua certa para adesivo sobre carro, ou declarar isenção nomeada); envelope-oficio-frente-mock e sinalizacao-restricao-acesso (cinza-500 em texto pequeno, 3,11/3,38); banco-dataviz-tokens.html (sem gerador e sem tema, 2,92 — o "600" mede fundo #219083 onde o declarado é #098475); diario-os-tela (4,46 sob a luz do rail); tela-detalhe .det-rail button[aria-current] (o par da CT-P9 num botão só de ícone: 4,23 ≥ 3,0, mas é o mesmo par — 1 linha no molde). Todos pré-existentes, nenhum visto por régua por cor declarada. Também: a RC no rito só cobre as 15 telas com data-material — cobrir todo 05-html-de-referencia/ custa ≈ 3 min por rito (medido: 2,3 s por arquivo/tema) sessão · o dos mocks de frota é decisão dele ✅ FECHADA em 2026-09-15 (MANIFESTO §227) — V-CT10.1 = c+b e V-CT10.2 = sim ×4: os cinco geradores aplicados, 26 HTML e 16 PNG de peça regenerados (12 mocks de frota com a legenda em cartão; lombada, envelope, sinalização, diário), nota no marca §12.22 e no tokens §5-g; a leitura de <text> de SVG pela RC é a CT-P11
SH-P11 LC-11 (MANIFESTO §223.5, 2026-09-14) · ✅ FECHADA por aplicação em 2026-09-15 (MANIFESTO §225.5), exposta a veto visual (V-SH11): nasce o módulo único shell_bloco.py; as dez telas compõem a casca real (CP-13 11 de 11 PASS, RC 30 de 30, byte-idêntico 11 de 11); SH17 ganha a coluna "rail funcional (medido)"; .sidebar do painel de conteúdo virou .escopo; sobras em SH-P12 e CP-P7 dez telas de referência "com casca" têm casca ILUSTRATIVA e violam SH7/SH8: só a tela-shell tem rail funcional (nav[aria-label="Áreas"]); nas outras dez o rail é div role="img", o main não tem id nem tabindex="-1", não há skip link, e tela-configuracoes repete um aria-label de nav; e a classe .sidebar nomeia dois componentes (a sidebar do shell, 280 px, e o painel de conteúdo "Escopo" de quadro/detalhe, 250 px). A tabela SH17 (§46.4) conta class="rail" e não distingue funcional de ilustrativo — quem copia casca de outra tela que não a tela-shell copia casca de mentira. Saídas: (a) as dez telas passam a compor a casca real do gen-shell (módulo único), (b) a tabela SH17 ganha a coluna "rail funcional (medido)" e a régua CP-13 aceita casca ilustrativa como NÃO SE APLICA declarado. Custo a medir por tela sessão · gate visual se a casca mudar ✅ fechada em 2026-09-15 (MANIFESTO §225.5; a célula de estado ficou ⚪ por descuido — corrigida em 2026-10-09, §296.1)
FT-P2 SH-P9 (MANIFESTO §223.4, 2026-09-14) · 🟡 medida em 2026-09-15 (MANIFESTO §225.3): censo 260 de 260 em 53 HTML (Mono 600 ×141, Mono 900 ×12, strong em 700 ×12, itálico ×76, 800 residual ×10 — aplicado, 0 px —, Light 300 ×9 na tela-documento sem face carregada); registry 214 KB → 397 KB se tudo entrar; em gate: V-FT2.1 a V-FT2.4 (bytes e pixels medidos, cenas S1–S8); banco-cn carrega Google Fonts (GI5) — no escopo pesos e estilos pedidos sem face, contados pela TP1-d (260 elementos na primeira rodada da guarda com a cláusula, 2026-09-15; o ensaio do agente sobre o espelho contava 177 em menos alvos): JetBrains Mono 600 (×18) e 900 (×5) — a mono só tem 400/500/700; <strong> dentro de texto 700 computa 900 e rende 700, então o negrito some ("9 de 14", "1 em atraso" no painel); itálicos em Montserrat sem face itálica (oblíquo sintético, ×5). Saídas com custo: trazer as faces (Mono 600/800, Montserrat itálico — bytes de subset a medir) ou declarar no canon que strong em texto 700 usa outro mecanismo (cor, tamanho). Também: nameID3 dos cinco TTF diz Montserrat-Thin; a marca §4.1 diz "300/400/600/700 carregados" e os moldes carregam 400/500/600/700 sessão · veredito dele sobre trazer face ✅ FECHADA em 2026-09-15 (MANIFESTO §227) — V-FT2.1 = b, 2.2 = c, 2.3 = b, 2.4 = b aplicados: censo TP1-d 260 → 76 em 53 HTML (só o itálico aceito), 0 px onde o veredito era "declarar o que se vê", só a tinta muda nos 24 negritos; marca §4.1 v5.47, componentes §75.8 v1.61; os 5 TTF com nameID3 corrigido entraram pela MR-P19
FF-P4 LC-05 (MANIFESTO §225.4-b, 2026-09-15) o token fantasma --seed-action-primary-bg (e -text) segue VIVO em 11 citações de 6 seções do seed-componentes.md (§9 ×4, §10 ×3, §14, §20, §22 ×2) e a guarda-spec-gemeo.py os isenta com a frase "as 17 menções são o registro do conserto" — falsa: só 3 são registro (§8, §67). Proteção afirmada que não existe. Conserto: citações para --seed-action-primary/on-action-primary; isenção da SG1 restrita às seções de registro sessão · aplicação ✅ FECHADA em 2026-09-16 (MANIFESTO §232.3) — correção ao enunciado: eram 10 citações vivas (não 11, uma já resolvida pela LC-05 no mesmo dia) em 4 seções de registro reais (cabeçalho, §8.3, §18.3, §64.17×2, não 3); isenção da SG1 restrita por seção
HV-P8 LC-05 (MANIFESTO §225.4-b, 2026-09-15) sobrevoo/pressionado fora da gramática HV1, três casos: ghost/outline sobre surface-raised no escuro têm sobrevoo INVISÍVEL (action-ghost-hover escuro = surface-raised; o §71.6 afirmava "nenhum consumidor sobre superfície elevada" — 5 controles da própria bancada estão: errata); os moldes das seis telas da MA-P3 usam box-shadow: inset … rgba(0,0,0,.12) como pressionado (o véu que o §71.6 descarta); o primary escuro é não-monotônico (hover clareia, active escurece abaixo da base). Entra no plano da HV-P4 sessão · o primary escuro é decisão de canon ✅ fechada em 2026-10-09 (MANIFESTO §296.3)
TK-P2 LC-05 + FT-P2 (MANIFESTO §225.4-b, 2026-09-15) duas verdades e um dado a registrar nos tokens: action-secondary-text (turquesa-700) × button-secondary-text (turquesa-800), a bancada usa o segundo; surface-sunken escuro = surface-page (#0B1419) — por isso disabled não tem fronteira no escuro e neutral-active escuro é a página; --seed-fw-medium diz "exclusivo da mono" e a Montserrat 500 é servida e usada por 5 telas sessão ✅ FECHADA em 2026-09-16 (MANIFESTO §232.3) — action-secondary-text REMOVIDO (não só isentado) dos dois consumidores reais; surface-sunken=surface-page registrado como dado no §71.6 (efeito real é em disabled/readonly, correção ao enunciado); fw-medium sincronizado no JSON
CT-P11 CT-P10 (MANIFESTO §225.4, 2026-09-15) cobertura da régua RC: ela pula <text> dentro de <svg> — 25 de 208 HTML saem verdes sem medir (o adesivo dos mocks de frota, por exemplo); no banco-dataviz-tokens escuro seq-4 mede 3,22 (turquesa-500 não aceita texto pequeno em tinta nenhuma) e no-data 4,27; fechados os dois, a RC passa a cobrir todo 05-html-de-referencia/ no rito (40 × 2 temas = 4 min 04 s medidos; hoje 15 telas ≈ 70 s) sessão ✅ FECHADA em 2026-09-16 (MANIFESTO §232.3) — correção ao enunciado: 24 arquivos, não 25; RC estendida lê <text>/<tspan> de SVG, 18.ª guarda do rito (contraste-total, contrato RCT) cobrindo os 38 de 40 arquivos do acervo (2 exclusões nomeadas)
MR-P19 CT-P10 + FT-P2 (MANIFESTO §225.4-b, 2026-09-15) 12 peças de 3 famílias (as-built, envelope, sinalização) não regeneram byte-idênticas — Montserrat embutida anterior ao conserto bb30c39 + selo de tokens v1.23 (frota em v1.25); PNG igual, invisível ao guarda-peca-fresca. Na mesma rodada entram os 5 TTF com nameID3 corrigido (prontos e provados na FT-P2: só a tabela name muda) e os bits de estilo do Montserrat-Bold.ttf (fsSelection/macStyle de Regular), com a cascata de 167 HTML de peça + PNG re-renderizados, como a MR-P17 sessão · gate de evidência se algum PNG mudar ✅ FECHADA em 2026-09-15 (MANIFESTO §227) — 5 TTF (gen-nome-de-fonte --gravar) e 4 woff2 (gen-subset-fontes) regenerados na main com MD5 idêntico ao do agente da FT-P2 (9 de 9, caminho independente); 20 geradores de peça em duas passadas byte-idênticas, 118 HTML regenerados, evidência re-renderizada: 24 PNG mudam — exatamente os que os vereditos V-CT10 e V-PB11 mandaram mudar — e 91 ficam byte-idênticos; guarda-peca-fresca 145 PASS · 0 FAIL. Os bits de estilo do Montserrat-Bold.ttf (fsSelection/macStyle) ficaram de fora — pedem medição própria em fonte instalada
PR-P8 FT-P2 + LC-05 (MANIFESTO §225.4-b, 2026-09-15) provas que nenhum rito roda: deriva-cobaias.py --checar, gen-subset-fontes.py --checar, gen-nome-de-fonte.py --provar e paridade-previews.py (13 FAIL ficaram de pé da SH-P9 até a LC-05 sem ninguém ver) não estão no fechar.sh; decidir o que entra, com o custo em segundos medido sessão ✅ FECHADA em 2026-09-16 (MANIFESTO §232.3) — os cinco entram (13.ª a 17.ª guarda); a HV1 por BASELINE gravado (não "0 FAIL" — 250 controles sem :active são backlog de conteúdo); causa da oscilação era antialiasing do Chromium (não um await), resolvida por comparação perceptiva; oscilação residual de ±1 no acervo inteiro registrada no §232.9
SH-P12 SH-P11 (MANIFESTO §225.9, 2026-09-15) sobras da casca real: tela-configuracoes com dois nav de mesmo nome; o painel "Escopo" (250 px, .escopo) de quadro/detalhe/gantt como pergunta de arquitetura (sidebar do shell a 250 ou painel de conteúdo?); .conteudo:focus pinta ao clicar (:focus-visible?); sidebar do chat a 240 px onde o §46.2 diz 280 sessão · o Escopo é decisão de arquitetura ✅ FECHADA em 2026-09-16 (MANIFESTO §233): itens 1/3/4 aplicados na consolidação do Grupo 4 (nomes distintos nos dois nav; .conteudo:focus-visible; sidebar do chat em 280 px); item 2 respondido no gate — veredito dele, verbatim, "V-SH12.2 (Escopo rail × acordeão): a (vira rail) · veto/observação: nenhum". Nasce a decisão SH20 (§46.1 do seed-componentes.md v1.65): o .escopo vira extensão do rail, some no mesmo limiar de 860 px do SH12 e reaparece no mesmo drawer; shell_bloco.py (2 linhas) + remoção da regra própria de 420 px em 3 moldes; placares idênticos aos já declarados (suite-shell 84 · 0, render-shell 54 · 0, contraste-shell 55 · 0, suite-quadro 35 · 0, suite-detalhe 73 · 0, suite-gantt 43 · 0), sem regressão
CP-P7 SH-P11 (MANIFESTO §225.9, 2026-09-15) a entrada HTML do conferir-peca.py mede a IMPRESSÃO nos CP-1..4 (fonte "Type3" embutida pelo Chrome; CP-4 discorda da RC: 2,94 × 5,79 no mesmo texto) e reprovava as onze telas antes do CP-13 — a entrada HTML tem de medir a TELA (DOM/pixel), não o PDF dela sessão ✅ FECHADA em 2026-09-16 (MANIFESTO §232.3) — correção ao enunciado: a causa real é o --print-to-pdf reflusindo para papel Letter, a fonte Type3 é efeito colateral secundário; CP-4 na entrada HTML agora mede a tela: 11 telas 6 PASS·5 FAIL → 11 PASS·0 FAIL, concordando com a RC
MR-P20 pedido de cobertura PC-2026-0009, projeto SEED Chat (2026-09-15) o comentário de cabeçalho do seed-fontes.css, gerado por gen-registry.py, cita 03-assets/fontes/*/subset-seed/ — o */ do caminho fecha o comentário CSS antes da hora, e o navegador descarta o @font-face do peso 400 da Montserrat inteiro (consumido como corpo de uma regra CSS inválida). Medido pelo SEED Chat em produção (esbuild acusa, CSS servido sem o 400, document.fonts confirma) sessão ✅ FECHADA em 2026-09-16 (MANIFESTO §232.3) — comentário reescrito sem glob; RG-9 (Chrome real, 7 pesos) e RG-10 (texto, sem */ solto) na guarda-registry.py; registry republicado; SEED Chat avisado para reinstalar
PR-P9 achado do agente da PR-P8 (MANIFESTO §232.6, 2026-09-16) gen-shell.py não está na cadeia de geradores do fechar.sh — tela-shell.html (de onde deriva-cobaias.py deriva as 4 cobaias) só é regenerada quando alguém lembra de rodar o gerador à mão; se o §46 mudar e ninguém rodar, a cobaia fica "verde" sobre uma tela desatualizada (quase aconteceu na consolidação do Grupo 4 — MANIFESTO §232.9) sessão ✅ fechada em 2026-10-09 (MANIFESTO §296.4)
HV-P9 achado do agente da HV-P4 + recenso da sessão principal (MANIFESTO §232.6, 2026-09-16) backlog de conteúdo catalogado pela HV1: 20 controles/tema sem NENHUMA resposta ao sobrevoo (HV1-a) e 30/tema com pressionado igual ao sobrevoo (HV1-b) no acervo inteiro — localizado por arquivo: banco-feedback.html (.seed-alert__close/-action, .seed-toast__close), banco-superficies.html (.seed-list__act, .seed-avatar-more), cobaias do rail recolhível (.campo/.no/.avatar, possivelmente já registrado no §228.3 para outros moldes) sessão ✅ fechada em 2026-10-09 (MANIFESTO §296.3)
SH-P15 achado do agente da SH-P12 (MANIFESTO §232.6, 2026-09-16) abaixo de 420 px de contêiner, o painel .escopo de quadro/gantt desaparece sem NENHUM botão, aba ou atalho para reabri-lo — lacuna de acessibilidade independente de qual alternativa a SH-P12 (item 2) escolher; tela-detalhe.html tem uma camada de responsividade a MAIS (o .escopo some a 640 px de VIEWPORT, não 420 px de contêiner como em quadro/gantt) que a aplicação da decisão precisa respeitar sessão · resolvida pela aplicação da SH-P12 ✅ FECHADA em 2026-09-16 (MANIFESTO §233), de quebra pela aplicação da SH-P12 item 2 (Alternativa A): o .escopo não tem mais um limiar próprio onde some sem volta — abaixo de 860 px ele vai para o MESMO drawer que rail e sidebar, sempre alcançável pelo botão ☰, em qualquer largura (medido nas três telas, quadro/detalhe/gantt); a camada extra de tela-detalhe.html (reflow a 640 px de viewport) deixou de precisar de regra própria para o .escopo pelo mesmo motivo — a 640 px o contêiner app já está bem abaixo dos 860 px do SH12
CT-P12 achado do agente da CT-P11 (MANIFESTO §232.6, 2026-09-16) banco-dataviz-dg.html tem 258 nós "coberto" no claro (tabela de dados acessível atrás da figura) — conferir se é padrão a11y intencional ou vazamento de CSS; e a contraste-raster.mjs aceita VAR=valor como argumento posicional sem avisar que foi ignorado (só funciona como prefixo de ambiente) — proposta: aviso quando process.argv tiver um token PALAVRA=valor sessão ✅ fechada em 2026-10-09 (MANIFESTO §296.4)
FF-P5 achado do agente da FF-P4 (MANIFESTO §232.6, 2026-09-16) os outros 5 tokens fantasma isentos por nome inteiro na guarda-spec-gemeo.py (--seed-tq-300, --seed-button-primary-bg, --seed-danger-solid, --seed-input-affix, --seed-input-w-md, --seed-surface-default) não foram medidos contra o mesmo risco que a FF-P4 achou (isenção de nome inteiro escondendo citação viva NOVA) sessão ✅ fechada em 2026-10-09 (MANIFESTO §296.4)
CP-P8 achado do agente da CP-P7 (MANIFESTO §232.6, 2026-09-16) dez das onze telas de referência do shell usam fonte fora da família da casa (Arial, monospace sem "JetBrains Mono" na frente) em trechos pequenos — só tela-onboarding.html está limpa; tela-quadro.html usa #F0F0F0, cor fora do seed-tokens.json (achado só visível agora que o CP-1/CP-4 medem a tela real) sessão ✅ fechada em 2026-10-09 (MANIFESTO §296.4)
TK-P3 achado do agente da TK-P2 (MANIFESTO §232.6, 2026-09-16) banco-componentes.html embute uma cópia INTEIRA e CONGELADA do seed-tokens.css v1.1 (2026-07-30, 27 KB) — morta na prática, mas engana quem ler "v1.1" como fonte de verdade; candidato a gerador próprio ou remoção por processo (tabela) sessão · decisão dele se for remoção ✅ fechada em 2026-10-09 (MANIFESTO §296.4 — premissa falsa, bloco vivo)
MR-P21 achado do agente da MR-P20 (MANIFESTO §232.6, 2026-09-16) a classe de defeito da MR-P20 (*/ embutido num comentário CSS/JS gerado, fechando-o cedo) só é verificada dentro de guarda-registry.py — uma guarda de FORMA no rito, varrendo todo .css/.js/.mjs publicado em 10-publicacao/ (a função sem_fechamento_espurio já é genérica), fecharia a classe inteira sessão ✅ fechada em 2026-10-09 (MANIFESTO §296.4)
PB-P12 PB-P9 (MANIFESTO §225.7, 2026-09-15) registro jurídico: o Decreto 5.296/2004 não remete ao SIA para sítios (errata na práticas §18 aplicada; MANIFESTO §200.1 fica como evidência; P-064 é do projeto do site); a Lei 15.459/2026 (símbolo novo vetado) e nenhuma guarda de vigência de LEI no rito (a NB só vê ABNT); accesskey/barra de acessibilidade sem decisão no canon (MK29 candidata, depende do V-PB9.1) sessão · MK29 é gate ✅ FECHADA em 2026-10-10 (MANIFESTO §302) — folha 2, F1a = b (barra sem accesskey e sem número) e F1b = sim (guarda guarda-leis.py, 10 leis com hash, só no --bloco) · antes: 🟡 NO GATE DELE — a MK29 já existe (§47.7, V-PB9.1 "b", no ar em 453 de 453 páginas); o resíduo exposto a veto e a guarda de lei na folha https://claude.ai/artifact/M4Dz1XtfLXnJA3tYyTrvXu (MANIFESTO §300) · antes: ⚪ aberta
SH-P13 pergunta dele no veredito do Grupo 2 (MANIFESTO §226.5, 2026-09-15) o SH12 (rail + sidebar viram um drawer modal único em tela estreita) existia só no shell-template: nos dez moldes de tela que ganharam a casca real na SH-P11, 0 de 10 escondiam o rail em largura alguma. Correção ao enunciado, medida (2026-09-15, mede-casca.mjs, 11 telas × 390/768 × 2 temas): a 390 px oito das dez telas transformavam o rail numa FAIXA horizontal de 74 px sobre o conteúdo (referência, lista, tabela, detalhe, atividade, busca, onboarding, chat — regra @media (max-width: 640px)/@container tela (max-width: 599px) própria de cada molde) e só quadro e gantt mantinham a coluna de 80 px com 274 px de conteúdo; a 768 px as dez mantinham o rail de 80 px. Em nenhuma havia botão nem drawer. Aplicação de contrato escrito: o shell_bloco.py emite também .abre-nav, dialog.nav-drawer + JS e a regra de colapso no mesmo limiar do shell (860 px de contêiner) sessão (aplicação, exposta a veto com capturas) ✅ FECHADA por aplicação em 2026-09-15 (Grupo 3, MANIFESTO §228), exposta a veto visual: módulo emite botão/drawer/regra; 10 moldes compõem (+ container-name: app em 4 que não o declaravam; regras mortas do rail em faixa removidas em 8); shell pixel-idêntico a 1440/768/390 nos dois temas (MD5); a 390/768 44 de 44 rail oculto + drawer modal com foco que volta; a 1024/1366 44 de 44 rail de 80 px; scrollWidth = janela 88 de 88; CP-13 11 de 11; suítes iguais à base (0 FAIL); RC 1440 30/30 e RC 390 com a gaveta aberta 22/22; HV1 do botão novo PASS; §46.2 fixa o 860 por escrito. Pranchas antes × depois × gaveta em scratchpad/grupo-3/SH-P13/folha/. Custo medido: ver MANIFESTO
SH-P14 pergunta dele no veredito do Grupo 2 (MANIFESTO §226.5, 2026-09-15), verbatim "o Rail pode ser minimizado pra a esquerda aparecendo apenas o icone e escondendo o nome?" estudo do rail recolhível "só ícone" — supersede candidato do SH3 (que fixa 80 px com rótulo sempre visível, por decisão: "rótulo truncado não é rótulo"). Entrega: levantamento datado de Material 3 (rail recolhido/expandido), Fluent (compacto 48 px), Fiori (side nav recolhida), Carbon (rail que expande no sobrevoo) e ClickUp; três variantes renderizadas lado a lado no shell real (hoje 80 px · só ícone ≈ 56 px com tooltip · expandido ≈ 220 px), claro e escuro, 1440 e 1024 px; custo de cada (SH3, medir-rail.mjs, CP-13, moldes, ERP) e o que NN/g e WCAG dizem de ícone sem rótulo sessão prepara · ele decide (gate) 🟡 DECIDIDA em 2026-09-15 (MANIFESTO §229.1, verbatim: "V-SH14.1 modo recolhido: b · V-SH14.2 gatilho: a · V-SH14.3 posição do botão: a · V-SH14.4 quem lembra: a · veto: nenhum") — o rail ganha o estado recolhido só ícone (56 px) por botão na base, opção do usuário no desktop; quem lembra é o produto (por usuário, nasce expandido). Supersede parcial do SH3 → nasce SH19. APLICADA e FECHADA no mesmo dia (MANIFESTO §230; agente 72 min contra ≈ 5 h estimadas): tudo emitido pelo shell_bloco.py nas 11 telas (botão .alterna-rail na base, tooltip do §23 com corredor + carência, data-rail declarado nos moldes); suite-shell 84/0 · render-shell 54/0 · contraste-shell 55/0 · CP-13 11/11 (80 ou 56 pelo data-rail) · RC 22/22 · HV1 190 controles/tema, 0 FAIL; componentes v1.63 (SH3 supersede parcial, SH19, §46.2/46.3/46.5, §23)
MR-P18 gate MA-P3 (observação dele em V-P3.2, MANIFESTO §218.2) a marca no login estava errada desde agosto: (1) os dois símbolos embutidos (principal + mono-negativo) usam a mesma classe .a no <style> interno, que é global na página — o branco do escuro apagava a parte turquesa do claro ("branco dentro do amarelo"); (2) símbolo + <strong>SEED engenharia</strong> no lugar da logo completa (§5.1: digital ≥ 120 px = logo completa). Censo: a colisão só existe no login (734 HTML). Conserto: logo vertical oficial por tema no molde, AU-12/16/17 na suíte e a 12.ª guarda do rito (guarda-marca-embutida.py, contrato ME) sessão ✅ fechada em 2026-09-14 (MANIFESTO §219.4): tela v0.5, suíte 24 PASS, ME 3 PASS em 373 HTML; o login refeito vai à folha F11.1 como V-F11.2
SH-P10 gate F10.4 (achado dele, 2026-09-13) a barra vertical branca ao lado do item ativo do rail — ele escreveu "essa barra nao deveria estar ali, acho que ela vem de outra estrutura". Medido: é a marca de ativo do SH5 (§46), ::before de 3 px em left: -4px, presente nos 8 moldes com rail e sondada em pixel pela suite-composicao; com o material ela lê como resíduo porque a pílula clara já sobrevive ao cinza sozinha. Decisão registrada → supersede é dele: (a) manter · (b) tirar do rail (a da sidebar fica), custo meia sessão (8 moldes, SH5-04, PX-01/02, re-gate). Folha SH-P10 com os quatro recortes (cor e cinza) ele · sessão ✅ fechada em 2026-09-13 — veredito "b-tirar-do-rail" (MANIFESTO §209): a barra saiu dos 8 moldes com rail, telas regeradas byte-idênticas, SH5 reescrito por região (componentes v1.50), suite-shell SH5-04 e suite-composicao PX-01/02 provam a ausência
Esc