# Mapa de cobertura — SEED Design System v2

> **Versão:** v2.31 · **Data:** 2026-08-24 (§22.34 — **a F7.7 FECHA e com ela a F7 INTEIRA**: o P6 executou por veredito dele (31 gastos removidos, 537 KB) e as §90/§91 foram EMENDADAS no mesmo dia por informação nova — o app de campo com cadastro offline e sincronização (OS e ponto) é decisão tomada, não hipótese. Nascem OF10 (quatro estados de sincronização), a CE4-f (separa COLETA de EMISSÃO, resolvendo a colisão entre a trava exclusiva e o trabalho sem rede) e a CE9 (conflito detectado na sincronização). ⚠ O ponto tem regra própria: Portaria MTP 671/2021. · anterior v2.30 · **Data:** 2026-08-24 (§22.33 — **a F7.7 entrega o P5 e as TRÊS linhas ❌ AUSENTE do §6.1 fecham**: §90 offline · §91 conflito de edição concorrente · §92 lista longa, por cinco decisões dele no gate. O §92 **fecha a BU-P1** e traz o limiar MEDIDO em cobaia — 2.000 linhas —, porque a lista mais longa do acervo tem 38 itens e não exercita o problema. Dois achados de método com consequência normativa: **contenção nativa não funciona em caixa de tabela interna** (5,87×–25,47× em blocos, nada em `<tr>`) e **`getComputedStyle` devolve `auto` nas duas**, logo esta regra não tem conferência por declaração (LL-P1). O P6 tem tabela pronta e espera veto. · anterior v2.29 · **Data:** 2026-08-24 (§22.32 — **a F7.7 entrega P1 a P4**: a camada de validação volta a RODAR nesta máquina (55 suítes, 20 geradores provados por regeneração byte-idêntica, 1.127 PASS nas 17 jsdom antigas), nasce o **módulo de cor** que fecha a lacuna `color(srgb)` do §12.5, a **C31 ganha a perna de COR** com ΔE76 calibrado no próprio canônico, a **lei do CP27 passa a ser varrida no acervo inteiro** — e ela achou 9 artefatos fora da lista, levando o CP27 de 8 para 10 nomes por supersede —, e a **microcópia vira a §89** por cinco decisões dele. Três defeitos de instrumento novos no caminho: o **50º** (pixel dominante cego a gradiente), o **51º** (resolvedor de fundo cego a gradiente) e a **classe do CRLF** (gerador portado se prova por byte-identidade). Fecham: AU-P1, os caminhos nus, DP-P7, CN-P1) · anterior  · **Data:** 2026-08-23 (§22.31 — **A F7.6 FECHA 6/6: A13 documento sai de AUSENTE para `estável`** (§88, suíte 15·0·0; gate dele: *"aprovo"*) — e com ela as SEIS telas de borda, produzidas em DOIS DIAS de gates encadeados sobre o consolidado de 2026-08-22: seis specs §83–§88, seis suítes (**101 PASS · 0 FAIL** somados), uma volta de leitura dirigida (que fechou os dois arquétipos SEM leitura), o retroativo HV1 e o print como CONTRATO MEDIDO (a errata do DI virou lei de suíte). Os bloqueados seguem nomeados (A6, A15, C5/C8). Da F7 resta a **F7.7 — instrumentação e rigor**) · anterior v2.27 (§22.30 — **A14 feed/atividade sai de AUSENTE para `estável`** (§87, suíte 16·0·0; gate dele: *"aprovado"*): a exceção C33 do CP2 sai de CITAÇÃO para USO medido em tela, o C27 timeline ganha a primeira spec, e a linha "feed sob observação → possível A27" perde o motivo — o consumidor real (histórico de projeto/manutenção) está atendido. **Cinco de seis da F7.6**; falta a A13) · anterior v2.26 (§22.29 — **A18 configurações sai de AUSENTE para `estável`** (§86, `tela-configuracoes.html`, suíte 18·0·1; gate dele: *"aprovo"*). Era um dos dois arquétipos SEM leitura; a decisão aberta do consolidado (salvar imediato × explícito) fechou como **DOIS REGIMES** — formulário explícito com dirty, switch imediato anunciado. Nasce ainda o **primeiro check de LGPD em suíte** (CF-11: a demo reprova se dado pessoal real entrar). **Quatro de seis da F7.6 entregues**; a fila: A14 → A13) · anterior v2.25 (§22.28 — **A17 busca/resultados sai de AUSENTE para `estável`** (§85, `tela-busca.html`, suíte 15·0·1; gate dele: *"fora isso está aprovado"*) — e o "fora isso" foi **a HV1 pega a olho nu pela SEGUNDA vez** (a paginação sem hover; a primeira foi o §71 em 2026-08-19): o conserto alcançou as TRÊS telas da F7.6, retroativo, com o **49º defeito de instrumento** no caminho (CSSOM: style rule tem `.cssRules` vazia-mas-truthy e o flatMap engolia os `:active`). Três de seis da F7.6 entregues; a fila segue A18 → A14 → A13) · anterior v2.24 (§22.27 — **A20 onboarding sai de parcial para `estável`** (§84, `tela-onboarding.html`, suíte 14·0·1; gate dele: *"a imagem da onboarding está ok. aprovo"*). O delta era só a COMPOSIÇÃO — o §25/Z1 já estava `estável` desde o Bloco 3 — e a tela prova por suíte a cláusula que só existia como texto: **Z5, o mascote é PROIBIDO em sem-permissão** (ON-02b). Dois de seis da F7.6 entregues; a fila segue A17 → A18 → A14 → A13) · anterior v2.23 (§22.26 — **o PRIMEIRO arquétipo da F7.6 sai de AUSENTE para `estável`: A19 autenticação** (§83 do componentes, `tela-autenticacao.html`, suíte 21·0·0, CD-P5 fechada) — e a leitura que faltava veio de uma VOLTA DIRIGIDA autorizada por gate (P1 do consolidado F7.6): telas de login PÚBLICAS medidas deslogadas + busca populada e configurações lidas na sessão em somente-leitura estrito (`leitura-f76-bordas.md`). A dimensão nova que a volta expôs: **os vizinhos reprovam nas normas que o §66 já absorveu** — copiar o mercado aqui seria REGREDIR; a leitura serve à composição, a norma decide o contrato) · anterior v2.22 (§22.25 — **o INVENTÁRIO DE PEÇAS sai de "proposta" para "confirmado contra a operação"**: ele respondeu que as 20 peças das famílias de papelaria e de campo **existem de verdade**, e que o **layout de frota** é a única a criar de zero. E nasce uma dimensão de cobertura que não é sobre artefato, é sobre **como o trabalho é proposto**: *plano com nome de fase e sem definição de entregável é plano que só o autor entende* — a crítica dele (*"3 ondas é vago"*) virou `plano-producao-pecas.md`, com glossário e dependência declarada por peça) · anterior v2.21 (§22.24 — **a dimensão de SANGRIA sai de "medida" para "governada por canon E conferida por guarda" no mesmo dia em que nasceu**, e com ela nasce uma distinção de cobertura que o projeto não tinha: **ARQUIVO DE GATE × ARQUIVO DE PRODUÇÃO**. São dois artefatos da mesma peça, com tamanhos diferentes, medidos por guardas diferentes — e antes disso o projeto media *um* arquivo e chamava de "a peça". MM1 vai de 3 para 5 cláusulas; produção **15·0·0**. ⚠ E fica registrado que **o placar de referência escrito ANTES da execução estava errado em dois pontos, os dois erros do engenheiro**, corrigidos só depois de entendida a causa de cada divergência) · anterior v2.20 (§22.23 — **nasce a dimensão de OBRIGAÇÃO LEGAL E NORMATIVA, e ela estava em ZERO no acervo inteiro**: nenhuma das ~60 guardas desta casa pergunta *"esta peça é exigida por lei? o conteúdo obrigatório está presente? a cor é minha ou é da norma?"*. Levantado: a **placa de obra** é obrigatória (`Lei 5.194/1966 Art. 16` + `Res. CONFEA 407/1996`) e a **sinalização elétrica** é regida pela **NR-10 10.10.1** com cores da **NR-26 → NBR 7195** — onde o **amarelo significa ADVERTÊNCIA**, colidindo em significado com o acento único da marca (**MR-P11**). E a dimensão de **SANGRIA/MARGEM** sai de ausente para **medida**: o conteúdo do cartão está a 4,24 mm do corte, o que reprova a margem de 5 mm por 0,76 mm) · anterior v2.19 (§22.22 — **duas dimensões saem de ZERO na mesma rodada, e as duas estavam nomeadas como ausentes desde a §22.20**: a **guarda de alvo de pasta para o piso em mm** (nasce o contrato **MM1**, 3 cláusulas, 7 fixtures, `13·3·5` batendo com o previsto) e a **resolução de exportação da peça impressa** (a pasta A4 sai de 105,7 para **300 DPI exatos** — MR-P8 fechada). Decisão de arquitetura que muda a natureza da cobertura: **quem é peça impressa passa a ser declarado NO ARTEFATO** (`<meta name="alvo-fisico">`), o que faz a varredura ser por pasta e não por lista. E na estreia a guarda achou o que conferência à mão não acharia: **o piso do canon estava sendo violado pelo arredondamento do gerador**, por 0,0002 mm) · anterior v2.18 (§22.21 — **nasce a dimensão de PROVENIÊNCIA DO VALOR**, e ela nasceu de uma pergunta dele: *"nao sei se escolho americano ou brasileiro, pois nao sei do que se trata"*. A medida do cartão (89×51 mm) estava no projeto **sem nenhum veredito que a escolhesse** — era `3,5×2 polegadas`, default de ferramenta americana. Nenhuma das ~60 guardas desta casa pergunta *"quem decidiu este número?"*, e é uma dimensão inteira em zero: o acervo tem centenas de valores e **nenhum inventário de origem**. Trocado para **90×50 mm** por veredito dele, com custo medido de uma linha de canon e zero custo em impressão. E fica a régua: **pendência enunciada como "A ou B" transfere a decisão sem transferir a informação**) · anterior v2.17 (§22.20 — **a dimensão de UNIDADE FÍSICA ganha PISO, e por isso sai de "medida" para "governada"**: com o veredito dele (*"saída B — piso de 0,25 mm por ESCALA, e só para peça IMPRESSA"*) a régua passa a ter um número do canon para comparar (`marca-seed.md` v5.6 §7.4-c), e não só pisos de mercado. Efeito medido: o plano mais fino do cartão sai de 0,180 mm (2% de folga) para 0,250 mm (42%), com os 4 pesos preservados. **Duas dimensões seguem em zero e agora são consequência da regra: RESOLUÇÃO DE EXPORTAÇÃO (MR-P8) e GUARDA DE ALVO DE PASTA PARA O PISO EM MM** — hoje a conferência é sob demanda, um humano rodando um script) · anterior v2.16 (§22.19 — **nasce a dimensão de UNIDADE FÍSICA**: o traço do grafismo em milímetros sai de **ausente** para **medido, sem piso de canon**. O achado é estrutural — a lei do traço é em px, logo o traço físico depende da resolução de exportação — e ele expõe uma peça aprovada com 2% de margem e uma peça do acervo reprovando o piso digital reverso) · anterior v2.15 (§22.18 — **a dimensão de grafismo troca de EIXO no topo**: por veredito dele, o teto do topo é de **LARGURA** (`F ≤ w / 6,5625`) e não de altura, o que fez a cobertura do topo sair de *"só a razão 1:1"* para **qualquer formato** — escopo apertado demais era uma guarda que se recusava a medir. E nasce a dimensão de **FECHAMENTO AUDITADO**: uma auditoria de 7 eixos que confere citações órfãs, coerência de versão, afirmação velha de canon, placar velho, higiene, frescor de derivado e fixtures × log — ela achou 2 afirmações velhas e 7 sobras de placar em documentos escritos horas antes) · anterior v2.14 (§22.17 — **a dimensão de grafismo passa a medir CANON, não um número fixo**: com a emenda MR-P4 aprovada (`marca-seed.md` v5.4), a GR1-c lê os DOIS REGIMES e os TETOS POR FORMATO, e a cobertura muda de natureza — o que se mede agora é *a peça respeita o teto que o decisor aprovou para o formato dela*. Efeito: 5 peças largas de 11·4·0 para **15·0·0**, montanha a **16·2·0**. E nasce a dimensão de **INTEGRIDADE DAS SAÍDAS DO INSTRUMENTO** (48º defeito: o placar de texto saiu completo e o JSON derivado morreu em silêncio; só o exit code viu)) · anterior v2.13 (§22.16 — **a dimensão de ÁREA E FAIXA DE GRAFISMO SAI DE ZERO**: a guarda GR1 foi reescrita com pasta de prova ANTES e o contrato volta a ser reproduzível em 18 peças (7 formatos 21·0·0 · 5 largas 11·4·0 · 6 da montanha 14·2·2, com 4+2 FAILs SANCIONADOS pelo decisor esperando a emenda MR-P4). E nasce uma dimensão que nenhuma guarda desta casa media: **ESTABILIDADE DA CAPTURA DO PRÓPRIO INSTRUMENTO** — o 47º defeito mostrou que esconder e mostrar de novo não restaura o pixel (112 px do glifo), e que um número impossível no placar (sobreposição de −77 px) é o único sinal que existia) · anterior v2.12 (§22.15 — TRES DIMENSOES NOVAS, e as tres nasceram de coisas que um placar VERDE nao ve: **cobertura de propagacao** (o MD5 mede fidelidade do que foi ENVIADO e nada sobre o que ficou de FORA — custou TRES instrumentos perdidos; regua nova PR-P4: todo fechamento imprime enviados x conferidos **e** criados/editados x enviados), **valor de marca fora do canonico** (o `#0A6B60` viveu quatro rodadas e chegou a peca aprovada; nasce a regra §0-b) e **artefato orfao** (artefato sem gerador é artefato nao corrigivel). Mais: a dimensao de AREA E FAIXA DE GRAFISMO **REGREDIU A ZERO** porque a guarda GR1 foi perdida (GR-P3), e ficou fixada a fronteira de que **regra derivada de um modelo fica ESCOPADA a ele** — veredito do decisor: *"considere que o topo segue uma regra e o rodape outra regra"*. Anterior: v2.11, §22.14 — NASCE A DIMENSAO DE **RECURSO QUE CHEGA**, e ela veio de uma pergunta sobre OUTRA coisa: o Rafael perguntou se "uma imagem que nao carregou" mudava a avaliacao de contraste. **NAO mudava** — cor, tamanho, peso, retangulo dentro do cartao e pixel do fundo IDENTICOS com e sem imagem. Mas ninguem nesta casa jamais mediu se as FAMILIAS TIPOGRAFICAS e os RECURSOS EXTERNOS que um artefato declara REALMENTE CHEGAM: medido, **0 de 45 imagens e 0 de 2 familias** do `seed-design-system.html` carregam, logo TODO recorte daquele artefato ja mostrado ao decisor saiu com a tipografia de RESERVA. Nasce o contrato **TP1** (`validacao/guarda-tipografia-viva.mjs`, alvo de pasta): **30 PASS · 21 FAIL · 0 [n/a]**, com 85 achados de PORTABILIDADE (pilha que resolve por fonte de SISTEMA, nao por `@font-face`) e 56 de PRIMEIRA ESCOLHA. **A atribuicao por familia muda o que o numero significa:** das 21 reprovacoes, 13 sao a familia de E-MAIL (isencao declarada — e-mail nao pode embutir ativo), 7 sao bancadas que carregam a fonte do Google Fonts (o achado real) e 1 e o showcase legado com 46 recursos. LICOES: **pergunta do decisor sobre um DETALHE e o modo mais barato de descobrir uma DIMENSAO inteira que nao existia**; **quando uma regua nova reprova EM BLOCO, a primeira hipotese nao e "o acervo esta ruim", e "a regua esta medindo outra coisa"** (esta guarda esteve errada CINCO vezes: 48, 46, 22 com 3 falsos, 6 de 6, e so entao correta); e **placar de contrato transversal so e legivel depois de ATRIBUIR o FAIL a uma familia de artefato**. Armadilha catalogada: `document.fonts.check()` devolve `true` com a fonte FALHANDO. CONTAMINACAO DECLARADA: o contentor recebeu `apt install fonts-montserrat` nesta rodada. Pendencias novas: **RD-P1** (47 recursos de rede), **CC-P11** (a regua de contraste resolve UM fundo por ELEMENTO e nao ve texto que atravessa DUAS superficies — 6,56 declarado x 3,92 no pixel), **CC-P12** (`opacity` em tinta — 4,60 x 4,01) e **TP-P1** (isencao por familia feita a mao); anterior: §22.13 — A COBERTURA DE **BT1** SAI DE "DEZ DE TRINTA E QUATRO" PARA ALVO DE PASTA, e nasce uma dimensao de cobertura que nao existia: a FIDELIDADE DA DEMONSTRACAO ENTREGUE AO DECISOR. (1) O contrato BT1 — *a barra de controles de avaliacao de todo artefato produzido e fixa no topo*, escrito em `seed-componentes.md` §64.1 desde 2026-08-16 — tinha sido declarado verificado ao fechar a **BT-P2** em 2026-08-17 sobre uma LISTA ESCRITA A MAO de **dez** artefatos, num acervo de **trinta e quatro**. Nasce `validacao/guarda-barra-fixa.mjs`, de ALVO DE PASTA, com quatro clausulas das quais TRES sao COMPORTAMENTAIS (rola a pagina de verdade e mede o retangulo): **22 PASS · 11 FAIL · 18 [n/a]** -> **33 · 0 · 18**, medido a 1440x900 E a 320x900 (9 BT1-a · 10 BT1-b · 0 BT1-c · 2 BT1-d). Dois dos onze declaravam `position:fixed` — a propriedade "passava" e o comportamento reprovava (topo a +12px, tolerancia 4px). (2) Nasce a regra de forma de entrega **DEMONSTRACAO VIVA E EXTRAIDA, NUNCA REDIGITADA** (`validacao/extrai-vivo.mjs`): trecho redigitado na folha e SEGUNDA FONTE, isto e, **dado sintetico plausivel**; sendo extraida, a demonstracao passa a ser MENSURAVEL — fidelidade medida pela guarda HV1 oficial em 6/0/0 · 6/0/0 · 10/0/0 · 4/1/0, e o unico "1" reproduz um defeito real do artefato. O **44o defeito**: a v1 da ferramenta lia CSS por REGEX e chave dentro de COMENTARIO desalinhou o parser — 3 de 5 quadros sairam sem tokens; reescrita por CSSOM, 5 de 5. TERCEIRA vez na mesma sessao em que a regua certa ja estava escrita em outro instrumento, e disso nasce a pendencia **IN-P2** (nenhum censo diz qual tecnica cada `.mjs` usa para a mesma tarefa). LICAO: **pendencia de contrato TRANSVERSAL nao fecha por lista — fecha por instrumento de ALVO DE PASTA**, e o fechamento tem de citar o instrumento, o ALCANCE impresso por ele e o censo de `[n/a]` com motivo. Dimensoes que seguem em ZERO: BT2/seletor de largura (**BT-P3**, nova), tecnica de leitura de CSS por instrumento (**IN-P2**, nova), token consumido sem declaracao no ato da escrita, estado de SELECAO (SE-P1), colisao de ESPECIFICIDADE (ES-P1), defasagem de versao de gemeo (TK-P1) e a varredura de `scroll-behavior` nos 54 `.mjs`; anterior: §22.12 — DUAS REGUAS MEDIAM A COISA ERRADA, e a segunda escondia 862 folhas de texto reprovadas num arquivo CANONICO. (1) A HV1-c lia a tinta DO CONTROLE, e quem pinta a letra costuma ser um DESCENDENTE com `color` proprio: medido, de 1.260 controles com texto **364** pintam por descendente e **164** com tinta diferente — 1 artefato correto era condenado e 12 defeitos reais eram invisiveis (41o defeito). (2) A varredura de contraste escolhia alvo por PREFIXO DE NOME (`^(banco|tela)-`) e por isso **17 dos 51 HTMLs de raiz NUNCA foram medidos**: medidos agora, **16 passam limpos (32 · 0)** e o 17o, o `seed-design-system.html`, tinha **862** folhas abaixo do piso — **862 -> 46** depois da migracao (42o defeito). Nasce a regua: *filtro por prefixo de nome e uma lista escrita a mao com outra sintaxe, e e PIOR que uma lista explicita porque tem a APARENCIA de alvo de pasta*. E fica o numero que ninguem tinha imprimido: a `guarda-resposta-ponteiro` e a `guarda-colisao` varrem os 51; o contraste varria 34. QUATRO dimensoes seguem em ZERO, agora nomeadas: estado de SELECAO (SE-P1), colisao de ESPECIFICIDADE (ES-P1, tres defeitos em tres partes), defasagem de versao de gemeo no artefato (TK-P1, seis versoes no acervo) e a varredura de `scroll-behavior` nos 54 `.mjs` (o 43o defeito era o 33o num terceiro instrumento); anterior: §22.11 — NASCE A DIMENSAO DE VAZAMENTO (clausula SH1-d): o Rafael apontou a 390px o rotulo saindo POR FORA DA BORDA do botao e as tres clausulas de SH1 davam aquela tela como limpa; 9.456 caixas com fronteira visivel passam a ser medidas a 1440px e 9.244 a 390px, onde antes eram ZERO; a primeira execucao acusou 168 vazamentos e TODOS eram do instrumento (39o defeito: `clientWidth` de inline nao-substituido vale ZERO); e o 40o defeito (`opacity:0` NAO sai do hit-test) so apareceu porque a segunda medicao usou ALTURA 844 em vez de 900 — fica registrado que a altura da janela e uma dimensao de cobertura real que este projeto nunca variou de proposito, e que RODAR O MESMO COMANDO DUAS VEZES NAO E MEDIR DUAS VEZES; anterior: §22.10 — NASCEM DUAS DIMENSOES DE COBERTURA que estavam em ZERO, e as duas vieram de o Rafael RECUSAR uma pergunta e de uma pendencia de quatro partes: (1) RESPOSTA AO PONTEIRO (contrato HV1) — 1.410 controles ativos medidos, 619 sem NENHUMA resposta ao mouse, 1.350 com o pressionado igual ao sobrevoo, 90 com contraste abaixo do piso no estado novo, 0 PASS em 51 arquivos; a guarda julga pelo PIXEL, com 3 capturas por controle, porque propriedade computada do ELEMENTO nao descreve a APARENCIA dele; (2) COLISAO, COBERTURA E CORTE (contrato SH1, FECHA a SH-P3) — 204 PASS · 0 FAIL a 1440px, e a dimensao de ESPACAMENTO da SC 1.4.12 medida pela primeira vez no acervo; cinco defeitos de instrumento morreram no caminho, todos de FALSO POSITIVO; nasce a categoria de cobertura por DECLARACAO COM SAIDA VERIFICADA; anterior: §22.9 — as DUAS fronteiras declaradas do CT1 FECHAM: a cobertura ganha o EIXO DE PONTEIRO, que estava em ZERO nos 52 instrumentos `.mjs` do acervo — MEDIDO, não presumido: nenhum outro move o ponteiro, e o eixo de FOCO já existia em 20 deles — e um eixo de TEMA que só mede quem PROMETE tema escuro; 8 combinações, 2 larguras, 1.480 medições, 0 fora do centro, nenhum artefato alterado; dois defeitos de instrumento no caminho, e os dois produziam `[n/a]` com motivo PLAUSÍVEL em vez de FAIL; nasce a categoria de cobertura de INSTRUMENTO com 8 artefatos de prova onde vermelho é o resultado desejado; anterior: §22.8 — o Rafael respondeu as quatro perguntas do gate v13.3 e, no mesmo anexo, achou A OLHO NU uma DIMENSÃO DE COBERTURA que estava em ZERO: o CENTRO DO DESENHO dentro do controle de ícone, que nenhuma das mais de 60 guardas olhava — nasce o contrato CT1 e a guarda que mede 189 controles; a cobertura do SI17 CRESCEU SOZINHA (tela-tabela de 1 para 7 `.sigla`, tela-referencia de 1 para 6) porque a guarda varre PASTA e não lista; e a cláusula NUM-02 da suite-container reprovou 6 elementos CORRETOS porque media uma lista de classes escrita à mão — terceira reincidência da mesma família na sessão; anterior: §22, §22.5, §22.6 e §22.7 — a SI-P4 executa; a guarda SI17 nasce como ALVO DE PASTA e acha QUATRO telas que nenhuma lista continha; o contraste é medido a 390px pela primeira vez e rende o 29º e o 30º defeitos de instrumento mais o SH-P2; anterior: §21 — a CD-P9 e a CD-P11 fecham nos 34 artefatos, a NV-02 ganha guarda e o PRE-VOO vira instrumento; anterior: §20 — dois dos seis defeitos de contraste eram do MEDIDOR; nasce a guarda FC1 de contraste forçado, com censo de 1.336 controles e 408 sem fronteira; anterior: §17 — a MR-P1 executa, nascem e fecham MR-P2, BT-P7 e BC-P1, e o acervo é recontado em 34 artefatos) · **Estado:** `consolidado PARCIALMENTE APROVADO` —))
> as SEIS decisões D1–D6 do §9 foram tomadas pelo Rafael em 2026-08-15 e estão registradas lá;
> o restante segue proposta e cada linha marcada como AUSENTE é proposta de escopo que só entra no sistema
> pelo fluxo normal (pesquisa → consolidado → aprovo → produção → gate).
>
> **Por que este documento existe.** O `estudo-clickup-completo.md` (v1.1, produto real medido em
> sessão logada) e o `estudo-viver-de-ia.md` (v1.4) foram feitos **depois** de boa parte do DS já
> estar escrita. A consequência, declarada pelo Rafael em 2026-08-15: *"se nós erramos em não ter
> feito o estudo do ClickUp e do Viver de IA antes, para poder definir o melhor modelo de
> construção, foi uma falha grave nossa, e não é porque falhamos que temos que manter o erro."*
> Este mapa é a resposta: o inventário de **todas as estruturas que um DS de ERP precisa prever**,
> derivado do que foi medido no produto de referência, confrontado linha a linha com o que a SEED
> já tem — para que o que falta seja **escopo declarado**, não descoberta tardia.
>
> **O que este documento NÃO é:** não é spec (não define valores), não é plano aprovado (a ordem
> das fases é proposta), e não copia decisão do ClickUp (todo dispositivo medido lá é proposta
> para gate, regra do §12.8 do próprio estudo).

---

## 0. Vocabulário mínimo, para quem lê isto sem ter visto o projeto

- **Arquétipo de tela** — o tipo de tela que o usuário reconhece (lista, quadro, painel,
  formulário). No ClickUp é objeto de primeira classe: o usuário escolhe o tipo num menu, e
  **cada tipo tem token de cor próprio** (`--cu-view-type-1..40`, MEDIDO). No DS SEED o
  arquétipo é a unidade do contrato de montagem (`seed-composicao.md` §3, CP3).
- **Bloco** — a peça de construção de uma tela. O CP2 fecha o vocabulário em **seis tipos**:
  canvas · peça · âncora de navegação · régua · faixa · sobreposição.
- **Componente** — o que vive dentro de um bloco (botão, campo, chip). São os §1–§45 do
  `seed-componentes.md`.
- **Lente** — modo de visualização do mesmo conjunto de dados (o §48 do painel declara oito).
- **Bancada × tela composta** — *bancada* é o preview que exercita todos os estados de um
  componente para as suítes medirem (nossos `seed-*-preview.html`); *tela composta* é a tela de
  produto montada com componentes já estáveis (a `seed-tela-referencia.html`, aprovada no gate
  com "tudo 100%"). São artefatos de propósitos diferentes — a distinção é central no §7.
- **Estável / parcial / ausente** — estável: spec escrita + validada + gate; parcial: existe em
  parte (spec sem tela, ou tela sem spec, ou coberto só dentro de outro bloco); ausente: não
  existe em lugar nenhum.

---

## 1. O achado que organiza o mapa

O estudo mediu **dezessete arquétipos** e a conclusão da §2.3 é literal: *não existe uma regra
única de "peça sobre canvas"* — há **sete raios distintos (0, 4, 6, 8, 10, 12, 24px)**, cinco
tratamentos de elevação e quatro gaps, **variando por arquétipo**. Nosso CP3 já absorveu isso
como lei ("o contrato é declarado por arquétipo, não uma vez no nível do sistema").

A lacuna real não é de *regra* — é de **cobertura**: o CP3 declara a lei, mas a tabela do §3
cobre **onze arquétipos** contra os dezessete medidos, e apenas **quatro telas compostas**
existem como artefato.

> **ERRATA da v0.1, corrigida na v0.4 (2026-08-15):** esta frase dizia *"seis linhas
> preenchidas"*. **Errado** — a contagem veio de leitura parcial da seção, não de contagem: a
> tabela tinha **onze** linhas (shell · painel · lista/tabela · formulário · detalhe · hub ·
> documento · página institucional · feed · mapa · vazio). A conclusão não muda (faltavam
> gabaritos, e os que faltavam eram os arquétipos nunca escritos), mas o número estava errado e
> número errado em consolidado vira decisão errada depois. A correção está também no
> `seed-composicao.md` v2.0 §3. *Classe do defeito:* afirmação quantitativa sem medição — a
> mesma que o método proíbe desde o marco v1.4 ("regressão por MD5, não por tamanho"). Um contrato por arquétipo com a maioria dos arquétipos não
escritos é um contrato incompleto por definição — a mesma frase que o CP3 já usa para a coluna
`<600px`.

**Consequência para a leitura deste mapa:** cada seção abaixo lista o universo previsto, marca o
estado real e nomeia o que falta. O total é grande de propósito — a instrução foi *"fechar a maior
quantidade possível de possibilidades"*.

---

## 2. Eixo A — Arquétipos de tela

Coluna "medido no CU" = o estudo tem a regra de superfície daquele arquétipo (§2.3/§10b).
Coluna "SEED" = estado no nosso sistema. "Tela" = existe artefato composto navegável.

| # | Arquétipo | Medido no CU | Spec SEED | Tela composta | Estado |
|---|---|---|---|---|---|
| A1 | **Shell de aplicação** | sim (§2.2) | §46 SH1–SH16 `estável` | `seed-shell-preview` v0.6 | **estável** |
| A2 | **Lista** | sim (linha 35px, raio 0, coladas) | §28 + §43 + CP3 | `seed-tela-referencia` v0.2 | **estável** |
| A3 | **Tabela/grade** | sim (célula 31px, border-right) | §40–§42 `estável` | ❌ só bancada | **parcial** |
| A4 | **Painel/dashboard** | sim (widget raio 12, gap 16) | §48 PN1–PN54 `estável` | `seed-painel-preview` v0.10 | **estável** |
| A5 | **Página institucional** | — (fora do produto medido) | §47 MK1–MK22 `estável` | `seed-site-preview` v0.2 | **estável** |
| A6 | **Formulário** | sim (arquétipo declarado) | Bloco 2 §2–§14 `estável` + CP3 | ❌ só bancada | **parcial** |
| A7 | **Quadro/Kanban** | sim (§2.3) + **leitura visual C57–C59** da §13.5 | **§57 escrito** (QD1–QD14) | **`tela-quadro.html`** (gerador + molde + `suite-quadro.mjs` 35·0) | **RESOLVIDO.** A trilha fica TRANSPARENTE (CP2) contra o fundo tingido observado no C57 — a identidade vai para o cabeçalho. Mover tem três caminhos (CP30); os dois exigidos por norma estão provados. **`estável`** — gate DECLARADO em 2026-08-17 (ver nota abaixo da tabela) |
| A8 | **Detalhe de registro** | sim (modal 1192×738, raio 12, sem sombra, margem 24) — mais a LEITURA VISUAL C50–C56 da §13.4 | **§49 escrito** (PD1–PD18) | **`tela-detalhe.html`** (gerador + molde + `suite-detalhe.mjs` 47·0) | **RESOLVIDO — a PN-P3 FECHA.** Dois regimes: modal padrão + painel lateral não-modal como preferência do usuário; janela em dois degraus por botão. **`estável`** — gate DECLARADO em 2026-08-17 (ver nota abaixo da tabela) |
| A9 | **Hub** | sim (C18, gabarito único reutilizado) | CP14 declara o template | ❌ | **parcial** |
| A10 | **Calendário** | sim (evento raio 6, outline branco, encostados) | lente do §48 (PN) | dentro do painel | **parcial** |
| A11 | **Gantt / linha do tempo** | sim (barra 28px raio 6; pastilha 32px) + **leitura visual C77–C81** | lente do §48 (PN48 régua) **+ §58 GT1–GT16** (camada de relação entre itens) | **`tela-gantt.html`** (gabarito A5) | **RESOLVIDO.** Escala de 6px/dia declarada sob o CP32; a alternativa textual é a tabela completa. **`estável`** — gate DECLARADO em 2026-08-17 (ver nota abaixo da tabela) |
| A12 | **Mapa** | sim (cartão flutuante raio 6) | lente DP + §48 PN51–54 | dentro do painel | **parcial** |
| A13 | **Documento / leitura** | sim (C25 medido + C101–C106 observados) | ✅ **§88 (DC-01–DC-13)** — leitura; o EDITOR segue fora (ET-P3) | ✅ `tela-documento.html` | **`estável` (2026-08-23 — gate dele; o print é contrato medido)** |
| A14 | **Feed / atividade** | sim (superfície INVERTIDA C33 medida + C82–C86 observados) | ✅ **§87 (AT-01–AT-12)**; a exceção CP2-b sai de citação para USO medido | ✅ `tela-atividade.html` | **`estável` (2026-08-23 — gate dele; C27 ganhou spec)** |
| A15 | **Carga de trabalho / capacidade** | sim (célula 58×40, raio 6) | ❌ | ❌ | **AUSENTE — BLOQUEADO POR AMBIENTE (2026-08-16):** o workspace de referência **não tem instância** desta visualização, e criar uma é ação de escrita, proibida no modo somente leitura. Segue sem leitura visual por ausência de instância, não por falta de tentativa. Registrado na §14.1 do `estudo-clickup-completo.md` |
| A16 | **Equipe / diretório de pessoas** | sim (cartão 250×395, raio 4, elevation-2) | ❌ | ❌ | **AUSENTE** |
| A17 | **Busca / resultados** | ✅ ampliada em 2026-08-22 (busca POPULADA lida na sessão: 3 estados, realce por sublinhado — `leitura-f76-bordas.md` §2) | ✅ **§85 (BU-01–BU-12)** + §39 ⌘K (gatilho) + §4 (campo) | ✅ `tela-busca.html` | **`estável` (2026-08-23 — gate dele, com o retroativo HV1 nas 3 telas)** |
| A18 | **Configurações / preferências** | ✅ lida em 2026-08-22 (volta dirigida: settings/profile + notifications do CU, somente-leitura — `leitura-f76-bordas.md` §3) | ✅ **§86 (CF-01–CF-11)** | ✅ `tela-configuracoes.html` | **`estável` (2026-08-23 — gate dele)** |
| A19 | **Autenticação (login/recuperação)** | ✅ lido em 2026-08-22 (leitura dirigida: CU público login/forgot/signup MEDIDO + shadcn login-01 — `leitura-f76-bordas.md`) | ✅ **§83 (AU-01–AU-14)** | ✅ `tela-autenticacao.html` | **`estável` (2026-08-23 — gate dele, fecha a CD-P5)** |
| A20 | **Onboarding / primeiro uso** | parcial (§6.1 três vazios) | ✅ **§84 (ON-01–ON-09)** sobre o §25/Z1 | ✅ `tela-onboarding.html` | **`estável` (2026-08-23 — gate dele; Z5 provado por suíte)** |
| A21 | **Whiteboard / canvas livre** | sim (só leitura; edição NÃO medida, §12.3) | ❌ | ❌ | **FORA DO ESCOPO — decidido (D5)** |
| A22 | **Mapa mental** | sim (só vazio, C36 bifurcação) | C36 adotado no §25 (Z1) | ❌ | **FORA DO ESCOPO — decidido (D5)** |
| A23 | **Chat / mensageria** | parcial (containers `chat-shell-body`, `chat-message` medidos) | ❌ | ❌ | **AUSENTE — DENTRO do escopo (D5): haverá app de chat próprio, fora do ERP** |
>
> **LEITURA VISUAL FEITA em 2026-08-15** (§13 do `estudo-clickup-completo.md`, dispositivos C41–C49): tela cheia × painel lateral, seletor de modo em segmented control, composer como CONTÊINER (não `input`), chip de escopo dentro do campo, sugestões que citam o objeto pelo nome, faixa de conectores e fechamento por `»`. O A23 deixa de ser arquétipo sem referência.
| A24 | **Impresso / PDF** | — | §4c dataviz DI `estável` | `seed-dataviz-di` + prova física | **estável** |
| A25 | **E-mail** | — | `seed-email.md` 6/6 `estável` | 12 templates | **estável** |

| A26 | **Índice de hub** (acervo de um tipo de objeto: modelos no topo, escopo por sidebar, tabela nome+localização) | ❌ | ❌ | ❌ | **AUSENTE — descoberto na rodada visual de 2026-08-15 (C60–C64), observado IDÊNTICO em quatro hubs do produto de referência. Não estava previsto neste mapa.** |

> **Terceira volta visual (2026-08-15):** confirmado que **Tabela e Lista são arquétipos
> DISTINTOS, não densidades do mesmo** (C98) — a Lista agrupa e não numera; a Tabela desenha
> grade completa, numera linha e não agrupa. Nosso **A3** cobre a Tabela e o **A2** a Lista, e a
> F7.2 entregou os dois separados — decisão validada por observação, não por dedução.

**Contagem (v0.3, após a rodada visual de 2026-08-15):** **26** arquétipos previstos · **7 estáveis** · 8 parciais · **11 ausentes** *(A26 índice de hub é novo; o feed de atividade — C82–C86 — está sob observação e pode virar A27 quando houver caso SEED que o exija).*

> *Contagem anterior, preservada:* v0.2, após D5 — 25 arquétipos · 7 estáveis · 8 parciais · 9 ausentes.
(o chat entrou) · **2 fora do escopo, decididos**. Os 9 ausentes são o núcleo do trabalho.

---

## 3. Eixo B — Tipos de bloco (o vocabulário do CP2)

O CP2 fechou em seis tipos e declarou o racional: *"os três estudos de referência, os três
patterns nossos e os 45 componentes se descrevem integralmente com estes tipos."* Confrontando
contra os arquétipos ausentes do Eixo A, **três casos não se descrevem com os seis** — e cada um
é candidato a bloco novo ou a exceção nomeada:

| # | Estrutura | Cabe nos seis? | Proposta |
|---|---|---|---|
| B1 | **Canvas de ferramenta livre** (whiteboard, mapa mental, mapa) — o canvas é *acionável*, e o CP2 diz que canvas "nunca é acionável" | **não** | variante nomeada `canvas-interativo`, ou exceção declarada no CP2 |
| B2 | **Coluna de quadro** (Kanban): transparente, sem raio, sem fundo — não é peça (não tem superfície), não é canvas (não é fundo de tela), não é régua | **não** | tipo novo **`trilha`** (agrupador vertical transparente) — cobre coluna de Kanban, raia de gantt e faixa de pessoa da carga |
| B3 | **Agrupador de feed** (C33, superfície invertida: contêiner escuro, itens claros) | exceção já nomeada no CP2 | manter como exceção, mas **escrever a regra** (hoje é citação, não spec) |
| B4 | **Split com resizer** (C24, resizer de 1px) — dois canvas irmãos redimensionáveis | não descrito | regra de composição nova (não é bloco: é *relação* entre blocos) |
| B5 | Canvas · peça · âncora · régua · faixa · sobreposição | sim | vigentes, sem mudança |

**Consequência:** o CP2 provavelmente vai de **seis para sete tipos** (+ `trilha`) com duas
exceções escritas (canvas interativo, feed invertido) e uma regra de relação (split). Isso é
supersede formal do CP2 — decisão de gate.

---

## 4. Eixo C — Componentes e seletores

Universo derivado do produto medido + do que os arquétipos ausentes exigem. Os §1–§45 vigentes
não estão listados individualmente (todos `estável`); a tabela lista **o que falta**.

### 4.1 Entrada e seleção

| # | Componente | Por que é previsto | Estado |
|---|---|---|---|
| C1 | **Seletor de intervalo de datas** (range) | filtro de período é universal em ERP; o §13 cobre data única | **§61 `estável` ✅** (DH1–DH18) — **gate OBSERVADO em 2026-08-17**, BT-P1 e DH-P6 FECHADAS (§64.10) · bancada `banco-data.html` **v0.4**, `suite-data` **31 · 0 · 1** |
| C2 | **Seletor de data+hora** | agendamento de OS/visita | **§61 `estável` ✅** — a hora é EXTENSÃO da data (DH13), não componente próprio · mesmo gate OBSERVADO de 2026-08-17 (§64.10) |
| C3 | **Multi-select com chips** | filtro por vários responsáveis/status | **§60 `estável` ✅ (SG9–SG14)** — chips removíveis, colapso em +N, anúncio ao remover · SG-P2 FECHADA · **re-gate OBSERVADO em 2026-08-17 na v0.4**, BT-P1 FECHADA (§64.10) · bancada `banco-escolha.html` **v0.4**, `suite-escolha` **238 · 0 · 29** em 5 alvos |
| C4 | **Seletor de pessoa** (avatar + busca) | atribuição de responsável — no CU é componente próprio | **§62 `estável` ✅** (PS1–PS16) · bancada `banco-pessoa.html` **v0.1**, `suite-pessoa` **44 · 0 · 1** · **gate OBSERVADO em 2026-08-17, PS-P4 FECHADA** (§64.10) |
| C5 | **Seletor de entidade colorida** (espaço/projeto com glifo) | C1/CP23 tem a paleta; falta o *seletor* | **parcial** · leitura BLOQUEADA (só por escrita) — PS-P2 |
| C6 | **Seletor de ícone/cor** | criação de espaço/lista | **§65 `estável` ✅ (SI1–SI16)** — promovido em 2026-08-17 · consome a paleta FECHADA de 6 do CP23 e os 28 glifos do §45 · bancada `banco-identidade.html` **v0.2** *(errata: o mapa dizia v0.1; medido no `<title>`/selo do artefato)*, `suite-identidade` **32 · 0 · 0** |
| C7 | **Editor de texto rico** (toolbar mínima) | descrição de OS, documento (A13) | **§68 `estável` ✅ (ET1–ET14)** — promovido em 2026-08-17 · editor de CAMPO, seis marcas fechadas, saída em lista branca · bancada `banco-texto-rico.html` **v0.2** *(errata: o mapa dizia v0.1; medido no artefato)*, `suite-texto-rico` **25 · 0 · 0** · **o editor de DOCUMENTO (A13) segue AUSENTE** — fronteira declarada em §68.0 pelo C25 (660px, 16px/1,5, outra stack) |
| C8 | **Campo de menção `@`** | comentário em OS | **AUSENTE** · leitura BLOQUEADA (só por escrita) — PS-P2 |
| C9 | **Campo monetário / medida** (R$, kWp, kWh) | domínio SEED — hoje é `§5 número` genérico | **§59 ESCRITO ✅ (VD1–VD16).** Leitura visual NÃO SE APLICA: o produto de referência não tem campo de potência. **Bancada `banco-dominio.html` ENTREGUE** (gerador + molde + `suite-dominio.mjs` 28·0) |
| C10 | **Campo de duração** (8h, 3d) | gantt/carga precisam | **§59 ESCRITO ✅ (VD10).** Entrada composta normalizada; a jornada é parâmetro do produto, não do DS (VD-P2). **Bancada ENTREGUE** |
| C11 | **Rating / prioridade** (bandeira, estrelas) | prioridade de OS | **§63 `estável` ✅** (PR1–PR12) · bancada `banco-prioridade.html` **v0.2**, `suite-prioridade` **18 · 0 · 0** · **re-gate OBSERVADO em 2026-08-17, BT-P1 FECHADA** (§64.10) |
| C12 | **Toggle group / segmented control** | troca de lente (o §48 usa, sem spec própria) | **§60 `estável` ✅ (SG1–SG8)** — três saídas com régua, contra a divergência de canon · SG-P1 FECHADA (6 controles em 4 arquivos auditados) · mesmo re-gate OBSERVADO de 2026-08-17 (§64.10) |
| C13 | **Campo de senha** com revelar | tela de autenticação (A19) | **§66 `estável` ✅ (CD1–CD16)** — promovido em 2026-08-17 · junto com C14, porque os dois são governados pelo SC 3.3.8 · bancada `banco-credencial.html` **v0.2** *(errata: o mapa dizia v0.1; medido no artefato)*, `suite-credencial` **30 · 0 · 0** · ~~a TELA A19 segue ausente (CD-P5)~~ **CD-P5 FECHADA em 2026-08-23: a tela existe, `estável` (§83, F7.6)** |
| C14 | **Campo de código/OTP** | recuperação de acesso | **§66 `estável` ✅ (CD10–CD13)** · **UM campo, nunca seis caixinhas** — medido em casa: colar deixa 6/6 dígitos no canônico e 1/6 no contraexemplo |
| C15 | **Input inline editável** (clique no valor → edita) | edição direta na lista/tabela — PN22–PN41 cobre no painel | **§67 `estável` ✅ (IL1–IL14)** — promovido em 2026-08-17 · o componente que a grade do PN37 consome · bancada `banco-edicao-linha.html` **v0.2** *(errata: o mapa dizia v0.1; medido no artefato)*, `suite-edicao-linha` **23 · 0 · 0** · decisão: **clicar fora CONFIRMA** (erro reversível > irreversível) |

### 4.2 Estrutura, dado e navegação

| # | Componente | Por que | Estado |
|---|---|---|---|
| C16 | **Árvore (tree) com expandir/recolher** | sidebar do shell usa | **RESOLVIDO na F7.2** — §52 (AR1–AR8), **`estável`** — gate DECLARADO em 2026-08-17 (ver nota abaixo da tabela) |
| C17 | **Coluna redimensionável** (drag no cabeçalho) | tabela real de ERP | **RESOLVIDO na F7.2** — §51/PC1–PC3 (resizer = slider, alvo ≥24px) |
| C18 | **Reordenar coluna** (drag horizontal) | idem | **RESOLVIDO na F7.2** — §51/PC4–PC5 (três caminhos do CP30 + painel de colunas) |
| C19 | **Agrupamento de linhas** (group by com cabeçalho colapsável + **contador junto ao rótulo**, C26) | lista do CU é agrupada por padrão | **RESOLVIDO na F7.2** — §50 (AG1–AG8), sem `role=grid` |
| C20 | **Ordenação multi-coluna** | §40 cobre sort simples | **RESOLVIDO na F7.2** — §40-b/DT9–DT11 (teto 3, ordem como número) |
| C21 | **Filtro composto** (E/OU aninhado) | §42 cobre chips de filtro aplicado | **RESOLVIDO na F7.2** — §53 (FC1–FC6), profundidade 2 |
| C22 | **Numeração de linha** (C30) | grade | **RESOLVIDO na F7.2** — §40-b/DT12 (opt-in, posicional, nunca endereço) |
| C23 | **Célula editável de grade** | fronteira declarada no backlog v1.3 | **AUSENTE** |
| C24 | **Split/resizer** (C24) | detalhe lado a lado | **AUSENTE** |
| C25 | **Sidebar colapsável com memória** | medido no CU (§4.3 cronometrado) | **parcial** (SH12 colapsa; sem persistência — o PC6 da F7.2 já declarou persistência POR GABARITO para largura de coluna, mesma régua) |
| C26 | **Barra de progresso de etapa em linha** | OS em andamento | **parcial** (§20) |
| C27 | **Timeline/histórico vertical** | atividade de registro (A14) | **parcial** (existe no painel `.tl`, sem spec) |
| C28 | **Comentário com thread** | colaboração em OS | **AUSENTE** |
| C29 | **Anexo/arquivo em lista** | §14 cobre upload; falta a *lista de anexos* | **parcial** |
| C30 | **Cartão de quadro (Kanban card)** | A7 | **AUSENTE** |
| C31 | **Alvo de soltura (drop target)** (C20 — borda tracejada, nunca cor saturada) | arraste em quadro/gantt | **parcial** (PN33 no painel; a lei geral virou CP30 na F7.1) |
| C32 | **Barra de ações em massa flutuante** | §41 cobre seleção | **RESOLVIDO na F7.2** — §41-b/SL7 (variante nomeada, rodapé reservado) |
| C33 | **Breadcrumb com truncamento por container** | §36 existe; falta a regra de container | **parcial** |
| C34 | **Menu de contexto (botão direito)** | PN50 cobre no painel; falta geral | **parcial** |
| C35 | **Atalhos de teclado / cheat sheet** | ⌘K existe; falta o mapa de atalhos | **AUSENTE** |
| C36 | **Indicador de presença em tempo real** (quem está vendo) | C2 cobre presença de avatar | **parcial** |

> ### Nota de promoção — 2026-08-17: gate DECLARADO, e o que isso quer dizer
>
> As linhas acima marcadas **`estável` — gate DECLARADO em 2026-08-17** foram promovidas porque o
> bloqueio **objetivo** que as segurava deixou de existir: nenhum artefato do acervo tem defeito
> medido em aberto. A varredura transversal `validacao/suite-reflow.mjs` (contrato **BT7**, reflow a
> 320 e 390px + alcance de teclado + nome acessível de faixa rolável) mede hoje **34 artefatos** com
> **120 PASS · 0 FAIL**, e a bateria completa de suítes foi reexecutada sem nenhum FAIL em nenhuma
> camada. A regra do projeto — *"artefato com defeito aberto não promove"* — está satisfeita.
>
> **O que "gate DECLARADO" significa, e por que a distinção é registrada.** O Rafael respondeu
> **"aprovo. siga"** a um texto que listava estes artefatos nominalmente. **Não há registro de quais
> capturas ele abriu**, e **quatro deles foram alterados depois dessa frase** — `tela-painel`,
> `tela-quadro`, `tela-gantt` e `tela-referencia`, pelos consertos de BT7 e FIG-03 da mesma rodada.
> Portanto: *aprovado por declaração*, não *aprovado depois de visto*. **Se o gate não tiver ocorrido
> nestes artefatos, ou não cobrir as versões consertadas, corrigir aqui por errata.** É o mesmo
> padrão de rastreabilidade usado no `seed-componentes.md` §45.5 e no `validacao/MANIFESTO.md` §78.5
> e §79.9.

**Contagem do eixo C:** 36 itens previstos além dos 45 estáveis. Estado após a **F7.5** (2026-08-16): **19 RESOLVIDOS** — C16–C22 e C32 (F7.2) + C9/C10 (§59), C3/C12 (§60), C1/C2 (§61), C4 (§62), C11 (§63), C6 (§65), C13/C14 (§66), C15 (§67) e C7 (§68) —, **2 ausentes e BLOQUEADOS** (C5 e C8, pela PS-P2: só se leem escrevendo no produto de referência), **8 ausentes** (C23, C24, C28, C30, C35 e os que dependem de arquétipo) e o restante parcial. *(Antes da F7.2: 17 ausentes, 19 parciais.)* **Ressalva de método:** esta contagem foi refeita à mão sobre a tabela acima; recontar por comando quando houver shell sobre a pasta.

---

## 5. Eixo D — Visualizações de dado

| # | Visualização | Estado |
|---|---|---|
| D1 | Barra, linha, área, pizza, dispersão (DG1–DG17) | **estável** |
| D2 | Bullet, gauge, sparkline (DM1–DM11) | **estável** |
| D3 | Mapa coroplético MG/ES/BA (DP1–DP15) | **estável** |
| D4 | Impresso/PDF (DI) | **estável** |
| D5 | **Gantt com dependências** (FS/SS/FF/SF, lag, caminho crítico, linha de base) | **§58 ESCRITO ✅ (GT1–GT16) — a PN-P2 FECHA.** PN42–PN45 seguem reservados e vazios na numeração do §48 de propósito (renumerar invalidaria âncoras MD5 de cinco artefatos executáveis); o conteúdo vive no §58. **Gabarito A5 `tela-gantt.html` ENTREGUE** (gerador + molde + `suite-gantt.mjs` 35·0) |
| D6 | **Heatmap / matriz de capacidade** (A15) | **AUSENTE** |
| D7 | **Funil** (comercial: proposta → fechamento) | **AUSENTE** |
| D8 | **Empilhada 100%, waterfall, boxplot, combo de eixo duplo** | **AUSENTE** — fronteira declarada no DG9 (aditiva, entra com demanda) |
| D9 | **Donut de progresso** (medido no CU: 60px, `linecap` diferenciado, C32) | **parcial** (DM tem gauge; donut não) |
| D10 | **Mapa nacional** (escala município → UF → país) | **AUSENTE** — backlog v1.8 |

---

## 6. Eixo E — Estados, comportamento e sistema

### 6.1 Estados não-felizes (§6 do estudo)

| Estado | Medido no CU | SEED |
|---|---|---|
| Vazio (três tratamentos distintos, **não intercambiáveis**) | sim | §25 Z1 com **seis** tipos — **estável e mais completo que a referência** |
| Carregando (skeleton duas camadas, entrada deslocada — C23) | sim | §19 `estável`; **C23 não adotado** — parcial |
| Erro | sim | §15/§16/§17 `estável` |
| Sem permissão | **não medido lá** (§12.3) | §25 Z1 cobre — **estável** |
| Offline | **não medido lá** | ✅ **§90 (OF1–OF11)** `estável` (2026-08-24, F7.7-P5, emendada na mesma data) — dois estados por decisão dele; **OF10** dá os quatro estados de sincronização, porque o app de campo offline (OS e ponto) é decisão tomada; ⚠ o ponto tem regra própria (Portaria MTP 671/2021, REP-P) e o comprovante ao trabalhador é peça que não existe — **PT-P1** |
| Zero resultado de busca | sim | §25 Z1 — estável |
| Lista longa (virtualização) | sim | ✅ **§92 (LL1–LL6)** `estável` (2026-08-24, F7.7-P5) — **fecha a BU-P1**; limiar MEDIDO em cobaia (2.000 linhas); sem conferência por declaração (LL-P1) |
| Estado neutro sem croma (C19) | sim | CP19 adotado — estável |
| Conflito de edição concorrente | não medido | ✅ **§91 (CE1–CE9)** `estável` (2026-08-24, F7.7-P5, emendada na mesma data) — otimista + presença, com trava exclusiva para objeto que gera documento com ART; **CE4-f** separa COLETA (offline, sem trava) de EMISSÃO (online, com trava), resolvendo a colisão com o app de campo; **CE9** é o conflito detectado na sincronização |
| Ação irreversível / confirmação destrutiva | parcial | §30 modal + §1 destrutivo — parcial (falta o *pattern*) |

### 6.2 Comportamento e densidade

| Item | Estado |
|---|---|
| **Container queries nomeadas** (C22; o CU tem **60+**, e a barra de ferramentas sozinha tem 7 pontos de quebra próprios) | **parcial** — o shell usa `@container app`; o resto do DS é media-query. **É a lacuna estrutural mais séria do eixo**, porque a §5.1 do estudo diz que testar por janela mede a coisa errada |
| Movimento tokenizado (dur/ease) | estável |
| `prefers-reduced-motion` | **parcial** — declarado, sem varredura (o próprio estudo não mediu, §12.4) |
| Anel de foco dupla camada (C29) | **parcial** — nosso anel é simples; C29 é proposta não adotada |
| Arraste (C20 borda tracejada) | parcial (PN33) |
| Persistência de preferência (sidebar, densidade, lente) | **AUSENTE** |
| Rolagem infinita × paginação | parcial (§37) |

### 6.3 Camada de sistema

| Item | Estado |
|---|---|
| Tokens 3 camadas + gêmeos + paridade | **estável** |
| Tema escuro (degrau 800 como ponto fixo; alphas maiores — §7) | **estável** |
| Acessibilidade WCAG 2.2 AA | **estável** (e acima da referência: o estudo mediu reprovações sistemáticas lá) |
| Microcópia PT-BR | **ESTÁVEL desde 2026-08-24** — nasce a **§89 do `seed-componentes.md`** (MC1–MC18) por cinco decisões dele no gate, sobre rodada de 12 fontes. Inclui a parte que só fonte brasileira resolvia: **registro verbal por elemento** (§89.3, do GNOME Brasil + guia pt-BR da Microsoft) e a distinção "não é possível" × "não foi possível". Sem guarda automatizada ainda (MC-P2) |
| **Auditoria de valor não-tokenizado (C31)** — *"drift não se manifesta como cor errada, e sim como cor quase certa"* | **ESTÁVEL desde 2026-08-24 (F7.7-P3).** A `auditoria-c31.mjs` ganhou a **perna de COR**: valor computado × inventário de tokens, com alpha COMPOSTO, em três classes (token exato · **QUASE-CERTO a ΔE76 ≤ 2,3** — o drift invisível · solta). Régua calibrada contra o número do próprio canônico (§7.5: o hex inventado `#0A6B60` a ΔE 1,03 do stop, que viveu quatro rodadas até virar peça aprovada). Medido no acervo: **21.774 pinturas casam exatamente com token, 2 quase-certas (as duas legítimas)** |
| Conversor `color(srgb …)` no script de contraste | **ESTÁVEL desde 2026-08-24 (F7.7-P2).** Nasce `ferramentas/cor.py` + `cor.mjs` (gêmeos, prova 20·0 nos dois, com a **paridade entre eles medida**): `color(srgb r g b / α)`, composição de alpha, WCAG e ΔE76; notação desconhecida ABORTA. Os 13 scripts de contraste migrados com **saída idêntica**, provada por diff |

---

## 7. A questão das bancadas — e por que ela não é "manter o erro"

O Rafael perguntou se os previews atendem o modelo aprendido. **Não atendem — e não deveriam**,
porque são artefatos de outra classe. A distinção, declarada para não se perder:

- **Bancada** (`seed-superficies-preview.html` e os outros dez): exercita **todos os estados de
  cada componente** lado a lado para as suítes medirem. É o que sustenta os **855 testes jsdom**
  hoje verdes. Nenhum produto se julga por ela — o ClickUp também tem a sua, e ela não é o
  ClickUp.
- **Tela composta** (`seed-tela-referencia.html`): a tela de produto montada com componentes já
  estáveis, medida pela `suite-composicao`. Foi ela que respondeu ao julgamento do "100%".

**O que a CP-P4 fez foi corrigir o mecanismo nas bancadas** (borda → par sombra+anel), o que era
necessário e insuficiente. **O que falta é a vitrine**: uma tela composta por arquétipo — que é
exatamente o que este mapa lista como ausente no Eixo A.

*Onde eu concordo com a crítica:* tratar "preview de componente" e "tela" com o mesmo nome
(`*-preview.html`) esconde a diferença e produziu esta confusão. **Proposta:** renomear a classe —
bancadas viram `banco-*.html`, telas viram `tela-*.html` — com supersede formal e reancoragem no
MANIFESTO. Custo: mexe em caminho de suíte (a dívida P1 aberta desde v1.4 seria fechada no mesmo
movimento).

---

## 8. Plano proposto — sete fases

Ordenado por **valor para o ERP** e por **dependência** (o que destrava mais coisa vem antes).
Cada fase = pesquisa 3 rodadas → consolidado → aprovo → produção em lote → cinco camadas → gate.

| Fase | Escopo | Entrega | Por que nesta posição |
|---|---|---|---|
| **F7.1 — Fundação de composição** ✅ **ENTREGUE 2026-08-15** | supersede do CP2 (+`trilha`, exceções B1/B3, relação B4) · tabela do §3 completada para os 25 arquétipos · renomeação bancada×tela · **container queries nomeadas como lei** | `seed-composicao.md` v2.0 | Tudo depois depende do vocabulário fechado. Sem isso, cada tela nova reabre a discussão |
| **F7.2 — Telas de dado** ✅ **ENTREGUE 2026-08-15** | A3 tabela/grade · A2 lista agrupada (C19, C26) · componentes C16–C22, C32 | `tela-tabela.html` + `tela-lista.html` + §50–§53 + extensões DT9–DT12/SL6–SL8/TD6/LD6 + `suite-container.mjs` + `contraste-f72.py` | O coração do ERP; consome o que já é estável. **Pendente do gate visual do Rafael — é o gate que promove CP25–CP31 de `rascunho` a `estável`** |
| **F7.3 — Registro** *(FECHADA, com uma exceção nomeada)* | **§49 detalhe ✅ `estável`** (PD1–PD19, gabarito A8, fecha PN-P3) · **§54 botão dividido ✅ `estável`** (BD1–BD9 + MN9, com primeiro uso em tela no composer) · **§55 chat ✅ `estável`** · **§56 atividade e comentários ✅ `estável`** (CM1–CM12) · **A6 formulário — NÃO ENTREGUE, bloqueado**: o único formulário do workspace de referência não carrega ("Space not found · PROJ_105"), então o arquétipo segue sem leitura visual por indisponibilidade do ambiente. Escrever a spec sem leitura repetiria o erro que a §13 nasceu para impedir | §49, §54, §56 e o gabarito A8 entregues e promovidos | Todo ERP é lista → detalhe; o caminho deixou de morrer na lista |
| **F7.4 — Fluxo de trabalho** *(FECHADA, com uma exceção nomeada)* | **A7 quadro ✅ `estável`** (§57 QD1–QD14, `tela-quadro.html`, suíte 35·0) · **D5/A11 gantt ✅ `estável`** (§58 GT1–GT17, `tela-gantt.html`, suíte 43·0; fecha a PN-P2, aberta desde a Fase 6) · **A15 carga de trabalho — NÃO ENTREGUE, bloqueado**: o workspace de referência **não tem visualização de carga criada**, e criar uma seria ação de escrita, proibida no modo somente leitura (§14.1 do estudo). Segue sem leitura visual por ausência de instância, não por falta de tentativa | §57, §58 e os gabaritos A7 e A5, todos promovidos | Arquétipos novos, com decisões de verdade — é aqui que a pesquisa pesa |
| **F7.5 — Entrada e seletores** *(FILA FECHADA no alcançável — 2026-08-16)* | **C9, C10 ✅** (§59) · **C3, C12 ✅** (§60, `estável`) · **C1, C2 ✅** (§61) · **C4 ✅** (§62) · **C11 ✅** (§63) · **C6 ✅** (§65) · **C13, C14 ✅** (§66) · **C15 ✅** (§67) · **C7 ✅** (§68) · **C5 e C8 BLOQUEADOS pela PS-P2** — só se abrem escrevendo no produto de referência. Transversal: **§64 BT1–BT6** (bancada e tema). **Nove bancadas, nove suítes — as NOVE em `estável`.** Quatro promovidas em 2026-08-17 por gate **declarado** (§65, §66, §67, §68); o **§59** também; e **§60, §61, §62 e §63** fecharam o re-gate em 2026-08-17 por gate **OBSERVADO** — **BT-P1, PS-P4 e DH-P6 FECHADAS** (§64.10 do `seed-componentes.md`). *Fronteira: o gate observado cobre `banco-escolha` v0.4, `banco-data` v0.4, `banco-prioridade` v0.2 e `banco-pessoa` v0.1; os outros cinco seguem com gate declarado.* | §59 + extensão do Bloco 2 | Alimenta todas as telas anteriores |
| **F7.6 — Bordas do sistema** ✅ **ENTREGUE 2026-08-22/23 (6/6)** | A19 autenticação (§83, fecha CD-P5) · A20 onboarding (§84) · A17 busca (§85) · A18 configurações (§86) · A14 feed (§87, C27 ganha spec) · A13 documento (§88, print como contrato) | as 6 `tela-*.html` + specs §83–§88 + 6 suítes (101·0 somados) + `leitura-f76-bordas.md` | Menos crítico para operação, indispensável para produto completo — **e fechou em dois dias de gates encadeados** |
| **F7.7 — Instrumentação e rigor** 🔵 **EM CURSO — P1 a P4 ENTREGUES (2026-08-23/24)** | **P1 porte** (a camada de validação volta a rodar: 55 suítes, 20 geradores, `ambiente.mjs`, PLACAR.md como linha de base) · **P2 módulo de cor** (fecha a lacuna do §12.5) · **P3 perna de cor na C31 + a lei do CP27 varrida no acervo** (guarda nova; achou 9 artefatos com nome fora da lista, e o CP27 foi de 8 para 10 nomes por supersede) · **P4 microcópia** (§89, MC1–MC18) | ferramentas + specs | Fecha as lacunas de método que o próprio estudo apontou nas nossas ferramentas. **P5 ENTREGUE** (2026-08-24: §90 offline · §91 conflito · §92 lista longa, cinco decisões dele; as três linhas do §6.1 saem de ❌ para `estável`; §90 e §91 emendadas na mesma data pelo app de campo offline) · **P6 ENTREGUE** (os 31 gastos removidos por veredito dele, 537 KB; o git é a lixeira) · **A F7.7 FECHA, E COM ELA A F7 INTEIRA** |

**Custo honesto:** isto é ordem de grandeza **maior que tudo que já foi feito** (a F3 inteira, com
7 blocos e 45 componentes, foi menor que a F7.2+F7.3 somadas). Não há atalho que preserve o rigor
— e o rigor é o que faz o sistema valer. O que dá para acelerar é **cortar escopo declarando a
fronteira** (ex.: A21 whiteboard e A22 mapa mental já entram como fora de escopo proposto).

---

## 9. Decisões tomadas — gate de 2026-08-15

As seis perguntas da v0.1 foram respondidas pelo Rafael na mesma sessão. Registro formal,
com o verbatim onde ele decide e o que cada decisão obriga:

**D1 — Ordem das fases: FUNDAÇÃO PRIMEIRO.** Verbatim: *"acho que fundação primeiro"* +
*"podemos seguir a ordem que preferir"*. Vale a sequência F7.1 → F7.2 → F7.3 → F7.4 → F7.5 →
F7.6 → F7.7 do §8. **Racional declarado:** as decisões D2/D3/D4 mudam a FORMA de todo artefato
futuro — produzir telas antes seria construir com o vocabulário velho e refazer depois; e a
renomeação da D3 custa ~14 caminhos de suíte hoje contra o dobro daqui a três fases.
*Alternativa descartada:* puxar F7.4 (Kanban) para frente, considerada caso o fluxo de obra
fosse a dor imediata — não é.

**D2 — CP2 vai de SEIS para SETE tipos de bloco. APROVADO.** Entra `trilha` (agrupador
vertical transparente: coluna de Kanban, raia de gantt, faixa de pessoa da carga), mais duas
exceções escritas (B1 canvas interativo · B3 feed invertido/C33) e uma regra de relação
(B4 split com resizer). Executa-se por **supersede formal do CP2** na F7.1.
*Alternativa descartada:* coluna de Kanban como exceção dentro de "peça" — rejeitada porque
trilha não tem superfície (nem fundo, nem raio, nem separação), e chamar de peça algo que não
se separa do canvas esvazia a definição de peça.

**D3 — Renomeação BANCADA × TELA. APROVADO.** `banco-*.html` = catálogo de estados de
componente (o mesmo componente repetido em todos os estados, fora de contexto de uso; é o que
as suítes medem). `tela-*.html` = caso de uso montado (dados plausíveis, cada componente uma
vez no papel dele; é o que o gate visual julga e a `suite-composicao` mede). **Régua de uso:**
pergunta sobre COMPORTAMENTO de um componente → bancada; pergunta sobre se a TELA está boa →
tela. Fecha de carona a dívida P1 (esquema de caminho das suítes), aberta desde o marco v1.4 e
que já cobrou preço duas vezes na sessão de 2026-08-15.

**D4 — CONTAINER QUERIES NOMEADAS como lei do DS. APROVADO** (*"se vc acha que é o melhor
caminho, concordo"*). Fato que sustenta: o ClickUp tem **60+ container queries nomeadas**
contra 54 media queries, e a barra de ferramentas sozinha tem **sete pontos de quebra do
próprio container** (§5.1, MEDIDO). Consequência declarada, que é cara e precisa estar
escrita: **muda como cada preview e cada suíte de render medem** — simular largura de janela
deixa de valer como prova; a prova passa a ser redimensionar o CONTAINER. As suítes de render
existentes precisam de guarda nova (F7.7).

**D5 — Fronteiras. Whiteboard (A21) e mapa mental (A22) FORA do DS;** verbatim: *"são
funcionalidades que podem ser ampliadas depois, e não vejo necessidade ser prevista no DS"*.
**Chat (A23) DENTRO**, e a razão amplia o escopo do sistema inteiro: *"vamos ter construção de
app de chat, mesmo que não fique dentro do ERP (…) estamos criando DS para suprir templates,
blocos que padronizam o uso para qualquer tipo de criação, site, app, ERP ou qualquer coisa."*
**Consequência de método:** o DS não é "o DS do ERP" — é o sistema de qualquer produto SEED, e
todo arquétipo deve ser julgado por essa régua, não pela de um ERP só.

**D6 — Campos de domínio (medida/monetário C9, duração C10): COMPONENTE PRÓPRIO. APROVADO** (*"sigo sua recomendação"*, 2026-08-15). A pergunta da v0.1
não estava clara e foi reformulada. *Componente próprio* = seção nova no canônico, com
anatomia, estados, tokens, código e testes — o comportamento fica garantido, ao custo de mais
superfície para manter. *Variante documentada* = subseção dentro do §5 Número — custo baixo,
com o risco de que o que a spec não fixar seja re-decidido por quem implementa (origem de
drift). **Recomendação registrada:** componente próprio para medida/monetário e duração
(regra de domínio real: casas decimais fixas por unidade, sufixo travado kWp/kWh/R$, teclado
numérico em `pointer: coarse`, alinhamento à direita em mono pelo PN21d, validação de faixa),
variante para os demais. **Executa-se na F7.5** como seções novas do canônico (numeração a definir na fase), com anatomia, estados, tokens, código e testes — a mesma régua dos §1–§45. *Alternativa descartada:* variante dentro do §5 Número — rejeitada porque o volume de regra (casas por unidade, sufixo travado, teclado, alinhamento mono, faixa) não cabe em subseção sem deixar lacuna para quem implementa decidir sozinho, que é a origem medida do drift (§10b.1 do estudo ClickUp).

## 10. Registro do documento

| Campo | Valor |
|---|---|
| Arquivo | `mapa-cobertura-ds.md` |
| Versão | **v1.1** · 2026-08-15 (v0.1 consolidado; v0.2 registra D1–D5; v0.3 fecha a D6; v0.4 corrige a errata da contagem de gabaritos e registra o estado da F7.1; **v0.5 registra a ENTREGA da F7.2 e reclassifica os oito itens do eixo C que ela fecha**; **v0.6 acrescenta a §11 — sessão de 2026-08-17 tarde: E-P1, CD-P2 e CD-P3 fechadas, BT-P1/PS-P4 prontas para gate**; **v0.7 acrescenta a §12 — o gate das quatro bancadas é OBSERVADO, BT-P1/PS-P4/DH-P6 FECHAM, e seis linhas do eixo C são reclassificadas ou corrigidas por errata de versão medida**; **v0.8 acrescenta a §13 — nasce a auditoria transversal de consumidor (§69 do `seed-componentes.md`), a EA-P1 fecha, e a auditoria da SI-P4 e da IL-P2 acaba**; **v0.9 acrescenta a §14 — a GI2 vira guarda transversal, a BT-P3 fecha na forma supersedida, e o acervo deixa de estar sem defeito medido em aberto**; **v1.0 acrescenta a §15 — a CD-P7 ganha rito completo e veredito proposto, e a rodada de normas achou CD-P9**; **v1.1 acrescenta a §16 — BT-P6 fecha na causa, CD-P7 fecha por decisão, SI-P4/IL-P2/PS-P5 decididas, e nasce a MR-P1: o número 3,22 que sustenta a regra de branco sobre a marca nunca existiu**) |
| Estado | `consolidado APROVADO nas decisões` — **D1–D6 todas decididas** em 2026-08-15; o inventário dos eixos A–E segue proposta de escopo, item a item, pelo fluxo normal |
| Origem | Instrução do Rafael em 2026-08-15: prever *"cada tipo de estrutura que precisamos criar (…) cada caixa, cada tipo de seletor, cada tipo de visualização"*, para *"fechar a maior quantidade possível de possibilidades"* |
| Fontes lidas (N3) | `estudo-clickup-completo.md` §2.1–§2.3 · §5.1 · §10b.1–10b.2 · §12 completo · lista C13–C36 · `seed-composicao.md` CP2 · CP3 + tabela do §3 · `seed-componentes.md` índice das 49 seções · `validacao/MANIFESTO.md` v7.8 |
| Fato vs. inferência | Todos os números de geometria/cor atribuídos ao ClickUp são **MEDIDOS** e citados do estudo. A classificação estável/parcial/ausente é **medida** contra o repositório. A ordem das fases, o `trilha` do B2 e as fronteiras propostas são **inferência minha**, sujeitas ao gate |
| Contagens | 25 arquétipos (7 estáveis · 8 parciais · 8 ausentes · 2 fora de escopo) · 36 componentes previstos além dos 45 estáveis (17 ausentes) · 10 visualizações (4 estáveis · 5 ausentes) · 10 estados não-felizes (2 ausentes) |
| Não decide | Nenhum valor, nenhum token, nenhuma spec. Cada item ausente entra pelo fluxo normal, um pacote por sessão |
| **Régua de escopo (D5)** | O DS **não é o DS do ERP** — é o sistema de qualquer produto SEED (site, app, ERP, chat, impresso, e-mail). Todo arquétipo se julga por essa régua. Consequência prática: um arquétipo não pode ser cortado só por não servir ao ERP |
| Estado da F7.1 | **COMPLETA** (2026-08-15). Movimento 1: `seed-composicao.md` **v2.0** com CP25–CP31, 7 tipos de bloco, 23 gabaritos, 5 supersedes formais. Movimento 2: renomeação do CP31 executada — 19 artefatos, 79 referências, dívida P1 fechada |
| Estado da F7.2 | **ENTREGUE** (2026-08-15), após 3 rodadas de pesquisa e 11 decisões aprovadas pelo Rafael. Dois gabaritos (`tela-tabela.html` A3 · `tela-lista.html` A2), quatro seções novas (§50 agrupamento · §51 personalização de colunas · §52 árvore · §53 filtro composto), quatro extensões (§40-b DT9–DT12 · §41-b SL6–SL8 · §42-b TD6 · §43-b LD6), a **guarda de contêiner** (`suite-container.mjs`, 62 verificações) e `contraste-f72.py` (42 medições). Tudo em **`estável`** — gate DECLARADO em 2026-08-17 (ver nota abaixo da tabela) |
| Achado da F7.2 sobre a F7.1 | Ao abrir a fase, **15 das 21 suítes reprovavam por ENOENT** contra o zip da fonte única: o alvo padrão delas ainda era o nome ANTIGO do CP31. Corrigido por `corrige-alvos-f72.py` (37 ocorrências em 27 arquivos, dry-run antes). Os números da regressão da v8.0 **eram corretos** (a soma bate: 1.151) — o que faltava era o alvo apontar para o artefato renomeado |
| Próximo passo | **Gate visual do Rafael sobre as CINCO telas** (A3 tabela · A2 lista · A23 chat · A8 detalhe · tela de referência) → promoção de CP25–CP31, §50–§53, §55 e §49 a `estável` → restante da F7.3 (A6 formulário e §56 comentários, ambos **depois de navegar**) |

> **ERRATA FORMAL, registrada em 2026-08-20 (décima parte) — não corrigida de propósito.**
> A linha **Versão** desta tabela diz `v1.1 · 2026-08-15`, enquanto o cabeçalho do documento diz
> **v2.10 · 2026-08-20**. O número **do cabeçalho é o corrente**; o desta tabela **parou de ser
> atualizado** a partir da §17. *Isto está escrito em vez de consertado porque reescrever o
> histórico de dezoito versões de memória seria inventar valores — e a régua desta casa é que
> divergência medida se DECLARA antes de se corrigir.* **Quem precisa da versão corrente lê o
> cabeçalho; quem precisa do histórico lê os cabeçalhos das seções §11 em diante, uma por parte de
> sessão.** Reconstruir esta linha a partir deles é trabalho de uma sessão futura, e não bloqueia
> nada.

---

## 11. Registro da sessão de 2026-08-17 (tarde) — BT-P1/PS-P4 preparadas, E-P1 fechada, CD-P2/CD-P3 fechadas

> Seção acrescentada, não substituída. O relato completo está no `validacao/MANIFESTO.md` **§80** e o
> contrato novo no `seed-componentes.md` **§64.9**. Escrita para um leitor que nunca viu a conversa
> que a gerou.

### 11.1 O que mudou no inventário

| Eixo / item | Antes | Depois | Evidência |
|---|---|---|---|
| **E-mail** (`et-*`, `en-*`, `ea-*`, `seed-email-*`) | fora da varredura de reflow, **sem decisão** (pendência E-P1) | contrato próprio **EM-BT7** (§64.9.1), 14 artefatos medidos, 12 consertados | `validacao/suite-email-reflow.mjs` **16 · 0 · 26** · `suite-email` **179 · 0** · `contraste-email` **14 pares, 0 reprovações** |
| **Fronteira de campo** (SC 1.4.11) | sem instrumento | auditoria por pixel no acervo | `validacao/auditoria-borda-campo.mjs` **10 · 0 · 10** (9 artefatos × 2 temas) |
| **Rito de promoção** | script de sessão, perdido a cada rodada | instrumento permanente | `validacao/render-promocao.mjs` **168 · 0** (4 artefatos × 5 larguras × 2 temas) |
| **Contraste na composição** | só o `tela-painel` (o instrumento morria em qualquer outro alvo) | qualquer artefato, dois temas | `validacao/contraste-composicao.mjs` **8 · 0** |
| **Gate visual** | "abre o arquivo e procura" | **folha de captura** obrigatória no rito (§64.9.3) | `validacao/folha-captura.mjs` → `render-audit/folha-banco-*.html`, 20 pares de estado |

### 11.2 Arquétipos — nenhum avanço de cobertura nesta sessão, e o motivo

O eixo **A** (A19 autenticação, A13 documento, A26 índice de hub) estava no **quarto** item da ordem
decidida pelo Rafael, condicionado a "se sobrar sessão". Não sobrou: os três primeiros itens
consumiram a fila, e três defeitos de instrumento (21º, 22º e 23º — todos pegos **antes** de tocar
artefato) custaram o tempo restante. **Ausência de trabalho, declarada — não silêncio.**

### 11.3 Estado dos quatro artefatos da BT-P1/PS-P4

`banco-escolha` **v0.4** · `banco-data` **v0.4** · `banco-prioridade` **v0.2** · `banco-pessoa`
**v0.1** — todos com **rito de promoção completo** (suíte própria, BT7, render em cinco larguras e
dois temas, contraste na composição, fronteira de campo) e **folha de captura entregue**. Nenhum
defeito medido em aberto. **Falta apenas o gate visual do Rafael** — que é o que a BT-P1 e a PS-P4
sempre foram.

> **Nota de rastreabilidade:** os quatro artefatos mudaram **depois** da primeira geração das folhas
> (conserto CD-P3 na borda do `<select>` da barra de provas). O rito foi **reexecutado** e as folhas
> **regeradas**, para que o gate cubra a versão real em vez de virar errata. *"Aprovado" cobre o que
> foi olhado, não o que estava por perto.*

### 11.4 Pendências novas registradas no inventário

**CD-P6** — `--seed-surface-sunken` (`#E3EBF0`) mede **2,80** contra `--seed-border-interactive`,
abaixo do piso 3,00 da SC 1.4.11. Nenhum campo do acervo está sobre ela hoje (medido). Alterar token
do gêmeo pede rodada própria.

**CD-P7** — **93 botões** do acervo com borda abaixo de 3,00. **Achado, não veredito:** decidir se a
borda do botão é identificador **necessário** é desenho, não medida.

**E-P2** — a tabela de dados de e-mail cabe hoje por geometria; com uma quarta coluna, não cabe.

---

## 12. Registro da sessão de 2026-08-17 (gate) — BT-P1, PS-P4 e DH-P6 FECHAM por gate OBSERVADO

> Seção **acrescentada**, não substituída. O relato completo está no `seed-componentes.md` **§64.10** e
> no `validacao/MANIFESTO.md` **§81**. Escrita para um leitor que nunca viu a conversa que a gerou.

### 12.1 O que fechou, e com que evidência

**Vocabulário, para quem lê sem contexto.** *Bancada* é o artefato HTML que imprime todos os estados
de um componente lado a lado para inspeção — não é uma tela do produto (lei **CP31**). *Gate* é a
aprovação humana que autoriza promover uma spec a `estável`; nenhuma guarda automatizada substitui o
olho, e a prova disso está registrada: em 2026-08-16 a `banco-data` **v0.1** passou em **25 PASS · 0
FAIL** com o calendário **inoperante**, e quem reprovou foi o Rafael. *Gate **OBSERVADO*** significa que
há registro de qual insumo foi olhado; *gate **DECLARADO*** significa que a aprovação vale mas o insumo
não ficou registrado — a distinção existe para tornar **errata** possível.

| Pendência | O que era | Estado agora | Evidência |
|---|---|---|---|
| **BT-P1** | re-gate visual de `banco-escolha` **v0.4**, `banco-data` **v0.4**, `banco-prioridade` **v0.2** | ✅ **FECHADA** — gate **OBSERVADO** | `suite-escolha` **238 · 0 · 29** · `suite-data` **31 · 0 · 1** · `suite-prioridade` **18 · 0 · 0** · `render-promocao` **168 · 0** · BT7 **5/5/5 · 0** |
| **PS-P4** | gate visual de `banco-pessoa` **v0.1** | ✅ **FECHADA** — gate **OBSERVADO** | `suite-pessoa` **44 · 0 · 1** · BT7 **3 · 0 · 1 [n/a]** · `contraste-composicao` **2 · 0** |
| **DH-P6** | a BT-P1 dita do lado do §61.8 | ✅ **FECHADA** | fecha a linhagem que a DH-P5 abriu quando o olho reprovou a v0.1 |

**O insumo do gate está nomeado:** as quatro folhas de captura em `render-audit/folha-banco-escolha.html`,
`folha-banco-data.html`, `folha-banco-prioridade.html` e `folha-banco-pessoa.html`. A aprovação foi
colhida numa escolha de três opções em que *"Aprovo — gate DECLARADO"* estava na mesa e foi **recusada**
em favor de *"Aprovo — gate OBSERVADO"*.

**O rito foi REEXECUTADO antes de promover**, contra os artefatos lidos da pasta nesta sessão — não
contra números lembrados. Os placares coincidiram integralmente com os do §80 do MANIFESTO, o que prova
que os artefatos da pasta são os mesmos que aquele rito mediu.

### 12.2 Seis linhas do eixo C reclassificadas, e quatro corrigidas por errata

**Reclassificadas de `rascunho`/`ESCRITO` para `estável`**, porque o gate que faltava aconteceu:
**C1**, **C2** (§61) · **C3**, **C12** (§60) · **C4** (§62) · **C11** (§63).

**Erratas de versão de bancada, corrigidas por MEDIÇÃO no `<title>` e no selo de cada artefato** — o
mapa declarava v0.1 e o artefato diz **v0.2** em quatro casos: **C6** (`banco-identidade`) · **C7**
(`banco-texto-rico`) · **C13** (`banco-credencial`) · **C15** (`banco-edicao-linha`).

*Errata irmã, corrigida no outro documento:* três cabeçalhos do `seed-componentes.md` declaravam
versões **uma minor acima** das que existem — §61 dizia `banco-data` v0.5, §62 dizia `banco-pessoa`
v0.2, §63 dizia `banco-prioridade` v0.3. Quatro fontes foram conferidas por comando (artefato, gerador,
MANIFESTO, este mapa) e três concordaram contra uma. **Corrigido o documento, não o artefato**, porque
subir versão sem mudar conteúdo é etiqueta e não versão, e porque as folhas que o Rafael olhou foram
geradas das versões v0.4 / v0.4 / v0.2 / v0.1. Detalhe e alternativa descartada em §64.10.3.

### 12.3 O que continua ABERTO, para não parecer que fechou

- **PS-P2** — **C5** (seletor de entidade colorida) e **C8** (menção `@`) seguem inalcançáveis: os dois
  só abrem **escrevendo** no produto de referência, e o modo autorizado é somente leitura.
- **Gate declarado, não observado**, nos artefatos que **não** entraram neste gate: `tela-referencia`,
  `tela-painel`, `tela-quadro`, `tela-gantt`, `banco-tokens` e `banco-dataviz-di`. A promoção deles
  vale; a **natureza** do gate continua registrada como declarada.
- **BT-P3** · **CD-P6** · **CD-P7** (93 botões, achado sem veredito) · **E-P2** · **EA-P1** · **SI-P4** ·
  **IL-P2** — ver §11.4 e o §64.6/§64.9.4/§64.10.4 do `seed-componentes.md`.
- **Contagem de arquivos** do §3 do MANIFESTO — segue por recontar **por comando**.

### 12.4 Achado de instrumento, registrado SEM conserto

A `suite-escolha` conta **arquivo ausente como FAIL**: rodada numa cópia de trabalho que tinha só a
bancada, devolveu **138 PASS · 4 FAIL**, e os quatro FAIL eram os quatro alvos de tela que não estavam
lá. **Alvo ausente deve declarar `[n/a]`, nunca reprovar** — é a mesma família da regra *"suíte que morre
é pior que suíte que reprova"*: número plausível sobre coisa que não foi medida. *Não consertado nesta
rodada, e o porquê: o padrão vale para as 21 suítes do acervo e exige prova de reprovação própria
(injetar o defeito, ver o placar cair, reverter). Registrado para não voltar como surpresa.*


---

## 13. Registro da sessão de 2026-08-17 (instrumento) — nasce a AUDITORIA TRANSVERSAL DE CONSUMIDOR

> Seção **acrescentada**, não substituída. O relato completo e os contratos AC1–AC4 estão no
> `seed-componentes.md` **§69**; o registro de edição, no `validacao/MANIFESTO.md` **§82**.

### 13.1 O que nasceu, e o buraco que ele tapa

Até 2026-08-17 **nenhuma guarda deste acervo comparava um artefato com OUTRO artefato**. As 21 suítes
medem um artefato contra um **contrato**; nenhuma media a cópia de um bloco canônico dentro de um
consumidor contra o **canônico**. O buraco tinha nome e data: o bloco de assinatura corporativa (EA)
foi corrigido em **2026-08-14** e o `en-comercial-amostra.html` guardou a versão velha até
**2026-08-17**, quando **o olho do Rafael** achou. Nenhum placar viu.

`validacao/auditoria-consumidor.mjs` — **alvo de PASTA**, três classes de consumo, cinco regimes de
comparação por campo. Placar de estreia: **7 PASS · 0 FAIL · 5 `[achado]` · 12 `[n/a]`**.

| Classe | Pergunta | Veredito | Cobertura de estreia |
|---|---|---|---|
| **CÓPIA** | a cópia no consumidor concorda com o canônico? | PASS / FAIL | bloco EA · 15 campos · 12 consumidores varridos |
| **REIMPL** | o consumidor satisfaz o contrato canônico? | **`[achado]`**, nunca FAIL — é pergunta de DESENHO | §65 em 5 telas · §67 na grade do §48 |
| **VERSÃO** | o documento declara a versão que o artefato tem? | PASS / FAIL | 2 documentos × 10 bancadas |

### 13.2 O que a medição corrigiu no inventário

- **SI-P4 errava a contagem e o endereço.** O componente que reimplementa o §65 é o **`.sigla`**
  (24×24px · raio 6px · glifo `svg` de 14px), e ele está em **quatro** telas: `tela-shell`,
  `tela-lista`, `tela-detalhe` e **`tela-tabela`** — esta última não estava na pendência. *Mesma classe
  de correção que a SG-P1 fez ao §60 ao achar "seis controles em quatro arquivos, não três em três".*
- **E a medição salvou 14 elementos corretos de conserto errado.** O `.ent` das telas é **12×12px,
  `aria-hidden`, SEM glifo** — ponto de cor decorativo, não o quadrado do §65. Guarda que exigisse
  `.quad` de todo consumidor de cor de entidade condenaria os 14 e forçaria pôr glifo onde ninguém
  pediu.
- **IL-P2 ganhou um agravante que ela não conhecia:** além das 3 divergências de contrato, o
  `tela-painel` **não tem `role="grid"`** (medido, zero ocorrências) — logo `tabindex="-1"` na célula
  não é o padrão ARIA de grade, é foco por script sem semântica.

### 13.3 Pendências novas registradas no inventário

**PS-P5** — o `.mini-avatar` de `tela-lista` e `tela-tabela` é círculo de 26px com **iniciais de
pessoa** e se pinta com **`--seed-entity-N`**, a paleta de **entidade** do CP23; o §62 (PS-P3) fechou a
cor de iniciais numa paleta **própria de 8 pares**, medida nos dois temas (pior par 9,33 · piso 4,50).
Círculo é pessoa, quadrado é entidade — token fora do semântico. `[achado]`, vai a gate.

**AC-P1** — o registro de CÓPIA cobre **um** bloco canônico (o EA, porque foi o que doeu). Faltam os
outros blocos colados em consumidor. *Cobertura de um bloco não é cobertura da família.*

**AC-P2** — o AC4 reconhece **uma** forma de declaração de versão; qualquer outra não é conferida, e o
total conferido sai impresso (8 e 8) para que a cegueira apareça em vez de se esconder.

### 13.4 O registro mais importante: a guarda não pegava o defeito que a gerou

Na primeira versão, o campo `cargo` da amostra cobrava só o sufixo *"· SEED engenharia"*. Com isso,
*"Diretor · SEED engenharia"* **PASSAVA** — a guarda construída para a EA-P1 pegava metade da EA-P1.
Descoberto pela **prova de reprovação**, consertado (regime `idêntico` para os cinco campos de pessoa
em regime amostra) e reprovado de novo com **3 desvios**. *Lição: guarda que não é testada contra o
CASO FUNDADOR não está provada.*


---

## 14. Registro da sessão de 2026-08-17 (GI2 transversal) — a BT-P3 fecha, e o acervo ganha um defeito medido

> Seção **acrescentada**. Relato completo no `seed-componentes.md` **§64.11** e no
> `validacao/MANIFESTO.md` **§83**.

### 14.1 O que mudou

O contrato **GI2** (*componente consome token **semântico**, nunca **primitiva de rampa***; semântico
inverte com o tema, primitiva não) passou a ter **guarda de alvo de PASTA**:
`validacao/guarda-gi2.mjs`. Antes rodava em três bancadas; agora mede **29 artefatos**.

**Placar: `15 PASS · 1 FAIL · 35 [n/a]`.** Os `[n/a]` em três categorias declaradas — **14** de
superfície (consome primitiva sem ter texto próprio) · **5** sem anel (texto sem fundo próprio ou
padding < 2px) · **3** com override de tema declarado.

**A BT-P3 fecha na FORMA SUPERSEDIDA:** ela pedia **quatro cópias** da guarda, uma por suíte antiga.
Descartado, porque espalhar a mesma guarda por quatro arquivos é cometer na camada de instrumento o
defeito que a `auditoria-consumidor.mjs` (§13) acabou de ganhar guarda para não cometer na camada de
artefato. *Fronteira: as quatro suítes antigas seguem sem GI2 no placar delas — a cobertura está no
instrumento novo, e dizer o contrário seria falso.*

### 14.2 O estado do acervo MUDOU, e isso precisa aparecer no inventário

**Até hoje o registro dizia que o acervo estava SEM DEFEITO MEDIDO EM ABERTO. Deixa de ser verdade.**

**BT-P6 (nova) — DEFEITO MEDIDO.** `tela-chat.html`, `.msg--propria .msg__balao`: fundo
`--seed-turquesa-50` (primitiva, não inverte) com texto `--seed-text-primary` (semântico, inverte) e
**sem** override de tema. No escuro: `#ddece8` sobre `#e8fbf7` = **1,14** contra piso **3,00** —
mensagem branca sobre branca. **Reprodutível 3/3.** Mesma forma dos defeitos que o gate achou em
2026-08-16 (1,02 e 1,00). Conserto indicado e não executado, com o porquê registrado: `tela-chat` é
artefato promovido, e a escolha do semântico substituto tem consequência visual.

**BT-P5 (nova).** A medida de par texto/fundo **não alcança** texto sem anel. Alcançar exige ler o
ancestral que pinta, fora do retângulo do elemento — família do 22º defeito de instrumento. **5
`[n/a]`** hoje por essa causa.

### 14.3 Seis falsos positivos, e a regra de método que eles deixaram

Rodada crua na pasta, a guarda deu **7 FAIL** e **seis eram falso positivo** — em artefatos `estável`.
Quatro consertos, cada um de uma classe: **(A)** contentor sem texto próprio não é par texto/fundo ·
**(B)** primitiva com override `[data-theme="dark"]` **inverte a mão**, o par não se rompe · **(C)** o
fundo de um texto é o **anel**, não o pixel dominante da caixa · **(D)** sem anel **não há veredito**.

O conserto **D** é o **24º defeito de instrumento** do projeto e o mais perigoso: o `.tagok` do
`banco-composicao` mediu **1,84**, depois **2,56**, depois **2,95** — **no mesmo artefato, sem tocar
nele** —, porque o anel de 2px de um texto sem padding é o próprio glifo.

> **Duas regras novas:** *guarda que não consegue medir não aprova **nem reprova***; e **medida que não
> é repetida não está verificada** — só rodar três vezes revelou a variação.


---

## 15. Registro da sessão de 2026-08-17 (CD-P7) — rito completo, veredito PROPOSTO, e a pergunta que mudou

> Seção **acrescentada**. Relato completo no `seed-componentes.md` **§64.12** e no
> `validacao/MANIFESTO.md` **§84**.

**A pergunta da CD-P7 era:** os **93 botões** do acervo com borda abaixo do piso 3,00 da **SC 1.4.11**
são defeito? A SC exige 3:1 da *"informação visual **necessária** para identificar o componente"*, e
botão tem rótulo, forma e preenchimento — logo a pergunta é de **desenho**, não de medida.

**R1 · canon.** O Understanding da SC 1.4.11 diz verbatim que *"if a control has visible content (such as
text or a sufficiently contrasting icon) … a border or other indication of the overall boundary of the
hit area is **not required**"*. **Botão com rótulo legível não precisa de borda a 3:1.** *Divergência
registrada: a issue w3c/wcag#800 sustentava o oposto e foi fechada pelo PR que produziu esse texto.*

**R2 · mercado.** Carbon (IBM): o **ghost** não declara borda em nenhum estado; o **tertiary** tem borda
com token próprio, porque nele a borda **é** o identificador. Mesma fronteira do Understanding, achada
por conta própria.

**R3 · normas — e ela trocou a pergunta.** Em **forced-colors** o navegador **descarta
`background-color`**. Logo o risco real não é borda fraca: é **ausência** de borda ou `outline`. Botão
identificado só pelo preenchimento **desaparece** no modo de alto contraste.

**Medido:** de **29** artefatos, **12** declaram alguma regra de forced-colors e **1** trata botão dentro
dela. **28 de 29 estão expostos.**

**Veredito PROPOSTO, aguardando gate:** (1) os 93 **não** são defeito de 1.4.11, com a fronteira do
rótulo legível; (2) permanece a exceção estreita do botão cujo **único** identificador é a borda — e
**quantos são disso não foi medido** (nasce **CD-P10**); (3) nasce a obrigação de **`outline`
transparente** em todo botão (nasce **CD-P9**), que é conserto mecânico e barato.

**Pendências novas no inventário: CD-P9** (28 de 29 artefatos sem regra de botão para forced-colors) ·
**CD-P10** (classificar quantos dos 93 têm a borda como único identificador).


---

## 16. Registro da sessão de 2026-08-17 (decisões) — dois defeitos fecham, quatro pendências são decididas, e um número de fundação cai

> Seção **acrescentada**. Relato completo no `validacao/MANIFESTO.md` **§85** e no
> `seed-componentes.md` **§64.13**. **Supersede a §14.2 acima**, que descreve a BT-P6 como aberta.

### 16.1 FECHADAS

| # | Como fechou |
|---|---|
| **BT-P6** | ✅ **conserto na CAUSA, e a causa era o GÊMEO.** Não havia semântico para "superfície de marca sutil" e o `tela-chat` era o **único** consumo de `--seed-turquesa-50` em 29 artefatos: o artefato pediu o que não havia. Nasce **`--seed-surface-brand-subtle`** (claro `#E8FBF7` · escuro `#1A3833`), medido **12,79/10,40** contra o texto primário, piso 4,50. Os **três** FAIL do tema escuro sumiram |
| **CD-P7** | ✅ **por DECISÃO.** Os 93 botões **não** são defeito de SC 1.4.11 — o Understanding diz verbatim que borda não é obrigatória em controle com conteúdo visível, e consertar destruiria a escala **terciário↔fantasma**, cuja única distinção **é** a borda |

### 16.2 DECIDIDAS, execução pendente

- **MR-P1 (nova, e é de fundação).** O `seed-tokens.md` declarava branco sobre `--seed-surface-brand`
  (`#11B0A0`) = **3,22** e construía a regra *"só ≥24px ou ≥19px bold"* nisso. Medido por dois métodos
  independentes: **2,74** (fórmula) e **2,71** (pixel). **Reprova até AA-large** — branco ali não é
  permitido em nenhum tamanho. Decisão acatada: **tinta escura** (`#00352F` = 4,99, ou `#0B3330` = 5,06).
  **Contar os casos no acervo vem antes de consertar** — o instrumento cobria **6 de 29** artefatos.
- **SI-P4** — `.sigla` → **§65** nas **quatro** telas. **IL-P2** — grade do §48 → **§67**. **PS-P5** —
  `.mini-avatar` → paleta de **pessoa** do §62. **Spec própria para o ponto de cor decorativo** (`.ent`),
  para não ficar ad hoc. As quatro aprovadas, e a unificação foi qualificada como **inegociável**.

### 16.3 A lição que muda como este inventário deve ser lido

A MR-P1 existia desde que a regra foi escrita, e **nenhuma guarda a viu porque nenhuma guarda tinha sido
apontada para aquele alvo.** Vários eixos deste mapa foram declarados limpos com base em instrumentos que
rodavam sobre um **subconjunto** dos artefatos. **Ausência de medição não é aprovação.** Antes de
declarar um eixo limpo: liste **quais** alvos cada instrumento cobre, e aponte-o para os que faltam.
*Terceira vez que alargar o alvo de um instrumento existente rende mais que escrever spec nova.*

## 17. Registro da sessão de 2026-08-17 (execução) — a MR-P1 EXECUTA no gêmeo, nasce e fecha a MR-P2, e o acervo tem 34 artefatos

> Seção **acrescentada**. Relato completo no `validacao/MANIFESTO.md` **§86** e no `seed-componentes.md`
> **§64.14**. **Supersede a §16** no ponto em que ela lista a MR-P1 como *decidida, execução pendente*.

### 17.1 FECHADAS nesta sessão

| # | O que era | Como fechou |
|---|---|---|
| **MR-P1** | branco sobre a marca chapada (`surface-brand`, `#11B0A0`) mede **2,71** e reprova até o piso 3,00 do texto grande | conserto na **camada de token**: um único token de tinta servia **três** fundos de marca com necessidades opostas e errava dois deles, um em cada tema. Agora são **três tintas** (gêmeos **v1.15**). Censo por pixel em **48 artefatos × 2 temas**: **49** textos assentam sobre a marca chapada, **0** violam |
| **MR-P2** *(nova)* | tinta escura sobre a marca **profunda** mede **1,45** no tema escuro — 3 textos do `tela-tabela.html` | mesma causa, fechada no mesmo conserto |
| **BT-P7** *(nova)* | seis bancadas consumiam `surface-brand` e `surface-brand-deep` **sem definir** — o estado ligado do alternador da barra de provas **não pintava** (token fantasma NV-01) | nomes entram nas listas `NOMES` dos nove geradores; bancadas regeradas; guarda nova **BP1**, que mede por **clique**: 9 PASS · 0 FAIL · 15 `[n/a]` |
| **BC-P1** *(nova)* | nove bancadas estavam **atrás** do `base-bancada.css` em duas declarações substantivas — inclusive o `.vh` em `fixed`, que **é** o conserto do BT7/BT-P4 | achado pelo pré-voo de regeneração (comparação gerador × artefato ignorando comentários) e levado às nove |
| **25º defeito de instrumento** | o **anel** de 5px vaza para fora de elemento pequeno e **arredondado** — 6 falsos positivos no `span.mini-avatar` (círculo de 26px) | quando o elemento pinta cor **opaca** sem imagem, o fundo é a **cor declarada**. Provado nos dois sentidos: os 6 falsos positivos sumiram e os 4 reais continuaram reprovando |

### 17.2 INSTRUMENTOS NOVOS, os dois de alvo de PASTA e os dois provados capazes de reprovar

| Instrumento | Mede | Placar |
|---|---|---|
| `validacao/guarda-tinta-marca.mjs` | contrato **MR1** — piso da SC 1.4.3 **e** a **mão** da tinta sobre a marca chapada, nos dois temas. Três caminhos de amostra, com o critério de qual vale; pré-filtro de cadeia de pintura com prova de equivalência | **23 PASS · 0 FAIL · 73 `[n/a]`** em 48 artefatos × 2 temas · duas execuções com saída **idêntica byte a byte** |
| `validacao/guarda-barra-provas.mjs` | contrato **BP1** — o estado ligado do alternador da barra de provas **pinta** e mede ≥ 4,50, medido por **CLIQUE** | **9 PASS · 0 FAIL · 15 `[n/a]`** em 24 bancadas |

### 17.3 COBERTURA — dois denominadores recontados por comando

| Afirmação | Recontagem |
|---|---|
| "o acervo tem **29** artefatos" | **34** artefatos `banco-*`/`tela-*` (24 bancadas + 10 telas); **48** contando a família de e-mail. O 29 era o alcance de uma **cópia de trabalho** |
| "**28 de 29** sem regra de botão em `forced-colors`" (CD-P9) | **22 de 34** não têm **nenhuma** regra de `forced-colors`; os 12 que têm cobrem **estado**, não fronteira de botão — logo **34 de 34** sem regra genérica de botão |
| "**19 dos 29** consomem `surface-brand`" | numerador **19** confirmado; denominador é **34** |
| alcance do `contraste-composicao.mjs` | passa de **6** para **29** alvos já medidos. A família de e-mail (14 arquivos) ganhou sua **primeira** medida de contraste de composição: `[n/a]` nos 14 para a MR1 |

### 17.4 ACHADOS NOVOS, medidos e NÃO consertados

- **GT-P6** — `tela-gantt`, rótulo dentro de `button.gt-barra` (20px de altura, `position:absolute`): o anel
  estoura a barra na vertical e o placar diz **1,00**/**1,12**. Par real pela cor declarada: **4,60**/**7,39**
  — **passa**. É a **segunda forma** do 25º defeito, agora com o ancestral pintando. Pede conserto de
  instrumento (**CC-P2**), não de artefato.
- **LS-P6** — `tela-lista`, linha de estado vazio medida a **1,22** nos dois temas porque a barra de seleção
  em massa (`position:absolute`, `z-index:70`) **cobre** a linha. O pixel está certo: ele lê o **oclusor**.
  **Oclusão não é contraste** — vai a gate como pergunta de desenho.
- **CC-P1** — o `contraste-composicao.mjs` passou de **60 minutos** em UM artefato (`banco-dataviz-dg.html`)
  sem terminar, porque tira uma captura por folha de texto. Pede **orçamento por alvo impresso no placar**.
- **AD-P1** — **DEFEITO MEDIDO EM ABERTO.** Branco sobre `action-destructive` no tema **escuro**
  (`#ffffff` sobre `#fc6f6a`) mede **2,76** contra piso 4,50, em `banco-componentes` e `banco-tokens`. É a
  **mesma forma da MR-P1**: no escuro o destrutivo é um vermelho claro e a tinta ali é branca — **falta o
  token de tinta do destrutivo**. Não consertado por ser decisão de identidade visual, o mesmo motivo pelo
  qual a MR-P1 esperou um gate.
- **CC-P3** — o `contraste-composicao.mjs` não conhece a **isenção da SC 1.4.3 para componente INATIVO** e
  reprova botão `disabled`: 9 achados na galeria de estados do `banco-componentes`.
- **CC-P2** — generalizar a cor declarada para o **ancestral que pinta**, parando no primeiro
  `background-image`. Fecha o GT-P6 e a metade da **BT-P5** que ainda está aberta nesse instrumento.

### 17.5 Estado documental ao fim desta sessão

`seed-componentes.md` **v1.06** · `validacao/MANIFESTO.md` **v12.4** · este arquivo **v1.6** ·
gêmeos de token **v1.15**, com as três tintas de marca e a errata dupla do "3,22" (o número era do
`turquesa-500` `#00A192`, transplantado para o `turquesa-400`).

> **Nota de versão, declarada em vez de silenciada:** o `abertura-proxima-sessao.md` de 2026-08-17 registrou
> este arquivo como **v1.1** e o cabeçalho dele declarava **v1.5**. As duas numerações convivem no
> histórico; esta sessão adota a do **cabeçalho** e segue dela (**v1.6**), porque é a que está dentro do
> arquivo. *Numeração de documento que só existe fora do documento não é versão, é lembrança.*

## 18. Registro da sessão de 2026-08-18 — a AD-P1 fecha por pesquisa, e a forma de perguntar muda

> Seção **acrescentada**. Relato completo no `validacao/MANIFESTO.md` **§87** e no `seed-componentes.md`
> **§64.15**. **Supersede a §17** no ponto em que ela lista a AD-P1 como defeito medido em aberto.

### 18.1 FECHADAS

| # | Como fechou |
|---|---|
| **AD-P1** | token novo `text-on-action-destructive` (gêmeos **v1.16**): branca no claro (**5,19**), vermelho-900 no escuro (**5,26**). Escolha pelo RITO — M3 inverte a tinta de erro com o tema, Carbon não clareia o fundo; adotado o M3 por coerência com o botão primário desta casa. Guarda **MR2**: 22 PASS · 0 FAIL · 74 `[n/a]`, 50 textos, zero violando |
| **CC-P3** | a isenção da SC 1.4.3 para componente **INATIVO** entra nas duas guardas de contraste, com a contagem impressa. `banco-componentes` sai de 7 e 12 FAIL para 0 e 0 |
| **gate da regeneração** | respondido por **medição**: 0 px de excesso horizontal e **0 de 163.800 pixels** diferentes em 3 bancadas |

### 18.2 REGRA DE MÉTODO NOVA

Pergunta que a **medição** responde não é pergunta. Pergunta que a **pesquisa** responde não é pergunta.
O que sobra para o gate humano é **julgamento de aparência**, e vai com **recorte antes/depois por
elemento, nos dois temas** — molde em `render-audit/gate-mr1/gate-visual.html`.

### 18.3 ABERTAS de DESENHO, as duas com imagem pronta

- **LS-P6** — a barra de seleção em massa (`position:absolute`, `z-index:70`) **cobre** a linha de estado
  vazio da lista. Sobreposição medida por geometria.
- **TK-P1** *(nova)* — na galeria de rampa do `banco-tokens.html`, **12 rótulos por tema** abaixo do piso
  (3,38 a 4,08). A única tinta que resolve os quatro degraus é o **preto puro**, que **não existe em
  nenhuma rampa da SEED**.

### 18.4 Estado documental

`seed-componentes.md` **v1.07** · `validacao/MANIFESTO.md` **v12.5** · este arquivo **v1.7** ·
gêmeos de token **v1.16**.

## 19. Registro da sessão de 2026-08-18 (tarde) — o gate visual reverteu a MR-P1, e três decisões de desenho fecharam

> Seção **acrescentada**. Relato completo no `validacao/MANIFESTO.md` **§88** e no `seed-componentes.md`
> **§64.16**. **Supersede a §18** no ponto em que ela registra a MR-P1 com tinta escura.

### 19.1 FECHADAS

| # | Como fechou |
|---|---|
| **MR-P1** *(nova forma)* | o Rafael **vetou** a tinta escura e pediu texto branco. Com o branco fixado, a superfície desce um degrau: turquesa-600 `#098475`, que mede **4,60** com branco (a chapada `#11B0A0` mede 2,71). Nascem `surface-brand-strong` e `text-on-brand-strong` (gêmeos **v1.17**). Guarda **MR3**: 21 PASS · 0 FAIL · 75 `[n/a]`, 65 textos, 0 violando |
| **LS-P6** | a barra de massa cobria conteúdo em **17 de 17** larguras (177 sobreposições). Sai de `absolute` para `sticky`, e abaixo de 768px deixa de flutuar. Depois: **0 sobreposições** |
| **TK-P1** | tinta preta em **seis** degraus 500 (não quatro): 3,38/3,38/4,01/4,08/4,20/4,13 → 4,89/6,21/6,02/6,17/6,51/6,33. A opacidade dos rótulos saiu |

### 19.2 A REFERÊNCIA DE MERCADO FOI MEDIDA

Autorizado pelo Rafael, na sessão logada e em modo somente leitura: o botão primário do ClickUp usa fundo
`#12a594` com texto branco a 12px/500 e mede **3,07** contra piso 4,50. **A referência reprova.** *Leitura
visual de print não é medida, e referência de mercado é prova de prática, não de conformidade.*

### 19.3 COBERTURA — os 9 artefatos que nunca tinham sido medidos

O padrão do TK-P1 ("rótulo sobre a amostra de cor") é exclusivo do `banco-tokens.html`: **1 de 34**, zero
nos outros 33. Mas a varredura dos 9 nunca medidos rendeu **8 casos de componente**, todos anteriores a
esta semana: **SU-P1** (1,69 e **1,02**, invisível) · **CP-P5** (3,31) · **FF-P1** (3,02 e 3,81) ·
**FB-P1** (2,76, fecha com a AD-P1) · **DD-P1** (4,28) · **DI-P1** (4,30).
*Sexta vez em três dias que apontar instrumento existente para alvo novo rende mais que spec nova.*

### 19.4 Estado documental

`seed-componentes.md` **v1.08** · `validacao/MANIFESTO.md` **v12.6** · este arquivo **v1.8** ·
gêmeos de token **v1.17** · folha de gate visual em `render-audit/gate-mr1/fechamento.html`.

---

## 20. Registro da sessão de 2026-08-18 (noite) — dois dos seis defeitos eram do MEDIDOR, e a cobertura de contraste forçado saiu da estimativa

> **Leitor novo:** este documento mapeia **cobertura** — quem mede o quê, e o que ninguém mede. A sessão
> anterior tinha deixado seis defeitos de contraste em aberto. Esta sessão mediu antes de consertar, e
> descobriu que **dois deles não existiam**: eram defeitos do próprio instrumento. Registro completo em
> `validacao/MANIFESTO.md` **§89**; regra de consumo que saiu disso em `seed-componentes.md` **§64.17**.

### 20.1 FECHADAS

| Pendência | Como fechou |
|---|---|
| **SU-P1** · **FF-P1** | **falso positivo** — 26º defeito de instrumento (a captura por elemento inclui até 2 linhas do vizinho por arredondamento). Pares reais: 7,75/8,11 e 13,86/14,16 |
| **FB-P1** | tinta `#fff` literal → `--seed-text-on-action-destructive`. 5,19 · 5,26 |
| **CP-P5** | tinta de RAMPA → `--seed-text-brand`. 4,60 · 8,31 |
| **CP-P6** (nasceu e fechou) | hex literal em `style=` → `--seed-feedback-danger-text` |
| **FF-P2 / FF-P3** (nasceu e fechou) | **token FANTASMA** `--seed-action-primary-bg` em 15 consumos → `--seed-action-primary`, com o bloco escuro passando a declará-lo |
| **DD-P1** | valor divergente do gêmeo (`#098475` onde o gêmeo diz `#006C62`). 5,89 |
| **DI-P1** | preto puro, precedente da TK-P1. 6,51 · 11,46 |
| **GT-P6** e **CC-P2** | 27º defeito de instrumento — o fundo de quem não pinta passa a ser perguntado ao LAYOUT (hit-test), e gradiente é medido pelas paradas declaradas |
| **CD-P10** | respondida por medição: não são 93 botões, são **668 controles ativos por tema** |
| metade da **BT-P5** | dependia da CC-P2 |

### 20.2 COBERTURA — o que passou a ser medido, e o que ainda não é

**INSTRUMENTO NOVO: `validacao/guarda-forced-colors.mjs`, contrato FC1, alvo de PASTA.** Liga
`forced-colors: active` no navegador e lê o estilo computado **dentro do modo** — mede comportamento, não
texto de folha.

| | |
|---|---|
| controles ativos medidos (34 artefatos × 2 temas) | **1.336** |
| **sem nenhuma fronteira** em contraste forçado | **408** |
| isentos por componente inativo (SC 1.4.11) | 24 |
| placar | **20 PASS · 48 FAIL · 0 `[n/a]`** |

*Isto era estimativa em duas pendências: a CD-P9 dizia "22 de 34 artefatos sem regra" e a CD-P10 dizia
"93 botões, não medido". **O número de fundação estava errado por uma ordem de grandeza.** Sexta vez que
apontar instrumento para alvo novo rende mais que escrever spec nova.*

**O `contraste-composicao.mjs` passou a IMPRIMIR quatro coisas que antes eram silêncio:**

1. **`[n/a] N folhas SEM MEDIDA`**, com motivo agrupado e lista. Revelou **18 folhas por tema** que saíam
   sem medida nenhuma no `banco-composicao` — em silêncio, por `continue` mudo.
2. **A ROTA de cada folha**: por cor declarada · por quem pinta atrás (hit-test) · por pixel.
3. **ORÇAMENTO por alvo e tema**, em segundos e ms por folha — é o que a **CC-P1** pedia.
4. **TETO desligável** com `TETO=0`, e **`PULA=`** que imprime quais alvos foram excluídos e não medidos.

**Ganho de custo medido, e ele muda a CC-P1:** o hit-test dispensa a captura por elemento na maioria das
folhas. `banco-superficies` **1,3s por tema** (118 folhas · 11ms/folha); `banco-formfield` **1,5s por tema**
(262 folhas · 6ms/folha). *Mesmo assim o `banco-dataviz-dg` continua sendo o alvo caro e segue EXCLUÍDO e
não medido, agora com a exclusão impressa no placar.*

**AINDA SEM COBERTURA — nomeado, não fechado:**

| # | O que ninguém mede |
|---|---|
| **NV-02** | `var(--token, <literal>)` cujo token não é declarado. O valor de reserva **pinta** e esconde a lacuna. Um caso custou seis componentes sem tema escuro |
| **AC-P3** | a **MR2** só varre artefato que declare `--seed-action-destructive`; o mesmo vermelho existe sob `--seed-feedback-danger-solid` e ficou fora do censo |
| **AC-P4** | ninguém compara o **valor** de par semântico redeclarado no artefato com o valor do gêmeo — foi por aí que a DD-P1 passou |
| **CC-P4** | folha `[n/a]` por não sobrar pixel dentro da área pintada **e** o hit-test não ser unânime. **100 folhas** medidas |
| **CC-P5** | folha `[n/a]` porque a **captura por elemento falha**. **76 folhas**, concentradas em `banco-dataviz-dm` e `banco-dataviz-di` |
| **CD-P11** | o anel de foco desta casa é `box-shadow` e **desaparece** em contraste forçado |
| **CC-P1** | `banco-dataviz-dg` e `banco-dataviz-dp` seguem não medidos |

**PLACAR FINAL DO `contraste-composicao.mjs`, duas execuções IDÊNTICAS:** **64 PASS · 0 FAIL** · 7.268 folhas medidas (1.050 por cor declarada · 6.214 por hit-test · 4 por pixel) · **176 `[n/a]` declaradas** · 32 isentas, em
32 artefatos × 2 temas. `banco-dataviz-dg` e `banco-dataviz-dp` **excluídos e impressos como excluídos**.
*As 176 folhas `[n/a]` são **2,4%** do total e são as pendências CC-P4 e CC-P5 — antes deste conserto elas
saíam em silêncio.*

### 20.3 DECIDIDA nesta sessão, execução PENDENTE — CD-P9

A pendência mandava consertar com `outline: 1px solid transparent`. **O RITO de três rodadas reprovou o
próprio conserto especificado:** em contraste forçado o `outline` é **o único mecanismo que ainda funciona
para o FOCO**, e gastá-lo na fronteira deixa o foco sem sinal.

**Decisão:** fronteira por **`border`**, dentro de `@media (forced-colors: active)` — assim nada muda de
geometria fora do modo — e `outline` reservado ao foco, fechando junto a **CD-P11**.

**Por que não executou, e é fronteira declarada:** a maioria dos 34 artefatos é **gerada**; a execução
correta mexe em molde, em `base-bancada.css` e nas listas `NOMES`, com **PRÉ-VOO por gerador**. Abrir isso
no fim da sessão deixaria o acervo meio regerado. **É a primeira tarefa da próxima sessão, e o instrumento
já existe.**

### 20.4 Estado documental

`seed-componentes.md` **v1.09** (§64.17, contrato **BT8** escrito e **sem guarda ainda**) ·
`validacao/MANIFESTO.md` **v12.7** (§89) · `mapa-cobertura-ds.md` **v1.9** (esta seção) ·
gêmeos de token **v1.17, sem alteração** — *nenhum token nasceu nesta sessão; todos os consertos foram de
CONSUMO*. Folha de gate: `render-audit/gate-cc-v127/fechamento.html`.

---

## 21. Registro da sessão de 2026-08-18 (madrugada) — a cobertura de contraste forçado sai de 0 e o PRÉ-VOO vira instrumento

> **Leitor novo:** este documento mapeia **cobertura** — quem mede o quê, e o que ninguém mede. Esta
> seção é a continuação direta da §20, no mesmo dia, depois do "ok, pode seguir" do Rafael. Registro
> completo em `validacao/MANIFESTO.md` **§90**; contratos em `seed-componentes.md` **§64.18**.

### 21.1 COBERTURA NOVA

| Instrumento | Contrato | Placar (2 execuções idênticas) | Alcance |
|---|---|---|---|
| `guarda-forced-colors.mjs` | **FC1** fronteira | **68 PASS · 0 FAIL** · 1.336 controles · **0 sem fronteira** · 24 isentos | 34 artefatos × 2 temas |
| idem | **FC2** foco (CD-P11) | **68 PASS · 0 FAIL** · **386 controles FOCADOS de verdade** · 0 sem outline | idem, amostra de 6 por alvo (teto declarado) |
| `guarda-valor-reserva.mjs` (novo) | **NV1** valor de reserva (guarda da **BT8**) | **10 PASS · 0 FAIL · 0 `[achado]` · 86 `[n/a]`** | 48 artefatos × 2 temas |
| `guarda-tinta-marca.mjs` | **MR4** (`--seed-feedback-danger-solid`) | **8 PASS · 0 FAIL · 88 `[n/a]`** · 20 textos | 48 × 2 — **cobertura que a MR2 nunca teve** |
| idem | **MR5** (`--seed-danger-solid`) | 0 PASS · 0 FAIL · 96 `[n/a]` · **0 textos** | idem |
| `prova-inercia.mjs` (novo) | comparação pixel a pixel `antes/` × raiz | **0 de 13.176.000 pixels** | 4 artefatos × 2 temas × 2 larguras |

**Antes desta sessão, a cobertura de contraste forçado era ZERO** — nenhum instrumento ligava o modo. O
número que a CD-P9 carregava ("22 de 34 artefatos sem regra") e o da CD-P10 ("93 botões") eram
**estimativas**, e as duas estavam erradas: são **668 controles ativos por tema**, e **204 por tema**
ficavam sem fronteira.

### 21.2 O PRÉ-VOO VIROU INSTRUMENTO — e achou três defeitos sem tocar em nada

Rodar **os 21 geradores para destino temporário** e comparar com o artefato em disco, ignorando
comentários, é barato e não altera nada. Feito pela primeira vez de forma exaustiva:

| Resultado | Quantos | O que significa |
|---|---|---|
| reproduzem o disco **exatamente** | **18** | gerador e artefato em dia |
| **não aceita destino** | 1 (`gen-painel.py`) | **28º defeito de instrumento** — o PRÉ-VOO era impossível nele. ✅ consertado |
| **não reproduz o artefato** | 1 (`gen-dp.py`) | **DP-P9** — faltam 12 linhas da escala de figura, aplicadas DEPOIS da geração. **Regerar apaga a camada.** ABERTA |
| **carimba a HORA** no selo | 1 (`gen-painel.py`) | **PN-P5** — o artefato nunca é reprodutível byte a byte; o PRÉ-VOO dele nunca dá idêntico. ABERTA |

### 21.3 O QUE A RE-RODADA DAS GUARDAS MOSTROU — cinco batem, uma não

Cinco guardas reproduziram o placar registrado exatamente (MR1, MR3, GI2, BP1, reflow BT7) e a
`auditoria-consumidor` também (7 · 0 · 5 · 12). **A MR2 divergiu:** medido **6 PASS · 0 FAIL · 90 `[n/a]`
· 16 textos** contra **12 · 0 · 84 · 26** registrado na §88.7.

**A investigação não achou regressão — achou uma cegueira de nome.** A mesma superfície vermelha sólida
existe no acervo sob **TRÊS nomes**:

| Nome | Artefatos | Claro | Escuro |
|---|---|---|---|
| `--seed-action-destructive` | 5 | `#C6393B` | `#FC6F6A` |
| `--seed-feedback-danger-solid` | 16 | `#C6393B` | `#FC6F6A` |
| `--seed-danger-solid` | 2 | **`#D94545`** ⚠ | `#FC6F6A` |

**A MR2 mede um NOME, não a superfície.** Vira a pendência **MR-P3**; o valor divergente vira **AC-P5**
(branco sobre `#D94545` mediria **4,30**, contra **5,19** sobre `#C6393B` — e hoje **zero** textos
assentam ali, medido).

### 21.4 AINDA SEM COBERTURA — nomeado, não fechado

| # | O que ninguém mede |
|---|---|
| **AC-P4** | ninguém compara o **valor** de par semântico redeclarado no artefato com o valor do gêmeo |
| **AC-P5 / MR-P3** | os três nomes da mesma superfície vermelha, e o valor divergente de um deles |
| **DP-P9** | camada aplicada depois da geração que o gerador não conhece — nenhum instrumento a detecta além do PRÉ-VOO manual |
| **PN-P5** | artefato com carimbo de hora: não é reprodutível, e o diff dele é ruído |
| **CC-P4 / CC-P5** | 176 folhas (2,4%) que o contraste declara `[n/a]` — 100 por não sobrar pixel com hit-test não unânime, 76 por falha de captura |
| **CC-P1** | `banco-dataviz-dg` e `banco-dataviz-dp` seguem excluídos e **impressos como excluídos** |

### 21.5 Estado documental

`seed-componentes.md` **v1.10** (§64.18 — contratos **FC1** e **FC2**; a **BT8** ganha guarda) ·
`validacao/MANIFESTO.md` **v12.8** (§90) · `mapa-cobertura-ds.md` **v2.0** (esta seção) ·
gêmeos de token **v1.17, sem alteração** — *nenhum token nasceu nas duas edições de hoje; todos os
consertos foram de CONSUMO, de DECLARAÇÃO no artefato ou de FOLHA DE ESTILO.*


---

## 22. Registro da sessão de 2026-08-19 — a SI-P4 executa, e a cobertura acha o que a LISTA não continha

> **Leitor novo:** este documento mapeia **cobertura** — quem mede o quê, e o que ninguém mede. Esta
> seção é a vigente e supersede a §21 como fotografia do estado. Registro completo em
> `validacao/MANIFESTO.md` **§92**; contratos em `seed-componentes.md` **§65.7**.

### 22.1 COBERTURA NOVA

| Instrumento | Contrato | Placar (2 execuções idênticas) | Alcance |
|---|---|---|---|
| **`guarda-si17.mjs` (NOVO)** | **SI17-a/b/c/d** — identidade de entidade em USO (§65.7) | **16 PASS · 0 FAIL · 86 `[n/a]`** | **ALVO DE PASTA**: 51 arquivos da raiz × 2 temas |
| `contraste-composicao.mjs` | SC 1.4.3, agora também a **390px** | **16 PASS · 0 FAIL** · 30 folhas `[n/a]` por alvo COBERTO | 8 telas × 2 temas · **largura nunca medida antes** |
| `prova-inercia.mjs` | modo `INTEIRA=1` (página inteira, exige mesma ALTURA de documento) | achou o próprio **ruído**: 8 a 19 pixels de borda no `tela-shell` a 390px | 8 telas × 2 temas × 2 larguras |

### 22.2 O QUE A COBERTURA NOVA ACHOU — e a lição vale para todo censo deste projeto

**O censo do `.sigla` dizia QUATRO telas. São OITO.** As quatro que faltavam — `tela-chat`,
`tela-gantt`, `tela-quadro` e `tela-referencia` — apareceram no primeiro segundo em que a guarda varreu a
**PASTA** em vez de uma lista escrita à mão. O número errado estava em três lugares (o §69.6 do
`seed-componentes.md`, a `abertura-proxima-sessao.md` §7-a e o §91.1 do MANIFESTO) e foi repetido por
quatro sessões.

> **REGRA QUE FICA, irmã de "PLACAR QUE MEDE NOME NÃO MEDE COISA": LISTA ESCRITA À MÃO MEDE A LISTA, NÃO
> O ACERVO.** Todo instrumento cujo alvo é digitado à mão herda o esquecimento de quem digitou. Quando o
> contrato é transversal, o alvo é a **PASTA**.

**Medir numa largura nova é cobertura barata.** Rodar o contraste a **390px** pela primeira vez custou
segundos e rendeu **dois defeitos de instrumento** (29º: texto com alfa 0 lido como preto; 30º: alvo
coberto medido pela rota do pixel) e um defeito **visível a olho nu** numa tela `estável` (**SH-P2**: a
barra superior do `tela-shell` colidia — rótulo cortado, `Ctrl K` sobre o texto, avatar sobre a busca).

**A `suite-reflow` (BT7) não via o SH-P2, e está certa em não ver:** ela mede **rolagem horizontal de
documento**, e não havia — 390 contra 390. O que quebrava era **colisão dentro da faixa**.

### 22.3 AINDA SEM COBERTURA — nomeado, não fechado

| # | O que ninguém mede |
|---|---|
| **CC-P6** *(nova)* | o contraste a **390px** só foi apontado para as **8 telas**. As **24 bancadas** seguem medidas só a 1440px. *Ausência de medição não é aprovação.* |
| **SH-P3** *(nova)* | **nenhum instrumento mede COLISÃO** — sobreposição de elementos irmãos dentro de uma barra que não estoura o documento. O SH-P2 foi achado por captura e olho, não por guarda. É a classe de defeito que a BT7 estruturalmente não cobre |
| **PI-P1** *(nova)* | o modo `INTEIRA=1` da prova de inércia tem ruído próprio de 8 a 19 pixels em borda antisserrilhada; o número que vale é o do clip de 900px |
| **NV1-c** | literal de cor fora de `var()` — a SI-P4 fechou **um** caso; o censo do acervo continua **desconhecido** |
| **AC-P4** | ninguém compara o **valor** de par semântico redeclarado no artefato com o do gêmeo |
| **AC-P5 / MR-P3** | os três nomes da mesma superfície vermelha, e o valor divergente de um deles |
| **DP-P9** | camada aplicada depois da geração que o gerador não conhece |
| **PN-P5** | artefato com carimbo de hora: não é reprodutível, e o diff dele é ruído |
| **CC-P4 / CC-P5** | **180** folhas que o contraste declara `[n/a]` a 1440px — 36 por "zero pixel de fundo dentro da área pintada" e 4 (× 2 temas) pelo 30º defeito, agora **nomeadas** em vez de adivinhadas |
| **CC-P1** | `banco-dataviz-dg` e `banco-dataviz-dp` seguem excluídos e **impressos como excluídos** |

### 22.4 Estado documental

`seed-componentes.md` **v1.11** (§65.7 — contratos **SI17-a/b/c/d**; SI-P4 FECHADA; nasce **SI-P5**) ·
`validacao/MANIFESTO.md` **v13.0** (§92) · `mapa-cobertura-ds.md` **v2.1** (esta seção) ·
gêmeos de token **v1.17, sem alteração** — *nenhum token nasceu: todos os consertos foram de CONSUMO
(as listas `NOMES` dos oito geradores) ou de FOLHA DE ESTILO (o bloco único do `.sigla` e o 3º degrau do
CP15 no `tela-shell`).*

### 22.5 Segunda metade da sessão de 2026-08-19 — a IL-P2 e o defeito que a pendência não continha

| Instrumento | Contrato | Placar (execuções idênticas) | Alcance |
|---|---|---|---|
| **`guarda-il15.mjs` (NOVO)** | **IL15-a…r** — a grade editável cumpre o §67 e o padrão `grid` da ARIA | **1 PASS · 0 FAIL · 50 `[n/a]`** · 6 execuções | **ALVO DE PASTA**: 51 arquivos da raiz |

**O que ela achou, e nenhuma guarda anterior podia achar:** a planilha do §48 era **inalcançável por
teclado** — 56 células em `tabindex="-1"`, nenhuma em `"0"`, 40 Tabs sem o foco entrar. A guarda
**pressiona** Tab, setas, Home, End, Ctrl+Home, Ctrl+End, F2, Enter e Esc; guarda que lê atributo nunca
teria visto.

> **REGRA QUE FICA: PENDÊNCIA ESCRITA É HIPÓTESE, NÃO CENSO.** A IL-P2 listava três divergências de
> semântica. Eram sete defeitos, e o que importava era de teclado.

**AINDA SEM COBERTURA, acrescentado aqui:**

| # | O que ninguém mede |
|---|---|
| **CC-P7** *(nova)* | o contraste do `tela-painel` é medido só na lente **padrão**. Nenhum instrumento troca a lente antes de medir — as outras **sete**, inclusive a grade, seguem não medidas |
| **PN-P6** *(nova)* | o alvo do gatilho da grade mede **234×40px**: passa a SC 2.5.8 (24×24) e fica 4px abaixo do piso de 44px do projeto. Subir muda a densidade da planilha — julgamento de produto, vai a gate |

**Estado documental atualizado:** `seed-componentes.md` **v1.12** (§67.7) ·
`validacao/MANIFESTO.md` **v13.1** (§93) · `mapa-cobertura-ds.md` **v2.2** (esta subseção).

### 22.6 Terceira parte da sessão de 2026-08-19 — SI18, e a guarda PARAMETRIZADA em vez de duplicada

| Instrumento | Contrato | Placar (2 execuções idênticas) | Alcance |
|---|---|---|---|
| `guarda-si17.mjs` **(parametrizada)** | **SI17** (`.sigla`) **+ SI18** (`.ent`) | **30 PASS · 0 FAIL · 174 `[n/a]`** | 51 arquivos × 2 temas × **2 contratos** |

**Nenhuma guarda nova nasceu** — a régua do SI18 é a mesma do SI17 (escrever a posição no navegador e ler
o estilo computado), e a regra do projeto manda **parametrizar**, não duplicar.

**O que ela achou:** 29 elementos `.ent` em 7 telas — a auditoria do §69 dizia 14 —, com quatro formas
diferentes, um ponto **transparente** no `tela-lista` e um raio literal divergente no `tela-referencia`.
E, ao trocar o literal pelo token, o raio caiu para **0px**: o gerador não emitia `--seed-radius-1`.

**PS-P5 REVOGADA pela medição:** o `.mini-avatar` carrega o **CLIENTE** (iniciais do cliente, posição de
entidade), não uma pessoa. Nasce **PS-P6**, de produto.

**AINDA SEM COBERTURA, acrescentado aqui:**

| # | O que ninguém mede |
|---|---|
| **PS-P6** *(nova)* | um CLIENTE desenhado com anatomia de PESSOA — iniciais + ponto de presença. O ponto de presença é `aria-hidden` e a presença **não está escrita em lugar nenhum da linha**: informação só por cor, e para ninguém |
| **IN-P1** *(nova)* | o arquivo `guarda-si17.mjs` carrega dois contratos e o nome só cita um. Renomear exige apagar arquivo, que só o Rafael autoriza |

**Estado documental:** `seed-componentes.md` **v1.13** (§65.8 e §62.8) · `validacao/MANIFESTO.md`
**v13.2** (§94) · `mapa-cobertura-ds.md` **v2.3** (esta subseção).

### 22.7 Quarta parte da sessão de 2026-08-19 — duas guardas novas, e o que elas contam

| Instrumento | Contrato | Placar | Alcance |
|---|---|---|---|
| **`guarda-valor-gemeo.mjs` (NOVO)** | **AC5-a/b/c** — valor de token redeclarado × gêmeo | **36 PASS · 0 FAIL · 11 `[achado]` · 32 `[n/a]`** · 4.930 valores comparados | 51 arquivos × 2 temas |
| **`guarda-literal-de-cor.mjs` (NOVO)** | **NV2-a/b** — censo do literal de cor fora de `var()` | censo: **1.912 com nome disponível · 504 sem nome** | 51 arquivos × 2 temas |
| `guarda-tinta-marca.mjs` | **MR2**, agora sobre a SUPERFÍCIE (lista de nomes) | **8 · 0 · 60** · 20 textos | 34 × 2 |
| `contraste-composicao.mjs` | os **dois alvos antes excluídos por custo** | `dp` **2 · 0** depois do conserto · `dg` com 1 `[achado]` por tema | CC-P1 fechada |

**O eixo que a AC5 fecha:** ninguém comparava o **valor** de token redeclarado no artefato com o do
gêmeo. Foi por aí que a **DD-P1** passou. Ela achou **1 defeito real** em 4.930 comparações — o anel de
foco do `banco-formfield` que não clareava no tema escuro — e três falsos que viraram cláusulas do
próprio instrumento (variante declarada no `<html>`, e tema que o artefato não promete).

**O que a NV2 conta, e o que o número quer dizer:** fora da família de e-mail — que **não pode** usar
`var()`, porque cliente de e-mail ignora propriedade personalizada —, o acervo tem **484** literais de
cor que **já têm nome nesta casa** e **168** que não têm. A guarda **não reprova**: trocar literal por
token pode mudar pixel no outro tema.

**AINDA SEM COBERTURA, acrescentado aqui:**

| # | O que ninguém mede / decidiu |
|---|---|
| **AC5-P1** *(nova)* | os **93** tokens de **dialeto local** que a AC5 listou: cada um é lacuna de token ou nome que devia morrer, e ninguém decidiu qual |
| **NV2-P1** *(nova)* | os **484** literais de cor com nome disponível fora do e-mail |
| **CC-P8** *(nova)* | o `<span>` com "●" da legenda do `banco-dataviz-dg`: caractere usado como amostra de cor. Mede 4,08 e 3,31 — cumpre o piso 3,00 da SC 1.4.11 como elemento **não textual**, mas a guarda de texto o vê como texto. Desenho, vai a gate |
| **DM-P1** *(nova)* | o `banco-dataviz-dm.html` **não tem gerador**: o `gen-dm.py` produz FRAGMENTOS, com nome fixo e sem aceitar destino. São **20** geradores de artefato, não 21 |
| **CC-P6 · CC-P7** | contraste a 390px só nas 8 telas; contraste do `tela-painel` só na lente padrão |
| **SH-P3 · PI-P1 · IN-P1 · PN-P6 · SI-P5 · PS-P6** | ver §22.2, §22.5 e §22.6 |

**FECHADO nesta parte:** AC-P4 · AC-P5 · MR-P3 · NV1-c (como censo) · DP-P9 · DP-P10 · CC-P1 ·
**a contagem de arquivos do §3**, aberta havia seis sessões: **322 arquivos em 8 diretórios**, contados
sobre a listagem recursiva do `device_list_dir` (saída de máquina), com o método e o risco residual
declarados no §95.7 do MANIFESTO.

**Estado documental:** `seed-componentes.md` **v1.13** · `validacao/MANIFESTO.md` **v13.3** (§95) ·
`mapa-cobertura-ds.md` **v2.4** (§22.7) · gêmeos de token **v1.17, SEM ALTERAÇÃO** — nenhum token
nasceu em toda a sessão. *(Superado pelo §22.8: o estado documental atual é v1.14 / v13.4 / v2.5.)*


---

### 22.8 Quinta parte da sessão de 2026-08-19 — o Rafael respondeu as quatro perguntas, e achou uma DIMENSÃO de cobertura que não existia

> **Leitor novo:** esta subseção fecha a sessão de 2026-08-19 (§22 a §22.8). O que interessa a um mapa
> de COBERTURA aqui não são as quatro respostas — essas estão no `seed-componentes.md`. É o fato de que
> **uma dimensão inteira de cobertura estava em ZERO e ninguém sabia**, porque nenhuma guarda a olhava.

#### 22.8.1 A dimensão que não existia: CENTRO DO DESENHO DENTRO DO ALVO

O Rafael apontou, num anexo de imagem e a olho nu, um **ícone fora do centro do botão**. Aquele
controle passava em **todas** as guardas do acervo: tamanho de alvo (SC 2.5.8), nome acessível
(SC 4.1.2), contraste de objeto gráfico (SC 1.4.11), foco visível. **Nenhuma media POSIÇÃO INTERNA.**

| dimensão de cobertura | antes | depois |
|---|---|---|
| **centro do desenho dentro do controle de ícone** | **0 controles medidos** — a dimensão não existia | **189 controles**, 51 arquivos, 2 viewports, **0 fora do centro** |

**Instrumento novo:** `validacao/guarda-centro-alvo.mjs` (contrato **CT1**, `seed-componentes.md` §70).
**Fronteira declarada:** mede **só o tema claro** (CT-P1) e **só o estado de repouso** (CT-P2). *Duas
pendências nascem já sabendo o que a guarda NÃO cobre — porque ausência de medição nomeada é dívida
declarada, e ausência de medição silenciosa é buraco.*
**⚠ SUPERSEDIDO na §22.9, no mesmo dia:** as duas fronteiras foram fechadas.

#### 22.8.2 A cobertura que CRESCEU sozinha, sem ninguém editar guarda

A `guarda-si17.mjs` varre **a pasta**, não uma lista. Quando os 11 clientes de `tela-tabela` e
`tela-referencia` viraram quadrados `.sigla`, a guarda passou a medi-los **no mesmo minuto, sem edição
nenhuma**:

| artefato | `.sigla` medidos antes | depois |
|---|---|---|
| `tela-tabela.html` | 1 | **7** |
| `tela-referencia.html` | 1 | **6** |

*É o argumento empírico a favor de guarda-que-varre-pasta contra guarda-que-lê-lista: o acervo cresce e
a medida acompanha sozinha. Com lista, os 11 elementos novos teriam entrado **não medidos**, e o placar
continuaria verde.*

#### 22.8.3 A cobertura que estava MENTINDO, e a terceira reincidência

A cláusula **NUM-02** da `suite-container.mjs` contava elementos decorativos dentro da tabela e
**subtraía uma lista de classes escrita à mão**. Quando `.mini-avatar` deixou de existir, ela reprovou
**6 elementos corretos**. Reescrita para medir a **coisa** (célula/linha oculta; enfeite que leva embora
todo o texto da célula), sem citar classe nenhuma, e **provada capaz de reprovar** em duas injeções.

> **Terceira reincidência da mesma família nesta sessão** — censo de telas da SI-P4 (dizia 4, eram 8),
> censo de elementos do SI18 (dizia 14, eram 29) e agora **dentro de uma guarda**. **LISTA ESCRITA À MÃO
> MEDE A LISTA, NÃO O ACERVO** — e a regra vale também para o miolo dos instrumentos, não só para a
> escolha dos alvos deles.

#### 22.8.4 Contagem do acervo depois desta parte

Nenhum artefato nasceu nem morreu: os **322 arquivos em 8 diretórios** do §22.6 seguem valendo. O que
mudou foi **conteúdo** de 12 arquivos (9 artefatos regerados ou editados, 2 moldes, 1 bancada) e o
nascimento de **1 guarda** e **1 montador de folha**.

**Artefatos novos de auditoria:** `render-audit/gate-v134/` — **44 recortes PNG** e a folha
`fechamento.html` (2,9 MB, tudo embutido em base64, **imagem faltando: 0**).

**Estado documental:** `seed-componentes.md` **v1.14** (§65.9, §65.10, §65.11 e §70) ·
`validacao/MANIFESTO.md` **v13.4** (§96) · `mapa-cobertura-ds.md` **v2.5** (esta subseção) ·
gêmeos de token **v1.17, SEM ALTERAÇÃO** — nenhum token nasceu em toda a sessão de 2026-08-19.

### 22.9 Sexta parte da sessão de 2026-08-19 — as duas fronteiras declaradas do CT1 fecham, e a cobertura passa a ter EIXO DE ESTADO

> **Leitor novo:** esta subseção presume que você nunca viu a conversa que a gerou. Na quinta parte
> (§22.8) nasceu o contrato **CT1** — *o desenho dentro de um controle de ícone tem de estar no centro
> da caixa do controle* — porque o **Rafael Sant'Ana** (CEO da SEED engenharia, decisor único do
> projeto) apontou a olho nu, num anexo de imagem, um ícone torto num botão de 44px que **passava em
> todas as mais de 60 guardas do acervo**. A guarda nasceu com duas fronteiras declaradas: media só o
> tema claro e só o estado de repouso. **As duas fecharam nesta sexta parte.**

#### 22.9.1 COBERTURA NOVA — o eixo de PONTEIRO estava em ZERO; o de FOCO já existia, e isso foi MEDIDO

| dimensão | antes desta parte | depois |
|---|---|---|
| centro do desenho **por TEMA** | 1 tema (claro) | **2 temas**, e o tema escuro só é medido em quem **promete** tema escuro (5 dos 51 não prometem, medido por assinatura de cor, não por `grep`) |
| centro do desenho **por ESTADO** | 1 estado (repouso) | **4 estados**: repouso · `:hover` · `:active` · `:focus-visible`, produzidos por **interação real** (ponteiro movido, botão pressionado, `Tab` apertado) e com **asserção de que o estado pegou** |
| **combinações medidas** | 1 | **8** (2 temas × 4 estados), em **2 larguras** (1440px e 390px) |
| medições efetivas | 189 a 1440px | **1.480 a 1440px** e **1.472 a 390px** · **0 fora do centro** |

**Placar: `180 PASS · 0 FAIL · 228 [n/a]`** em cada largura, com **duas execuções idênticas** em cada
uma. A matriz completa, separada por tema e por estado, está em `seed-componentes.md` **§70.5.2** —
*placar que não separa o que tem regra diferente mente pela média.*

**QUEM MEDIA ESTADO ANTES DESTA PARTE — censo dos 52 arquivos `.mjs` da pasta `validacao/`, contado,
não estimado.** A primeira redação desta subseção afirmava que *"nenhum instrumento media estado"*.
**Medido, isso estava errado**, e a correção está aqui em vez de sumir:

| eixo | instrumentos que o tocavam ANTES | o que isso significa |
|---|---|---|
| **PONTEIRO** (`:hover`, `:active` por `mouse.move` / `mouse.down`) | **0 de 52** | **este eixo estava de fato em zero.** Nenhum instrumento do acervo jamais moveu o ponteiro |
| **FOCO** (`.focus()` e/ou `keyboard.press`) | **20 de 52** | o eixo **já existia**: `guarda-il15` (11 usos de tecla), `suite-edicao-linha` (7), `suite-quadro` (6), `suite-texto-rico`, `suite-detalhe`, `suite-credencial`, `suite-data`, `suite-render`, `suite-identidade`, `suite-feedback`, `suite-navegacao`, `suite-pessoa`, `suite-sobreposicao`, `suite-superficies`, `guarda-forced-colors`, `suite-cn`, `suite-container`, `suite-gantt`, `suite-prioridade`, `suite-rotulagem` |
| **`:focus-visible` pelo NOME** | **1 de 52** (`suite-navegacao.mjs`) | os outros 19 medem o **efeito de focar**, não a pseudo-classe que só liga com modalidade de teclado |

> **A afirmação correta, e ela é mais estreita do que a primeira que eu escrevi:** o que nasceu aqui é o
> **eixo de PONTEIRO**, que estava em zero nos 52 instrumentos; o eixo de **foco** já era coberto por
> 20 deles, e o que o CT1 acrescentou nele foi a **modalidade de teclado explícita** (um `Tab` por
> passe, sem o qual `.focus()` programático não casa com `:focus-visible` no Chromium) e a **asserção**
> de que o foco pegou. *Este parágrafo é o registro de uma afirmação minha que a medição revogou —
> pendência escrita é hipótese, não censo, e vale também para o que eu mesmo acabei de escrever.*

#### 22.9.2 AINDA SEM COBERTURA — nomeado, não fechado

| # | O que não é medido | Por quê |
|---|---|---|
| **CT-P3** | **combinação** de estados (foco por teclado **e** ponteiro em cima ao mesmo tempo) | o número de combinações cresce em fatorial e ainda não há evidência de que alguma mova tinta |
| **CT-P4** | os **três cortes de candidatura** do CT1 (conteúdo ≤60% · caixa quadrada · sem `justify-content: space-*`) | eles nasceram porque a guarda condenou 37 controles corretos, mas **o critério nunca foi provado capaz de errar** — nem de excluir de menos, nem de excluir demais |
| **eixo de PONTEIRO nos OUTROS contratos** | contraste, alvo, cor forçada e reflow seguem medindo só repouso — **medido: 0 de 52 instrumentos move o ponteiro além dos dois desta parte** | dívida declarada nesta subseção, sem dono ainda. Contraste em `:hover` é o caso mais provável de esconder defeito real, porque fundo de hover é uma cor que ninguém mediu |

#### 22.9.3 Dois defeitos de INSTRUMENTO, e o formato do dano em cada um

| # | defeito | o dano, e por que ele é difícil de ver |
|---|---|---|
| **33º do catálogo** | `scroll-behavior: smooth` em 3 artefatos fazia `scrollIntoView()` **animar**, e a guarda lia a posição **antes** de a rolagem terminar | **não produzia FAIL: produzia `[n/a]` com motivo plausível** ("o ponteiro não alcança"). 14 medições perdidas em silêncio. *Desligar `animation` e `transition` NÃO cobre `scroll-behavior` — ela é uma terceira forma de animar e tem de ser desligada por nome.* Consertado, as 14 voltaram |
| motivo de `[n/a]` **agregado** | `<button disabled>` (isento por contrato) e `<div role="button">` sem `tabindex` (defeito de teclado, SC 2.1.1) saíam com o **mesmo** motivo | *motivo agregado esconde causa*: um defeito real poderia ficar escondido atrás de uma isenção legítima. Separados, o acervo mostrou **4 casos, todos `disabled`, e nenhum defeito de teclado** — mas isso é conclusão de medida, não de sorte |

#### 22.9.4 A pasta de prova, e por que ela é cobertura

`render-audit/prova-ct1/` — **8 artefatos** de dado **sintético** com defeito plantado, mais um
`LEIA-ME.md` autossuficiente. **Placar de referência: `40 PASS · 12 FAIL · 12 [n/a]`**, idêntico em duas
execuções, com os **4 caminhos de `[n/a]` disparando**.

> **Ali, FAIL é o resultado desejado — é um teste de teste.** Se a pasta voltar **0 FAIL**, quem quebrou
> foi a guarda, não o acervo. Isto é cobertura de **instrumento**, categoria que este mapa não tinha:
> até aqui o mapa media o que as guardas cobrem do acervo, e não o que prova as guardas.

#### 22.9.5 Contagem do acervo depois desta parte

**Nenhum artefato `banco-*` ou `tela-*` foi alterado. Nenhum token nasceu.** Os 34 artefatos e os 51
HTMLs de raiz seguem idênticos byte a byte — e isso é **resultado medido**, não omissão: o bloco CT1
escrito na quinta parte já estava correto também no tema escuro e nos três estados de interação.

**Nascem 12 arquivos:** `render-audit/prova-ct1/` (9) · `validacao/monta-folha-v135.py` ·
`render-audit/spec-ct1.json` · `render-audit/gate-v135/fechamento.html` (27 imagens embutidas em
base64, **imagem faltando: 0**) mais os 29 PNG de recorte.
**Mudam 4:** `validacao/guarda-centro-alvo.mjs` (reescrito) · `validacao/corta-recorte.mjs` (estendido
com `hover`, `ativo`, `rotulo` e asserção de estado) · `seed-componentes.md` · `validacao/MANIFESTO.md`.

**Estado documental:** `seed-componentes.md` **v1.15** (§70 reescrito: §70.5 supersede, §70.6 prova de
inércia, §70.7 pendências) · `validacao/MANIFESTO.md` **v13.5** (§97) · `mapa-cobertura-ds.md` **v2.6**
(esta subseção) · gêmeos de token **v1.17, SEM ALTERAÇÃO**.

### 22.10 Sétima parte da sessão de 2026-08-19 — duas dimensões que estavam em ZERO, e uma delas foi aberta por uma RECUSA

> **Leitor novo:** esta subseção presume que você nunca viu a conversa que a gerou. Na parte anterior
> (§22.9) eu registrei, na folha do gate, que o sino e o botão de menu da barra superior do `tela-shell`
> **não mudavam nada ao receber o mouse** — e classifiquei isso como *"decisão de aparência"*, devolvendo
> a decisão ao **Rafael Sant'Ana** (CEO da SEED engenharia, decisor único do projeto). **Ele recusou a
> pergunta:** *"o que o mercado sugere? pesquise e aplique, nao é decisao minha."* Desta recusa nasceu a
> primeira dimensão abaixo. A segunda fecha a **SH-P3**, aberta havia quatro partes.

#### 22.10.1 COBERTURA NOVA — o eixo de RESPOSTA AO PONTEIRO (contrato HV1)

| dimensão | antes desta parte | depois |
|---|---|---|
| o controle **responde** ao ponteiro? | **0 controles medidos** — a dimensão não existia | **1.410 controles ativos**, 51 arquivos, 2 temas, 1440px |
| o **pressionado** é distinto do sobrevoo? | 0 | **1.410** |
| a **tinta sobrevive** ao fundo novo do estado? | 0 | **1.410**, com piso ≥3,0 (só ícone, SC 1.4.11) e ≥4,5 (com texto, SC 1.4.3) |

**O que a cobertura nova ACHOU, e é o maior achado de uma medição nesta sessão:**

| cláusula | reprovações | proporção |
|---|---|---|
| **HV1-a** sem nenhuma resposta ao ponteiro | **619** | **44%** |
| **HV1-b** pressionado indistinguível do sobrevoo | **1.350** | **96%** |
| **HV1-c** contraste abaixo do piso no estado novo | **90** | **6%** — **violação de norma HOJE** |

**Placar: 0 PASS em 51 arquivos.**

> **A lição de cobertura: o Rafael viu DOIS botões e a régua encontrou 1.969 reprovações.** É a terceira
> vez nesta sessão que um apontamento dele revela uma CLASSE — foi assim com o ícone fora do centro (2
> apontados → 16 defeitos) e com a empresa logada (1 nome → 8 telas). *Quando ele aponta uma coisa, a
> pergunta de cobertura não é "quantos como este?", é **"que régua está faltando?"**.*

**E há uma lição sobre a natureza do instrumento:** a guarda **julga pelo PIXEL**, com três capturas por
controle, porque a primeira versão — que julgava por `getComputedStyle` — **se desmentiu na primeira
execução**. *Propriedade computada do ELEMENTO não descreve a APARÊNCIA do elemento: o que o usuário vê é
a composição.*

#### 22.10.2 COBERTURA NOVA — COLISÃO, COBERTURA E CORTE (contrato SH1) · **FECHA a SH-P3**

| dimensão | antes | depois |
|---|---|---|
| **colisão** entre irmãos em fluxo | **0 pares comparados** | **96.000 pares** a 1440px e **95.140** a 390px |
| **texto coberto** (hit-test de quem está por cima) | 0 | **9.826 nós de texto** a 1440px |
| **texto cortado** sem reticência | 0 | todas as caixas que escondem excesso |
| **espaçamento da SC 1.4.12** (`line-height 1.5`, `letter-spacing .12em`, `word-spacing .16em`) | **nunca medido em nenhum instrumento do acervo** | medido em **todos** os 51 arquivos, nos dois temas |

**Placar: `204 PASS · 0 FAIL · 0 [n/a]` a 1440px** · **`198 PASS · 6 FAIL` a 390px** (os 6 são a
pendência **SH-P8**).

> **O que a `suite-reflow` (BT7) estruturalmente não cobria, e por isso a SH-P3 existia:** ela mede se o
> **documento** estoura na largura. Conteúdo pode encavalar **sem** estourar largura nenhuma. *Guarda que
> mede o continente não mede o conteúdo.* E foi exatamente ali que os defeitos reais estavam: quatro
> artefatos escondiam conteúdo a 390px **sem** que nenhum placar reclamasse.

#### 22.10.3 CATEGORIA NOVA DE COBERTURA — DECLARAÇÃO COM SAÍDA VERIFICADA

Duas situações do acervo eram **legítimas** e, para uma guarda que só olha pixel, **idênticas a defeito**:
o painel de chat que **sobrepõe de propósito** (contrato CH3) e a régua do cronograma que é **recortada**
e acompanha a área rolável. A saída não foi afrouxar a régua nem listar exceções à mão — foi criar
`data-sobrepoe="declarado:<id>"` e `data-recorte="sincronizado:<id>"`, e **a guarda verifica que a saída
existe, está visível e opera**.

> **Isto é cobertura de um tipo que este mapa não tinha: cobertura da INTENÇÃO.** Até aqui o mapa media o
> que as guardas alcançam do acervo; agora há um mecanismo para o acervo **declarar** o que é desenho, em
> linguagem que a máquina verifica. **Declaração sem saída verificável não isenta: reprova.**

#### 22.10.4 CINCO defeitos de instrumento, todos de FALSO POSITIVO

A primeira execução da SH1 acusou **398 colisões, 122 textos cobertos e 304 textos cortados**. Depois de
cinco consertos de **régua** — nenhum de artefato — o acervo saiu **limpo** a 1440px. Os defeitos foram:
**caixa de inline multilinha** (106 falsos `strong × strong`) · **34º** `<details>` fechado tem retângulo
e não tem pixel · **35º** `elementFromPoint` é hit-test, não pintura · **36º** a técnica de leitor de tela
**é** uma caixa de 1px com `overflow:hidden` (172 falsos `span.vh`) · **37º** conteúdo rolado para fora de
`overflow:auto` · **38º** o eixo que esconde tem de ser o que transborda.

> **Lição de cobertura, e ela é o contrário do que a intuição diz: guarda nova que reprova DEMAIS é mais
> perigosa que guarda que reprova de menos**, porque força conserto errado em artefato correto. *Eu quase
> consertei uma tabela feita PARA LEITOR DE TELA para satisfazer um placar.*

#### 22.10.5 Contagem do acervo depois desta parte

**Nascem 26 arquivos:** `render-audit/prova-hv1/` (8) · `render-audit/prova-sh1/` (14) ·
`validacao/guarda-resposta-ponteiro.mjs` · `validacao/guarda-colisao.mjs` ·
`validacao/monta-folha-v136.py` · `render-audit/gate-v136/` (a folha + 32 recortes).
**Mudam 12:** 4 moldes, 1 gerador, 4 artefatos regerados, `seed-design-system.html`, e os dois gêmeos de
token.

**Estado documental:** `seed-componentes.md` **v1.16** (§71 e §72) · `validacao/MANIFESTO.md` **v13.6**
(§98) · `mapa-cobertura-ds.md` **v2.7** (esta subseção) · gêmeos de token **v1.18 — os PRIMEIROS dois
tokens da sessão inteira**, e sem nenhum hex novo: o que nasceu foi o **propósito com nome**.

### 22.11 Oitava parte da sessão (2026-08-20) — a dimensão de VAZAMENTO entra, e o 40º defeito ensina o que "medir duas vezes" significa

> **Leitor novo:** esta subseção presume que você nunca viu a conversa que a gerou. Na parte anterior
> (§22.10) nasceu o contrato **SH1** — *nada se sobrepõe, nada fica coberto, nada é cortado em silêncio* —
> com três cláusulas, e o acervo saiu **204 PASS · 0 FAIL** a 1440px. Nesta parte o **Rafael Sant'Ana**
> (CEO da SEED engenharia, decisor único do projeto) mandou uma captura do `tela-gantt.html` a **390px**
> com duas setas vermelhas nos botões "Anterior" e "Próximo" e escreveu: *"o nome dentro do botao estoura
> para fora, isso tem soluçao?"*. **As três cláusulas de SH1 davam aquela tela como limpa.**

#### 22.11.1 COBERTURA NOVA — o eixo de VAZAMENTO (cláusula SH1-d)

| dimensão | antes desta parte | depois |
|---|---|---|
| conteúdo que **transborda** caixa com `overflow: hidden` (o que o recorte **esconde**) | **coberto** desde a §22.10, pela SH1-c | idem |
| conteúdo que **atravessa a fronteira visível** da própria caixa (o que a caixa **não segura**) | **0 caixas medidas** — a dimensão não existia em nenhum dos 54 instrumentos | **9.456 caixas com fronteira visível** a 1440px e **9.244** a 390px, nos 51 arquivos × 2 temas × 2 espaçamentos |

**Fronteira visível** = borda, fundo pintado, ou ser controle interativo. O recorte é da régua, não
conveniência: texto que passa da caixa de um `div` transparente é layout normal e **ninguém vê**; texto
que atravessa a borda de um botão **salta aos olhos**.

> **SH1-c e SH1-d são o mesmo defeito por dois lados**, e é isso que faz desta uma dimensão nova de
> cobertura e não um refinamento: um instrumento que só olhasse `overflow: hidden` seria
> **estruturalmente cego** para metade do problema. **Cobertura não se mede em número de guardas — se
> mede em número de PERGUNTAS que alguma guarda sabe fazer.**

#### 22.11.2 O que a cobertura nova achou

| alcance | vazamentos |
|---|---|
| primeira execução sobre o acervo | **168** — e **todos** eram do instrumento (39º defeito: `clientWidth` de inline não-substituído vale **ZERO**; censo: 124 `code` + 24 `kbd` + 16 `span.kbd` + 4 `span`) |
| depois do conserto da régua | **2** — exatamente os dois botões que o Rafael apontou |
| depois do conserto do artefato, a 390px e 1440px, nos dois espaçamentos | **0** |

#### 22.11.3 A dimensão de cobertura que ninguém tinha combinado: a ALTURA da janela

Este projeto padronizou **largura** (1440px e 390px) e nunca padronizou **altura** — todos os 54
instrumentos usam **900** por herança, não por decisão. Nesta parte a segunda medição do acervo a 390px
saiu com **altura 844**, por descuido, e o placar **divergiu**: **8 FAIL a 390×844 contra 6 FAIL a
390×900**.

A causa da divergência era o **40º defeito de instrumento**: **`opacity: 0` NÃO tira o elemento do
hit-test** (`visibility:hidden` e `display:none` tiram), e a função que decidia "isto pinta?" olhava cor,
imagem e borda, **não opacidade**. O `div#toast` invisível do `banco-icones.html` é `position:fixed;
bottom:16px` — logo **a posição dele depende da ALTURA da janela**: a 844 ele cai sobre um rótulo, a 900
cai 56px abaixo, sobre nada.

> **LIÇÃO DE COBERTURA, e ela corrige uma regra de método deste projeto por dentro: rodar o mesmo comando
> duas vezes não é medir duas vezes — é obter o mesmo número duas vezes.** Medir duas vezes é **variar uma
> dimensão** e ver se a conclusão sobrevive. A altura da janela é uma dimensão de cobertura **real** que
> estava congelada em um único valor, e por isso escondia defeito. Depois do conserto as duas alturas
> concordam em **198 PASS · 6 FAIL**.
>
> **Fica declarado como dívida, não como conclusão:** a única altura medida de propósito neste acervo
> continua sendo **900**. Varrer uma segunda altura sistematicamente — em SH1 e nas outras guardas — não
> está feito.

#### 22.11.4 Contagem e estado documental depois desta parte

**Nascem 3 arquivos:** `render-audit/prova-sh1/sh-d-vaza-botao.html` ·
`render-audit/prova-sh1/sh-isento-sem-fronteira.html` · `render-audit/prova-sh1/sh-achado-opacidade-zero.html`.
**Mudam 6:** `validacao/guarda-colisao.mjs` (cláusula SH1-d + dois consertos de régua) ·
`validacao/tela-gantt-template.html` · `tela-gantt.html` (regerado, nunca editado à mão) ·
`render-audit/prova-sh1/LEIA-ME.md` · `seed-componentes.md` · `render-audit/gate-v136/fechamento.html`.

**A pasta de prova de SH1 vai a 16 fixtures, com placar de referência 42 PASS · 22 FAIL** — e ali **FAIL
é o resultado desejado**: se aquela pasta voltar 0 FAIL, quem quebrou foi a guarda.

**Estado documental:** `seed-componentes.md` **v1.17** (§72 revista) · `validacao/MANIFESTO.md` **v13.7**
(§99) · `mapa-cobertura-ds.md` **v2.8** (esta subseção) · gêmeos de token **v1.18, sem mudança** ·
**propagação para a pasta do Drive: 69 arquivos escritos e 77 conferidos por MD5, 0 divergentes** — o que
fecha a propagação pendente que a queda da ponte deixou na sétima parte.

### 22.12 NONA parte (2026-08-20) — duas réguas mediam a coisa errada, e a segunda escondia 862 reprovações num arquivo canônico

> **Autossuficiente:** presume um leitor que nunca viu a conversa. Esta subseção registra o que a
> **cobertura** aprendeu ao fechar a pendência **HV-P5** (contraste no estado de sobrevoo/pressionado).
> Registro completo em `validacao/MANIFESTO.md` **§100**.

#### O que passou a ser medido, e o que se descobriu que NUNCA foi

| dimensão | antes | agora | como se soube |
|---|---|---|---|
| **tinta de QUEM PINTA a letra** dentro de um controle | a HV1-c media a tinta **do controle** | mede **um alvo por elemento com nó de texto próprio** | medido: de **1.260** controles com texto, **364** pintam por descendente e **164** com tinta diferente. Rendeu **1** artefato correto absolvido e **12** defeitos reais que a régua velha não via |
| **cobertura da varredura de contraste** | filtro `/^(banco\|tela)-.*\.html$/` → **34 de 51** HTMLs de raiz | os **17** restantes medidos um por um | **32 PASS · 0 FAIL** em 16 deles; o 17º (`seed-design-system.html`) tinha **862** folhas reprovadas |
| **tinta × TODAS as superfícies de interação** (não só a página) | tinta de marca medida contra a página: 4,60 | tabela tinta × 5 superfícies | `#098475` reprova em **todas** as que não são branco puro: 4,23 · 3,81 · 4,28 |
| **rolagem suave na ferramenta de RECORTE** | não desligada | desligada por nome | o recorte do `seed-design-system.html` saía fora da imagem — era o **33º defeito**, num **terceiro** instrumento |

#### As dimensões que seguem em ZERO, agora com nome

| dimensão | quem mediria | por que está em zero |
|---|---|---|
| **estado de SELEÇÃO** (`tr.selecionada`) para contraste | ninguém | a CT1 cobre repouso/hover/ativo/foco; a HV1 cobre hover/ativo. **Seleção é estado de DADO, não de ponteiro** — escapou dos dois eixos. Medido de propósito nesta parte: `text-link` sobre `row-selected-bg` = **4,28**, abaixo do piso. Pendência **SE-P1** |
| **COLISÃO DE ESPECIFICIDADE de CSS** | ninguém | todas as guardas medem o **resultado**, nenhuma mede a **causa**. Ela já produziu **três** defeitos em **três** partes consecutivas: o avatar da barra superior (§71.7), a página corrente da paginação e o título da coluna de marca. Pendência **ES-P1** |
| **defasagem entre a versão do gêmeo declarada no artefato e a atual** | ninguém | medido por comando: o acervo declara **seis** versões — v1.5 (1) · v1.7 (2) · v1.8 (1) · v1.9 (15) · v1.12 (1) · v1.17 (23) · v1.19 (3). Pendência **TK-P1** |
| **`scroll-behavior` nos 54 `.mjs` de `validacao/`** | uma varredura de uma linha | **não medida nesta sessão.** O 43º defeito foi encontrado por acidente num instrumento; ninguém varreu os outros |
| **degrau de TEXTO GRANDE na HV1-c** | o próprio instrumento | fora **de propósito** para a prova de inércia ser legível. Medido: **0** vereditos mudariam hoje. Pendência **HV-P6** |

#### A lição de cobertura desta parte

> **Um filtro por PREFIXO DE NOME DE ARQUIVO é uma lista escrita à mão com outra sintaxe.** Ele herda o
> esquecimento de quem o digitou — e é **pior** que uma lista explícita, porque tem a **aparência** de
> alvo de pasta, que é justamente o mecanismo que esta casa criou para *"a cobertura crescer sozinha"*.
> **Alvo de pasta com filtro de nome dá a aparência de crescer sozinho e não cresce.**
>
> E o contraste com o outro instrumento é a prova: a `guarda-resposta-ponteiro.mjs` e a
> `guarda-colisao.mjs` varrem `readdirSync(...).filter(f => f.endsWith('.html'))` — **os 51** — e por isso
> viram o `seed-design-system.html`. *A mesma pasta, dois instrumentos, duas coberturas diferentes, e
> ninguém tinha comparado as duas listas.* **Fica como régua nova: quando dois instrumentos varrem a mesma
> pasta, a diferença entre os dois conjuntos de alvo é um número que alguém tem de imprimir.**

---

### 22.13 DÉCIMA parte (2026-08-20) — a cobertura de BT1 sai de "dez de trinta e quatro" para alvo de pasta, e nasce uma dimensão de ENTREGA

> **Autossuficiente:** presume um leitor que nunca viu a conversa. Esta subseção registra o que a
> **cobertura** aprendeu ao verificar por instrumento o contrato **BT1** — *a barra de controles de
> avaliação de todo artefato produzido é fixa no topo* —, escrito em `seed-componentes.md` §64.1 desde
> 2026-08-16. Especificação completa em `seed-componentes.md` **§74**; registro de método em
> `validacao/MANIFESTO.md` **§101**; folha de conferência em `render-audit/gate-v141/fechamento.html`.
>
> **Vocabulário mínimo.** *Barra de provas* = os botões que existem só para AVALIAR o artefato
> (alternar claro/escuro, prova em escala de cinza, seletor de largura), não para usá-lo. *Alvo de
> pasta* = instrumento que descobre seus alvos varrendo o diretório
> (`readdirSync(dir).filter(f => f.endsWith('.html'))`) em vez de percorrer lista escrita à mão — com
> isso a cobertura cresce sozinha quando nasce arquivo novo. *`[n/a]`* = veredito de "não se aplica",
> que nesta casa é **sempre** acompanhado de motivo nomeado.

#### O que passou a ser medido, e o que se descobriu que NUNCA foi

| dimensão | antes | agora | como se soube |
|---|---|---|---|
| **BT1 — barra de provas travada no topo** | **lista escrita à mão de 10 artefatos** (nove telas + `banco-dominio`, com `tela-site` excluída), declarada verificada em 2026-08-17 ao fechar a **BT-P2** | `validacao/guarda-barra-fixa.mjs`, **alvo de pasta**, varre os **51** HTMLs de raiz: **33 PASS · 0 FAIL · 18 [n/a]** | o Rafael abriu **um** arquivo (`banco-navegacao.html`), viu os botões soltos no fluxo e escreveu *"acredito ter outros"*. Havia **onze** |
| **a barra GRUDA de fato** (não só declara `sticky`) | ninguém rolava a página: a verificação era da propriedade | **três das quatro cláusulas são comportamentais** — rola até o fim e mede o retângulo | dos onze reprovados, **dois** (`banco-feedback`, `banco-superficies`) tinham `position:fixed` — a propriedade "passava" e o comportamento reprovava (topo a **+12px**, tolerância 4px) |
| **a barra não COBRE conteúdo** (BT1-d) | dimensão inexistente | medida com a página **NO TOPO**: o irmão seguinte tem de começar depois do fim da barra | **2** reprovações. *A primeira versão desta cláusula media depois de rolar, e reprovava o `sticky` legítimo — foi a pasta de prova que pegou* |
| **a barra não é COBERTA** (BT1-c) | dimensão inexistente, embora o defeito já tivesse acontecido | hit-test no centro da barra + interceptação do clique | **0** no acervo hoje — mas o defeito é real: em 2026-08-17 a `tela-chat` tinha barra e painel empatados em `z-index:60` e, a 320px, o chat cobria a barra inteira |
| **largura de janela como eixo de BT1** | não existia | medido a **1440×900 e 320×900** | o defeito histórico da `tela-chat` só aparecia a 320px. Medido: a 320px a peneira acha **92** candidatos (contra 93) e descarta **585** (contra 608); **o veredito não muda** |
| **fidelidade da DEMONSTRAÇÃO entregue ao decisor** | dimensão inexistente — folha de conferência só tinha imagem estática | `validacao/extrai-vivo.mjs` extrai o trecho VIVO do artefato real e a **guarda HV1 oficial** mede o quadro extraído | **6/0/0 · 6/0/0 · 10/0/0 · 4/1/0** — e o único "1" **reproduz um defeito real remanescente** do artefato, o que é a prova de que o quadro é fiel |

#### A dimensão de cobertura que nasce aqui: a FORMA DE ENTREGA também tem de ser medida

O Rafael pediu, verbatim: *"ao invés de me pedir para abrir o arquivo … abaixo do print, traxa a
pagina viva para eu poder passar o mouse e testar … **basta repetir o codigo daquela parte correto?**"*

> **Não basta.** Trecho **redigitado** na folha de conferência torna a folha uma **SEGUNDA FONTE** — ela
> pode mostrar um botão que se comporta de um jeito enquanto o artefato se comporta de outro, e ninguém
> notaria. É a classe de defeito que este projeto chama de **dado sintético plausível**: o mais
> perigoso, porque não chama atenção e por isso não é conferido.
>
> **Régua nova: DEMONSTRAÇÃO VIVA É EXTRAÍDA, NUNCA REDIGITADA.** E, sendo extraída, ela é
> **mensurável** — daí a linha nova na tabela acima. *Antes desta parte, a única coisa que a folha de
> conferência garantia era que a imagem tinha sido gerada; nada garantia que o que o decisor tocava
> correspondia ao artefato.*

⚠ **Fronteira declarada da nova dimensão:** o `<iframe>` **não é** o artefato — não tem o layout inteiro
em volta. Ele **não serve** para julgar composição, aperto de largura nem colisão; para isso o veredito
continua sendo do artefato e das guardas. Ele serve para **passar o mouse e clicar**.

#### O 44º defeito de instrumento — e por que ele é um defeito de COBERTURA, não só de código

A primeira versão do `extrai-vivo.mjs` lia CSS com **expressão regular**. Medido ao provar a folha: **em
TRÊS dos CINCO quadros o bloco de tokens não entrou** — `--seed-text-primary` resolvia vazio e o fundo
saía transparente. Causa: **chave `{` dentro de COMENTÁRIO CSS desalinha um parser de texto**, e esta
casa acabou de escrever, no mesmo dia, comentários que contêm `{ position: fixed }`.

A régua certa **já existia na casa**: a `guarda-literal-de-cor.mjs` percorre o **CSSOM**
(`document.styleSheets` → `cssRules`) desde que nasceu — no CSSOM o comentário não existe e o seletor
já vem normalizado. Reescrito por CSSOM: **5 de 5 resolvem**.

> **Terceira vez NA MESMA SESSÃO** em que a régua certa já estava escrita em outro arquivo (as outras
> duas: a HV1-c alinhada ao `contraste-composicao.mjs`, e o `scroll-behavior` que dois instrumentos já
> desligavam e um terceiro não). Isso é um achado de cobertura: **não existe censo de qual técnica cada
> instrumento usa para a mesma tarefa.** Nomeado como pendência **IN-P2**.

#### As dimensões que seguem em ZERO — atualizadas

| dimensão | quem mediria | por que está em zero |
|---|---|---|
| **BT2 — seletor de LARGURA DE PÁGINA em toda bancada** | ninguém | BT1 e BT2 nasceram no **mesmo** gate (§64.1) e só um ganhou régua. A `guarda-barra-fixa.mjs` declara **não** julgar a composição da barra. Dos 33 artefatos com barra provada, quantos têm seletor de largura é hoje **desconhecido** — e "desconhecido" é exatamente o estado que a BT-P2 tinha quando foi declarada fechada. Pendência **BT-P3** |
| **qual técnica cada `.mjs` usa para ler CSS** (texto vs. CSSOM) | uma varredura de uma linha | o 44º defeito custou 3 de 5 quadros. Apenas `guarda-literal-de-cor.mjs` e `extrai-vivo.mjs` v2 estão confirmados em CSSOM; os outros **não foram verificados**. Pendência **IN-P2** |
| **token consumido sem ser declarado, NO ATO DA ESCRITA** | ninguém | as suítes pegam depois (NV-01/NV-02 acusaram **6** arquivos nesta parte: 38·1 → 39·0 e 92·1 → 93·0), e a guarda **BP1** pegou o mesmo defeito em **seis bancadas** em 2026-08-17. **Defeito que repete em família é defeito de método, não de arquivo** |
| **estado de SELEÇÃO** para contraste | ninguém | inalterado desde §22.12. Pendência **SE-P1** |
| **COLISÃO DE ESPECIFICIDADE de CSS** | ninguém | inalterado desde §22.12. Pendência **ES-P1** |
| **defasagem de versão do gêmeo declarada no artefato** | ninguém | inalterado desde §22.12 (seis versões no acervo). Pendência **TK-P1** |
| **`scroll-behavior` nos 54 `.mjs` de `validacao/`** | uma varredura de uma linha | **ainda não medida.** Segue de §22.12 |

#### A lição de cobertura desta parte

> **PENDÊNCIA DE CONTRATO TRANSVERSAL NÃO FECHA POR LISTA — FECHA POR INSTRUMENTO DE ALVO DE PASTA.**
> A BT-P2 foi declarada fechada em 2026-08-17 com *"aplicada e MEDIDA em nove telas mais
> `banco-dominio`"*. Dez artefatos, num acervo de trinta e quatro. **A frase não era falsa** — os dez
> estavam certos; o que estava errado era chamar aquilo de *fechamento de um contrato que diz "todo
> artefato produzido"*.
>
> É a **mesma família** do 42º defeito de §22.12 (filtro por prefixo de nome deixando 17 de 51 fora) e
> a mesma família da lição de §22.2 (*"o censo por classe é hipótese, não medida"*). Três aparições em
> duas sessões consecutivas.
>
> **Régua operacional que sai daqui:** ao declarar fechada uma pendência de contrato transversal, o
> fechamento tem de citar **o instrumento**, **o alcance impresso pelo instrumento** (quantos arquivos
> ele varreu, na pasta que varreu) e **o censo de `[n/a]` com motivo**. Fechamento que cita uma lista
> de nomes é hipótese com aparência de medida.

---

### 22.14 DÉCIMA parte, SEGUNDA rodada (2026-08-20) — nasce a dimensão de RECURSO QUE CHEGA, e ela veio de uma pergunta sobre outra coisa

> **Autossuficiente:** presume um leitor que nunca viu a conversa. Especificação completa em
> `seed-componentes.md` **§75**; registro de método em `validacao/MANIFESTO.md` **§102**; folha de
> conferência em `render-audit/gate-v142/fechamento.html`.
>
> **Vocabulário.** *Pilha de `font-family`* = a lista de alternativas de uma declaração. *Genérica* =
> `serif`, `sans-serif`, `cursive`, `monospace` e afins, que o navegador sempre resolve. *`@font-face`
> embutido* = a fonte viaja com o arquivo e por isso é **portátil**; *fonte de sistema* = existe na
> máquina de quem olha e por isso **não** é.

#### Como esta dimensão nasceu

O Rafael viu num anexo *"uma imagem que não carregou"* e perguntou se **ela mudava a avaliação de
contraste**. A resposta medida foi **não** — cor, tamanho, peso, retângulo do texto dentro do cartão e
cor do fundo no pixel saíram **idênticos** com e sem a imagem. A pergunta estava respondida em quatro
números.

> **Mas a investigação achou o que a pergunta não continha:** ninguém nesta casa jamais mediu se as
> **famílias tipográficas** e os **recursos externos** que um artefato declara **realmente chegam**.
> Medido no `seed-design-system.html`: **0 de 45** imagens e **0 de 2** famílias carregam.
> **Consequência: todo recorte daquele artefato já mostrado ao decisor saiu com a tipografia de
> reserva.**
>
> **Lição de cobertura: pergunta do decisor sobre um DETALHE é o modo mais barato de descobrir uma
> DIMENSÃO inteira que não existia.** *Ele não pediu uma dimensão nova; ele perguntou se um pixel
> importava. A resposta honesta obrigou a medir o que ninguém media.*

#### O que passou a ser medido

| dimensão | antes | agora | como se soube |
|---|---|---|---|
| **família tipográfica que o artefato declara REALMENTE resolve** | dimensão inexistente | `validacao/guarda-tipografia-viva.mjs` (contrato **TP1**), alvo de pasta, varre os **51** | **30 PASS · 21 FAIL · 0 `[n/a]`**; `0 TP1-a` — nenhum artefato perdeu o controle da tipografia |
| **recurso EXTERNO que o artefato busca** | dimensão inexistente | toda requisição que falha sai nomeada, com host e `errorText` | **21 artefatos** dependem de rede: 13 da família de e-mail (`assets.seed.eng.br`), 7 bancadas (`fonts.googleapis.com`), 1 o showcase legado (3 hosts, 46 recursos) |
| **imagem declarada tem PIXEL** | dimensão inexistente | `complete && naturalWidth>0` por `<img>` | **14 artefatos** com imagem sem pixel. *O texto de `alt` que aparece no lugar é tinta que NENHUMA régua desta casa mede — `<img>` não tem nó de texto próprio* |
| **PORTABILIDADE da fonte** — resolve por `@font-face` ou por fonte de sistema? | dimensão inexistente | achado contado, nunca FAIL | **85 pilhas** resolvem por fonte de **sistema**. Elas resolvem **aqui** e não resolveriam numa máquina limpa |
| **texto que atravessa DUAS superfícies** | a régua de contraste resolvia **um** fundo por **elemento** | protótipo `validacao/mede-fundo-por-linha.mjs`, que mede por **linha** com `Range.getClientRects()` | medido: a régua deu **6,56** onde o pixel dá **3,92**. Pendência **CC-P11** |
| **`opacity` em tinta** | lição de método escrita, sem sigla nem caso fundador | caso fundador medido | **4,60 declarado × 4,01 real** no kicker do cartão de post. Pendência **CC-P12** |

#### A atribuição por família muda o que o número SIGNIFICA — e isso é achado de cobertura

As 21 reprovações de TP1-b não são 21 defeitos:

- **13 são da família de e-mail** e são **isenção declarada**: e-mail não pode embutir ativo; imagem
  remota é a norma do meio e o cliente bloqueia até o leitor liberar. O host é `assets.seed.eng.br`, da
  própria SEED.
- **7 são bancadas** que carregam a fonte do Google Fonts. **Este é o achado novo e real.**
- **1 é o showcase legado**, com 46 recursos externos num só arquivo.

> **Régua nova: placar de contrato transversal só é legível depois de ATRIBUIR o FAIL a uma família de
> artefato.** *"21 FAIL" e "7 bancadas mais uma isenção declarada de 13" descrevem o mesmo número e
> exigem decisões opostas.* Nesta rodada a atribuição foi feita **à mão** — é dívida declarada, e a
> pendência **TP-P1** é fazê-la sair impressa pelo próprio instrumento.

#### A lição de instrumento: cinco passes, e a repetição é o achado

A guarda TP1 esteve **errada cinco vezes** antes de acertar: reprovou **48 de 51**, depois **46**,
depois **22 com 3 falsos positivos**, depois **6 de 6 na própria pasta de prova**, e só então ficou
correta. As cinco vezes o erro foi o mesmo em forma diferente — **medir algo adjacente ao que o contrato
nomeia**: família em vez de pilha · pilha sem olhar a genérica · CSSOM declarado em vez de `computed`
(devolvia `var(--seed-font-sans)` sem resolver) · `computed` sem excluir a fonte padrão do navegador.

> **QUANDO UMA RÉGUA NOVA REPROVA EM BLOCO, A PRIMEIRA HIPÓTESE NÃO É "O ACERVO ESTÁ RUIM" — É "A RÉGUA
> ESTÁ MEDINDO OUTRA COISA".** E as cinco vezes foram pegas pela **pasta de prova** ou pela **atribuição
> por família**, nunca por um placar verde. *Placar verde não descobre régua errada; contraditório
> descobre.*

⚠ **E uma armadilha catalogada para quem escrever a próxima guarda de fonte:**
`document.fonts.check("18px 'Indie Flower'")` devolve **`true`** com a folha de fonte **falhando** —
responde sobre a família **resolvida**. As réguas honestas são `[...document.fonts].length` e a
**largura em canvas** do mesmo texto com e sem a família.

⚠⚠ **CONTAMINAÇÃO DE AMBIENTE, DECLARADA:** o contêiner recebeu `apt install fonts-montserrat` nesta
rodada, para consertar a fidelidade dos recortes. **Montserrat passou a resolver como fonte de
sistema**, e é daí que vêm os 85 achados de portabilidade. A guarda imprime o aviso em toda execução.
*Contaminação de ambiente que não é declarada é dado sintético plausível com outro nome.*

#### As dimensões que seguem em ZERO — atualizadas

| dimensão | por que está em zero |
|---|---|
| **BT2 — seletor de LARGURA DE PÁGINA** | inalterado desde §22.13. Pendência **BT-P3** |
| **qual técnica cada `.mjs` usa para ler CSS** | inalterado desde §22.13. Pendência **IN-P2** |
| **token consumido sem declaração NO ATO DA ESCRITA** | inalterado |
| **estado de SELEÇÃO** para contraste | inalterado. **SE-P1** |
| **COLISÃO DE ESPECIFICIDADE** | inalterado. **ES-P1** |
| **defasagem de versão do gêmeo** | inalterado. **TK-P1** |
| **`scroll-behavior` nos 55 `.mjs`** | ainda não medida |
| **isenção por família DENTRO do placar** | nova: **TP-P1** |

### 22.15 DÉCIMA PRIMEIRA parte (2026-08-20/21) — três dimensões novas, e as três nasceram de coisas que um placar VERDE não é capaz de ver

> **Contexto para quem chega sem ter visto a sessão:** a frente "serra em arcos"
> é o grafismo de rodapé do DS v2. Ela nasceu, foi estudada em cinco rodadas,
> ganhou onze vereditos do decisor e **não estava em nenhum canônico** até
> 2026-08-21. O registro completo está em `validacao/MANIFESTO.md` **§103**; o
> componente, em `seed-componentes.md` **§76**. Esta seção registra apenas o que
> a rodada acrescentou ao MAPA DE COBERTURA — isto é, **dimensões que ninguém
> media**, não artefatos.

**A lição transversal da rodada, e ela é sobre a natureza dos instrumentos desta
casa:** as três dimensões abaixo têm a mesma forma. Em cada uma existia um
placar **VERDE**, matematicamente correto, e **estruturalmente incapaz** de ver o
defeito. *Placar verde não descobre régua errada — e também não descobre régua
AUSENTE.*

#### ① COBERTURA DE PROPAGAÇÃO — a dimensão que custou três instrumentos

**O que ninguém media:** se **tudo** o que uma sessão criou foi propagado.
Esta casa conferia religiosamente o MD5 de cada arquivo enviado — 17 na nona
parte, 53 na décima, 44 na décima segunda rodada, sempre **0 divergentes**. **E
essa conta é cega por construção:** ela mede a *fidelidade do que foi enviado* e
**nada** sobre o que ficou de fora. *Um placar de 52/52 é matematicamente
incapaz de ver o 53º arquivo que ninguém enviou.*

**O custo, medido:** censo por instrumento (todos os caminhos
`validacao/*.py|*.mjs` citados nos 412 arquivos de texto da pasta, extraídos por
expressão regular) → **138 instrumentos citados, 3 inexistentes**:
`guarda-grafismo.mjs` (a guarda GR1, citada por 6 arquivos),
`gen-variantes-montanha.py` (citada por 5) e `gen-serra-formatos.py`. Busca no
**índice do Google Drive**, não só na pasta sincronizada: **zero** — nunca
subiram. E o `createdTime` do índice mostra o padrão: às
**00:50:19–00:50:25Z de 2026-08-21** entraram **oito** arquivos em `validacao/`,
todos da fase FINAL daquela sessão. **Os três perdidos são da fase anterior.**
*Propagou-se o resultado e esqueceu-se o percurso.*

> **A RÉGUA NOVA — pendência `PR-P4`.** Todo fechamento de propagação passa a
> imprimir **DUAS** contas: **(1)** enviados × conferidos por MD5 e **(2)**
> **arquivos CRIADOS ou EDITADOS na sessão × arquivos enviados**, com a diferença
> **NOMEADA**. Sem a segunda, "0 ausentes" é **opinião**, não medida.
> **Aplicada já nesta rodada:** 47 criados/editados · 47 enviados · **0
> ausentes** — pela primeira vez esse "0" é medido.
> *Família: é o **42º defeito** outra vez — o ALVO estava errado, não a medição.*

**Estado hoje:** dimensão **INSTRUMENTADA À MÃO** (a conta é feita, não é
automática). Promover a script é a `PR-P4`.

#### ② VALOR DE MARCA FORA DO CANÔNICO — a dimensão que deixou uma cor inventada viver quatro rodadas

**O que ninguém media:** se um hex usado em artefato **existe** nos gêmeos de
token. Havia guarda para *literal de cor com nome disponível* (`NV2`, 484 casos)
e para *valor divergente do gêmeo* (`AC5`), mas **nenhuma para "este valor não
existe em lugar nenhum do sistema"**.

**O caso fundador:** `#0A6B60`, o plano mais distante das peças escuras da serra
e da montanha. Varredura: **0 ocorrências** em `seed-tokens.md` e
`seed-tokens.json`. Entrou "por precedente" — e **o arquivo do precedente não
existia** (dimensão ①). Viveu quatro rodadas e chegou a **peça aprovada** antes
de o decisor apontar. Veredito dele: *"eu nao autorizei e vc nao deveria ter
criado sem autorizacao algo canonico e ja decidio."*

**A medição que fechou a saída em uma:** `#0A6B60` → `#006C62` (turquesa-700):
**ΔE76 = 1,03**, abaixo do limiar de percepção humana (~2,3) · contraste entre as
duas 1,011 · no pixel da peça inteira a troca move **0,31%** dos pixels com delta
máximo de **10 em 255**. *Não havia escolha de aparência a fazer; havia um hex
fora do sistema a remover.*

> **REGRA §0-b DA CASA (nova):** valor de marca que não existe no canônico **não
> se cria** — nem "por precedente", nem "provisoriamente até o gate", nem porque a
> diferença é invisível. **Teste barato antes de qualquer "tem precedente": `ls`
> o arquivo do precedente.**
> **A GUARDA QUE FALTA, e ela é barata:** varrer os literais de cor de todo
> artefato e reprovar o que não for stop de rampa canônica nem token semântico —
> a `guarda-literal-de-cor.mjs` já percorre o CSSOM e já tem a lista de nomes;
> falta a cláusula do **valor órfão**. *Dimensão em ZERO até isso existir.*

**Estado hoje:** dimensão **NOMEADA, em ZERO**. O caso fundador está consertado
por varredura manual (14 arquivos encontrados, 12 peças limpas), não por
instrumento.

#### ③ ARTEFATO ÓRFÃO — a dimensão de "quantos artefatos não têm gerador"

**O que ninguém media:** quantos artefatos da pasta são **irreproduzíveis**. A
regra da casa manda checar `ls validacao/gen-<nome>.py` **antes de editar** — o
que responde por artefato, um a um, no momento do conserto. **Ninguém nunca
perguntou o total.**

**O caso fundador:** `render-audit/gate-z3/fechamento-largos.html`, 199.311
bytes, **sem gerador nenhum** — a string "fechamento-largos" só aparecia no
handoff. *Artefato não reproduzível é artefato não corrigível, e isso só apareceu
no dia em que a cor teve de mudar.* **Consertado escrevendo o gerador que
faltava** (`validacao/monta-folha-z3-largos.py`), não editando o HTML à mão.

> **Régua: quando o `ls` do gerador dá "não existe", a saída é ESCREVER O
> GERADOR** — editar o HTML à mão conserta o dia e mantém a dívida.
> **O censo total é uma varredura de uma linha e não foi feita:** cruzar os
> artefatos de `render-audit/` e da raiz contra os `gen-*.py`/`monta-*.py` que os
> produzem, e imprimir os órfãos. *Irmã da varredura de `scroll-behavior` e da
> `IN-P2`, que existem pelo mesmo motivo: lição escrita não é lição aplicada; o
> que aplica lição é varredura.*

**Estado hoje:** dimensão **NOMEADA, em ZERO** (um caso achado por acidente,
nenhum censo).

#### Uma dimensão que EXISTIA e ganhou caso fundador: "declarou e não aparece" na TINTA DE GRAFISMO

Medido: na capa 4:1 antiga o `#0A6B60` estava **declarado no HTML e não chegava a
NENHUM pixel** — **0 px exatos** da cor na imagem, porque a faixa de 31px deixa o
traço do plano de trás em 1,50px e o antisserra dilui a cor inteira. *A
propriedade no código não descreve a aparência da peça. Só o juiz-pixel vê isso —
e aqui ele viu um valor que existia no CSS e não existia na tela.* **Isto reforça
a regra do §4.0 do handoff mestre por um caminho novo: não é só o FUNDO que a
composição resolve; é a própria TINTA de traço fino.**

#### Uma FRONTEIRA de método que esta rodada fixou, e ela é de canon

O decisor, verbatim: *"considere que o topo segue uma regra e o rodapé outra
regra."* **Consequência para a cobertura:** regra derivada de um modelo fica
**ESCOPADA a ele**. O **toque exato** — que parecia lei da casa — é **regra do
RODAPÉ**; a montanha do topo mantém a oclusão com folga, e isso não é dívida, é
regime distinto.
> **Régua nova: veredito dado sobre UM artefato/modelo não se generaliza para
> outro sem ele dizer.** *Generalizar por conta própria teria mudado em silêncio
> uma peça aprovada — que é a forma mais cara de "conserto".*

#### As dimensões que seguem em ZERO — atualizadas nesta parte

| dimensão | por que está em zero |
|---|---|
| **BT2 — seletor de LARGURA DE PÁGINA** | inalterado desde §22.13. **BT-P3** |
| **qual técnica cada `.mjs` usa para ler CSS** | inalterado desde §22.13. **IN-P2** |
| **token consumido sem declaração NO ATO DA ESCRITA** | inalterado |
| **estado de SELEÇÃO** para contraste | inalterado. **SE-P1** |
| **COLISÃO DE ESPECIFICIDADE** | inalterado. **ES-P1** |
| **defasagem de versão do gêmeo** | inalterado. **TK-P1** |
| **`scroll-behavior` nos 55 `.mjs`** | ainda não medida |
| **isenção por família DENTRO do placar** | **TP-P1** |
| **ÁREA E FAIXA DE GRAFISMO (contrato GR1)** | ⚠ **REGREDIU A ZERO**: a guarda existia e **foi perdida na propagação**. As três cláusulas estão reconstruídas (`GR1-a` área ≤10% · `GR1-b` glifo velado 0px · `GR1-c` faixa ≤~8%), o código não. **GR-P3** |
| **valor de marca fora do canônico** | nova, dimensão ② acima |
| **artefato órfão (sem gerador)** | nova, dimensão ③ acima |
| **cobertura de propagação** | nova, dimensão ① — instrumentada **à mão**. **PR-P4** |


### 22.16 DÉCIMA SEGUNDA parte (2026-08-21) — a dimensão de grafismo sai de ZERO, e nasce a dimensão de ESTABILIDADE DO INSTRUMENTO

> **Para quem chega sem contexto:** este arquivo mede a **cobertura** do SEED
> Design System v2 — não "o sistema está bom", mas "o que o sistema é capaz de
> ver". Cada linha é uma DIMENSÃO de medição, e o estado dela é o estado do
> instrumento, não do artefato.

#### ① ÁREA E FAIXA DE GRAFISMO (contrato GR1) — de **ZERO** a **medida, com pasta de prova**

Na §22.15 esta dimensão foi registrada como **REGREDIDA A ZERO**: a guarda existia,
foi **perdida na propagação**, e as três cláusulas estavam reconstruídas no papel
mas sem código. Agora existe instrumento:

| antes (§22.15) | agora |
|---|---|
| contrato escrito, **código inexistente** | `validacao/guarda-grafismo.mjs`, **alvo de pasta sem filtro de nome** |
| nenhum placar reproduzível; "GR1 7 PASS" era histórico | **18 peças medidas** em 4 corridas + pasta de prova, com placar em JSON |
| nenhuma pasta de prova | `render-audit/prova-gr1/` — **7 fixtures geradas**, referência **10 PASS · 3 FAIL · 8 [n/a]**, uma prova por cláusula |
| nenhuma condição variada | **escala de captura 1× e 2×** — placar idêntico, porcentagens sobrevivem |

**O que a dimensão passa a ver, e não via:** área de grafismo pela **tinta** (não
pela caixa do elemento); glifo do símbolo velado com **erosão de 1px** para não
contar antisserra como núcleo; e a distinção entre faixa **PINTADA** e faixa
**DECLARADA**, que são números diferentes e agora saem os dois.

**O que ela ainda NÃO vê, declarado:** (a) traço em **milímetros** para impressão
— tudo é px de tela (**MR-P6**); (b) o regime **SERRA-CENA** por formato, que só
existe depois da emenda **MR-P4** ser aprovada; (c) legibilidade de **forma** (se
o desenho lê como serra), que não é medível por guarda e continua sendo gate
visual humano.

#### ② ESTABILIDADE DA CAPTURA DO PRÓPRIO INSTRUMENTO — dimensão NOVA, e ela vale para todas as guardas

**Nenhuma guarda desta casa media se a própria medição é repetível.** As 55+ `.mjs`
desligam animação, transição e `scroll-behavior`; nenhuma perguntava se **mexer na
página e desfazer** devolve a mesma imagem.

Medido no **47º defeito**: quatro capturas seguidas sem tocar em nada são
**byte-idênticas**, mas depois do ciclo `visibility:hidden` → `visibility:''` no
`<svg>` do símbolo oficial, **112 px dentro do glifo voltam diferentes**. O único
sinal que existia era um número **geometricamente impossível** no placar:
sobreposição de **−77 px** entre dois planos.

> **Régua nova:** toda guarda que **mexe na página** para medir tem de imprimir uma
> **prova de estabilidade** — o estado de controle renderizado duas vezes, em duas
> cargas independentes, exigindo 0 px de diferença; e alvo instável sai `[n/a]`
> nomeado. A GR1 imprime isso **por peça**.
> **Alcance da dimensão hoje: 1 de 56 instrumentos.** *E a pendência mais antiga
> aberta do projeto — a **HV-P7**, intermitência de 1 em 6 passes na
> `guarda-resposta-ponteiro` — é exatamente esta pergunta sem esta régua.*

#### ③ COBERTURA DE PROPAGAÇÃO (PR-P4) — segue instrumentada **à mão**, mas agora com formato fixo

A dimensão nasceu na §22.15 e continua sem script. **O que mudou:** o fechamento
desta parte imprime as **duas contas** no formato definitivo — (1) enviados ×
conferidos por MD5, e (2) **criados/editados na sessão × enviados**, com a
diferença **nomeada**. *Enquanto for à mão, a dimensão mede a disciplina de quem
fecha, não o sistema.*

#### Tabela consolidada das dimensões — atualização

| dimensão | estado |
|---|---|
| **ÁREA E FAIXA DE GRAFISMO (GR1)** | ✅ **medida**, com pasta de prova e condição variada. Regime SERRA-CENA pendente de **MR-P4** |
| **estabilidade da captura do instrumento** | nova, dimensão ② — **1 de 56 instrumentos** |
| **grafismo em MILÍMETROS (impressão)** | **ausente** — **MR-P6** |
| **cobertura de propagação** | à mão — **PR-P4** |
| **valor de marca fora do canônico** | §22.15, dimensão ② |
| **artefato órfão (sem gerador)** | §22.15, dimensão ③ — ⚠ 4 arquivos novos desta parte nasceram COM gerador, por regra |


### 22.17 DÉCIMA TERCEIRA parte (2026-08-21) — a dimensão de grafismo passa a medir CANON; e nasce a dimensão de INTEGRIDADE DAS SAÍDAS DO INSTRUMENTO

#### ① ÁREA E FAIXA DE GRAFISMO (GR1) — de "medida contra número fixo" para "medida contra CANON POR FORMATO"

Na §22.16 esta dimensão saiu de zero. Agora ela mudou de **natureza**, e a
diferença importa para ler qualquer placar antigo:

| antes (§22.16) | agora |
|---|---|
| GR1-c media contra **um** teto (~8%), e as 4 peças aprovadas pelo decisor reprovavam de propósito | GR1-c mede contra o **regime** e o **formato**: detalhe ≤~8%; serra-cena com o teto que ELE aprovou para aquele formato |
| o teto era um número no código | o teto é uma **tabela transcrita do canon** (v5.4 §7.4), com a citação e o veredito dele impressos em cada linha do placar |
| formato novo receberia o teto de todo mundo | formato **sem linha no canon** sai **`[n/a]` NOMEADO** — teto não se interpola (§0-b) |
| 7 fixtures | **12 fixtures**, com **prova de inércia 7 de 7** nas antigas |

**O que a dimensão passa a ver:** (a) se a peça respeita **o teto do seu próprio
formato**; (b) o **regime** em que a peça está, medido por contagem de formas de
traço e impresso; (c) a lacuna "**formato sem teto de canon**", que antes não
existia como categoria e agora é um `[n/a]` com nome — *e é uma pergunta para o
decisor, não um número a inventar*.

**O que ela ainda NÃO vê, declarado:** milímetros para impressão (**MR-P6**);
legibilidade de **forma** (gate visual humano); e o teto do **topo** em razão
diferente de 1:1, que o canon não mediu.

#### ② INTEGRIDADE DAS SAÍDAS DO INSTRUMENTO — dimensão NOVA (48º defeito)

Nenhuma régua desta casa verificava se **todas** as saídas de um instrumento
foram produzidas. Medido nesta parte: uma constante renomeada quebrou o **escritor
de JSON** da GR1 enquanto o **placar de texto saiu completo e correto**; o JSON no
disco ficou **duas horas velho** e a **folha de conferência foi montada com ele** —
e folha é o que o decisor lê. **O único sinal foi o `exit=1`.**

> **Régua:** instrumento que produz **texto + arquivo derivado** (JSON, PNG, log)
> confere-se por **exit code** e **mtime do derivado**, não pelo texto do placar. E
> quem monta folha a partir de derivado confere que o derivado é **mais novo que a
> última execução**.
> **Alcance da dimensão hoje: 1 de 56 instrumentos** (só a GR1 tem derivado
> conferido). *Irmã da dimensão de estabilidade de captura (§22.16 ②) e do 46º
> defeito (`| head` truncando geração por SIGPIPE): a família toda é "a saída
> principal parecia bem e o trabalho real não aconteceu".*

#### ③ COBERTURA DE PROPAGAÇÃO (PR-P4) — segue à mão, e ganhou um caso de teste real

O fechamento desta parte propagou **canon** (não só instrumento), e por isso a
conta 2 tem uma linha nova de natureza diferente: **arquivo promovido**
(`marca-seed.md`), cuja prova não é "foi enviado" mas "**é byte-idêntico ao que o
decisor aprovou**" — md5 igual ao da proposta. *Propagação de canon tem uma
conferência a mais que propagação de artefato.*

#### Tabela consolidada — atualização

| dimensão | estado |
|---|---|
| **ÁREA E FAIXA DE GRAFISMO (GR1)** | ✅ medida **contra canon por formato**; 12 fixtures; inércia provada. Lacuna nomeada: formato sem teto |
| **integridade das saídas do instrumento** | nova, dimensão ② — **1 de 56** |
| **estabilidade da captura do instrumento** | §22.16 ② — **1 de 56** |
| **grafismo em MILÍMETROS (impressão)** | **ausente** — **MR-P6** |
| **cobertura de propagação** | à mão — **PR-P4** (agora também para canon promovido) |


### 22.18 DÉCIMA QUARTA parte (2026-08-21) — o topo troca de EIXO, e nasce a dimensão de FECHAMENTO AUDITADO

#### ① COBERTURA DO TOPO — de "só a razão 1:1" para QUALQUER FORMATO

| antes (§22.17) | agora |
|---|---|
| topo julgado por **% da altura**, e **só na razão 1:1**; qualquer outro formato saía `[n/a]` | topo julgado por **LARGURA**: `F ≤ w / 6,5625`. **Todo formato é medível** |
| a lacuna "topo em formato não medido" era pendência **GR-P8** | **GR-P8 fechada** — deixou de ser lacuna, virou regra |
| 12 fixtures | **14**, com as duas do eixo novo |

**A lição de cobertura, e ela é generalizável:** *escopo apertado demais parece
prudência e é, na prática, **uma guarda que se recusa a medir**.* O `[n/a]` estava
tecnicamente honesto (o canon não media aquele formato) e ainda assim **reduzia a
cobertura a um único formato de peça**. **A pergunta certa não era "qual formato?"
— era "o EIXO da medição está certo?".**

#### ② FECHAMENTO AUDITADO — dimensão NOVA

Até hoje o fechamento de uma parte era conferido por **duas contas** (MD5 e
cobertura de propagação). Nasce um terceiro instrumento, e ele nasceu de um pedido
dele depois de a sessão anterior morrer no meio: *"caso tenha perdido algo, revise
para nao ficar erro para tras."*

**A auditoria mede 7 eixos:** (1) **citação órfã** — todo caminho de instrumento
citado existe? · (2) **coerência de versão** — cabeçalho × seção mais alta · (3)
**afirmação velha de canon** · (4) **placar velho apresentado como corrente** ·
(5) **higiene da cópia de trabalho** · (6) **frescor dos derivados** (o 48º
defeito, executável) · (7) **fixtures × md5 do log de geração**.

**Achados da primeira execução:** eixos 1, 2, 5, 6 e 7 limpos; **eixo 3 com 2
achados reais** e **eixo 4 com 7 sobras** — todos em documentos que eu mesmo havia
escrito **horas antes**, na mesma sessão. *É o argumento mais forte que existe para
esta dimensão: quem escreve não relê com olho de auditor, e "escrito hoje" não é
sinônimo de "correto agora" quando o canon muda no meio do dia.*

⚠ **Alcance declarado:** o eixo 1 confere contra o inventário do Drive montado
pelas listagens lidas na sessão (`validacao/`, `render-audit/` não recursivo,
`prova-gr1/`, `gate-gr1/`, raiz) — **não** é um `ls` recursivo completo.
*Auditoria com alcance declarado é medida; sem alcance, é opinião.*

#### Tabela consolidada — atualização

| dimensão | estado |
|---|---|
| **faixa de grafismo no TOPO** | ✅ medida em **qualquer formato** (eixo de largura) |
| **fechamento auditado (7 eixos)** | nova, dimensão ② — roda à mão, **1 execução** |
| **integridade das saídas do instrumento** | §22.17 ② — 1 de 56, agora coberta pelo eixo 6 da auditoria |
| **estabilidade da captura** | §22.16 ② — 1 de 56 |
| **grafismo em MILÍMETROS** | **ausente** — MR-P6 |
| **cobertura de propagação** | à mão — PR-P4 |


### 22.19 DÉCIMA QUINTA parte (2026-08-22) — nasce a dimensão de UNIDADE FÍSICA, e ela mostra que "medido em px" não é o mesmo que "medido"

#### ① TRAÇO EM UNIDADE FÍSICA (mm) — de **ausente** para **medido, sem piso de canon**

| antes | agora |
|---|---|
| dimensão **ausente** (pendência MR-P6 desde 2026-08-20) | **medida** por `validacao/mede-traco-mm.py`, nas 12 peças |
| todo número do grafismo em **px de tela** | px **e** mm/pt para as peças com alvo físico declarado |
| nenhum piso de impressão no projeto | **pisos de mercado pesquisados** (offset · digital · serigrafia, positiva e reversa) — e o piso de **canon** segue **inexistente**, esperando veredito |
| peça de tela e peça de papel medidas pela mesma régua | peça de tela sai **`[n/a]` NOMEADO** — não tem milímetro |

**O que a dimensão passa a ver, e não via:**
- que **a lei do traço em px torna o traço físico função da resolução de
  exportação** — o mesmo desenho, exportado a 600 DPI em vez de 300, imprime com
  metade da espessura;
- que uma peça **aprovada** (o verso do cartão) passa o piso digital reverso por
  **0,004 mm**;
- que uma peça **do acervo** (o verso do cartão nos 7 formatos) **reprova nos quatro
  planos**;
- que **duas peças da mesma família estão em escalas físicas diferentes** (cartão a
  299,7 DPI, pasta A4 a 105,7).

**O que ela ainda não vê:** qual processo a gráfica vai usar (por isso o placar sai
**por processo**, não como veredito único); e **não existe guarda de alvo de pasta**
para isto — virar guarda só faz sentido depois de haver piso de canon para comparar.

> ⭐ **A lição de cobertura, e ela generaliza:** **"medido" sem unidade declarada é
> meia medida.** Este projeto tinha 12 peças, 5 estudos, uma guarda de alvo de pasta
> e centenas de números — todos corretos, todos em px, e **nenhum deles respondia à
> pergunta que a gráfica faz**. *Irmã da lição do 49º defeito: número certo na
> unidade errada descreve outra coisa.*

#### Tabela consolidada — atualização

| dimensão | estado |
|---|---|
| **traço em unidade FÍSICA (mm)** | ✅ **medida**; piso de canon **inexistente**, aguardando veredito (**MR-P6**) |
| **resolução de exportação da peça impressa** | ⚠ **ausente como regra** — a pasta A4 está a 105,7 DPI (**MR-P8**) |
| **medida física da peça** | ⚠ o cartão está em 89×51 mm (padrão americano); o brasileiro é 90×50 (**MR-P9**) |
| **fechamento auditado (7 eixos)** | §22.18 ② |
| **faixa de grafismo no TOPO** | §22.18 ① |
| **cobertura de propagação** | à mão — PR-P4 |

### 22.20 DÉCIMA SEXTA parte (2026-08-22) — a dimensão de unidade física sai de MEDIDA para GOVERNADA, e as duas que ficam em zero passam a ser consequência da regra

#### ① TRAÇO EM UNIDADE FÍSICA (mm) — de **medido, sem piso de canon** para **governado por canon**

| antes (§22.19) | agora |
|---|---|
| medido em mm/pt, comparado só com **pisos de MERCADO** (offset · digital · serigrafia) | comparado também com o **piso de CANON: 0,25 mm** (`marca-seed.md` v5.6 §7.4-c) |
| o piso de canon **não existia** — esperava veredito (§0-b) | **existe, com veredito verbatim** e método declarado (**ESCALA**, não grampo) |
| a peça aprovada passava o piso digital reverso por **0,004 mm** | passa por **0,074 mm** — folga de **42%** em vez de 2% |
| escopo "só peça impressa" era **texto** | é **código**: o `ppmm` só é passado nas chamadas de cartão do `gen-z3-largos.py` |

**O que a dimensão passa a ver, e não via:** se uma peça impressa **respeita o piso
que o decisor aprovou** — antes ela só sabia dizer se a peça sobreviveria a um
processo de impressão genérico. *É a mesma virada que a dimensão de grafismo teve em
§22.17, quando a GR1-c passou de "um número fixo" para "o teto que ele aprovou para
o formato": a régua deixa de medir o mundo e passa a medir a DECISÃO.*

#### ② As duas dimensões que ficam em ZERO — e agora são consequência da regra, não lacunas soltas

| dimensão | estado | por que ela agora é obrigatória |
|---|---|---|
| **resolução de exportação da peça impressa** | **ausente como regra** — a pasta A4 está a **105,7 DPI** (**MR-P8**) | com o piso em **mm**, a conversão px↔mm depende do DPI. **Peça exportada em resolução de mock recebe o piso na resolução errada** — o número passa e a peça imprime fino |
| **guarda de alvo de pasta para o piso em mm** | **ausente** — a conferência é `mede-traco-mm.py` rodado **à mão** | enquanto for à mão, **uma peça nova nasce sem ninguém perceber**. É a mesma classe da lição do §22.12: lista escrita à mão tem a aparência de cobertura |

⚠ **Alcance declarado desta rodada:** as provas foram **pré-voo (5/5 byte-idênticos
antes de tocar o gerador)**, **inércia (L4/L5 byte-idênticas depois)** e
**reversibilidade (`TRACO_PISO_MM=0` reproduz o antes byte a byte)**, mais a leitura
do `stroke-width` no artefato renderizado. **Não** houve varredura do acervo inteiro
em busca de outras peças com alvo físico — *e é justamente essa varredura que falta
para a dimensão virar guarda.*

> ⭐ **A lição de cobertura desta parte:** **régua sem número de canon para comparar
> produz diagnóstico, não veredito.** A §22.19 tinha a medição completa e correta em
> milímetros, e ainda assim **não podia reprovar nada** — porque não havia piso
> aprovado, só pisos do mercado. *A dimensão só fecha o circuito quando existe (a) o
> número medido, (b) o número decidido e (c) alguém que compare os dois sem ser
> convidado.* Hoje esta dimensão tem (a) e (b); **o (c) é a MR-P8 e a guarda que não
> existe**.

#### Tabela consolidada — atualização

| dimensão | estado |
|---|---|
| **traço em unidade FÍSICA (mm)** | ✅ **governada por canon** (0,25 mm · v5.6 §7.4-c) — conferência **à mão** |
| **resolução de exportação da peça impressa** | ⚠ **ausente como regra** (**MR-P8**) — agora consequência do piso |
| **guarda de alvo de pasta para o piso em mm** | ⚠ **ausente** — medição sob demanda |
| **medida física da peça** | ⚠ cartão em 89×51 mm (padrão americano); brasileiro é 90×50 (**MR-P9**) |
| **snapshot local do projeto** | ⚠ **inexistente** — o `Design System v2.zip` era cópia de bootstrap do Claude chat, obsoleta desde o Cowork, e foi apagada por ele **de propósito**. A proteção hoje é o versionamento do Drive + os 4 canônicos |
| **fechamento auditado (7 eixos)** | §22.18 ② |
| **cobertura de propagação** | à mão — PR-P4 |

### 22.21 DÉCIMA SÉTIMA parte (2026-08-22) — nasce a dimensão de PROVENIÊNCIA DO VALOR, e ela estava em zero para o acervo inteiro

#### ① PROVENIÊNCIA DO VALOR — de **ausente** para **nomeada** (medida: 1 valor de centenas)

| antes | agora |
|---|---|
| nenhuma guarda pergunta **quem decidiu** um número do sistema | a pergunta existe, e a primeira resposta foi **"ninguém"** |
| a medida do cartão (**89×51 mm**) era tratada como decisão de marca | é **`3,5×2 polegadas`** — default de software americano, **sem nenhum veredito no histórico** |
| valor errado se procurava por **contradição** (dois números divergindo) | passa a se procurar por **origem** (um número que ninguém escolheu não contradiz nada — e é por isso que sobrevive) |

**Como a lacuna apareceu:** não por auditoria. **Por ele perguntar o que a opção
significava.** A §107.7 havia escrito a pendência como *"o cartão está em 89×51 mm;
o padrão brasileiro é 90×50 mm — decisão dele"*: dois números corretos e **nenhuma
consequência medida**. Ele respondeu que não podia decidir com aquilo.

> ⭐ **A lição de cobertura, e ela é sobre COMO SE ESCREVE PENDÊNCIA:** *pendência
> enunciada como "A ou B" transfere a decisão sem transferir a informação.* Uma
> pendência bem escrita traz **o custo medido de cada saída** — foi o que a §107.4
> fez com o piso em mm (três saídas, uma imagem por saída, recomendação escrita) e o
> que a §107.7 não fez com a medida da peça. *A diferença entre as duas está no mesmo
> documento, escrita pela mesma sessão, no mesmo dia.*

#### ② O que a dimensão nova enxerga, e o tamanho do que ela não enxerga ainda

**Medido:** **1** valor teve a proveniência conferida (a medida do cartão) — e deu
**herança de ferramenta**, não decisão.

⚠ **Não medido:** todos os outros. O sistema tem 8 hex canônicos, uma rampa de 10
stops por família, tetos por formato, pisos de traço, escalas tipográficas, grades,
razões (`12,7` · `6,5625` · `0,0795`) e as medidas físicas da pasta A4 — **e não
existe inventário de origem de nenhum deles.** *A razão `12,7` tem veredito (é a
proporção do post aprovado). A medida da pasta A4, ninguém sabe.*

**O que faria a dimensão virar guarda:** uma varredura que, para cada valor citado
como canônico, exigisse **uma âncora de decisão** (veredito verbatim, data, ou
número derivado de outro que já a tenha). *Enquanto isso não existe, a proveniência
é conferida uma por vez, quando alguém pergunta — que é exatamente o que aconteceu
aqui.*

#### ③ A dimensão de UNIDADE FÍSICA sobreviveu à troca de formato — e isso era uma dúvida real

| o que se temia | o que foi medido |
|---|---|
| trocar o formato quebraria o piso de 0,25 mm | **0,250 mm nos três formatos** (89×51 · 90×50 · 90×48) — o piso é aplicado por ESCALA a partir do px/mm da peça |
| a guarda aprovaria a peça nova por analogia | ela devolveu **`[n/a]` com o motivo escrito** e mandou a lacuna ao decisor (§0-b funcionando) |
| a conversão espalharia mudança pelo acervo | **acervo dos 7 formatos: 21·0·0, intacto**; peças largas: 15·0·0 |

⭐ *Escrever o piso em MILÍMETRO em vez de PIXEL — a decisão da §108 — é o que fez a
troca de formato custar uma linha de canon em vez de uma remedição inteira. **A
unidade em que uma regra é escrita determina o que ela sobrevive.***

#### Tabela consolidada — atualização

| dimensão | estado |
|---|---|
| **proveniência do valor** | ⚠ **nomeada, praticamente em zero** — 1 valor conferido, nenhum inventário |
| **medida física da peça** | ✅ **decidida e no canon** (90×50 mm · v5.7 §7.4-d) |
| **sangria e margem de segurança** | ⚠ **ausente em 100% das peças** (**MR-P10**) — e o verso é fundo cheio |
| **traço em unidade FÍSICA (mm)** | ✅ governada por canon (0,25 mm) — conferência **à mão** |
| **resolução de exportação da peça impressa** | ⚠ ausente como regra (**MR-P8**) |
| **guarda de alvo de pasta para o piso em mm** | ⚠ ausente — medição sob demanda |
| **cobertura de propagação** | à mão — PR-P4 |

### 22.22 DÉCIMA OITAVA parte (2026-08-22) — duas dimensões saem de zero, e a guarda acha na estreia um defeito que a conferência à mão não acharia

#### ① GUARDA DE ALVO DE PASTA PARA O PISO EM MM — de **ausente** para **contrato MM1**

| antes (§22.20 ② e §22.21) | agora |
|---|---|
| o piso de 0,25 mm estava no canon e nos geradores, **conferido à mão** | **contrato MM1**, guarda de alvo de pasta, com placar e exit code |
| quem era peça impressa vivia numa **tabela de nomes** dentro do instrumento de diagnóstico | vive **no próprio artefato**: `<meta name="alvo-fisico" content="90x50mm">` |
| nenhuma fixture: nunca se viu a régua reprovar de propósito | **7 fixtures**, uma cláusula por fixture, placar de referência escrito ANTES: `13 PASS · 3 FAIL · 5 [n/a]` |
| uma cláusula implícita (o piso) | **três**: piso · coerência do alvo declarado · ≥3 pesos distintos |

⭐ **A mudança de natureza está na declaração, não no placar.** Enquanto a lista de
peças impressas morava no instrumento, **acrescentar uma peça impressa nova não
acrescentava cobertura** — alguém tinha de lembrar de editar a lista. Com a
declaração no artefato, **a peça chega medida**. *É a mesma virada de "lista escrita
à mão" para "alvo de pasta" que a §22.12 catalogou como lição, aplicada agora do
lado do DADO e não do lado da varredura.*

#### ② RESOLUÇÃO DE EXPORTAÇÃO DA PEÇA IMPRESSA — de **ausente como regra** para **corrigida na peça** (MR-P8)

| | antes | agora |
|---|---|---|
| pasta A4 | 874×1240 px = **105,7 DPI**, razão errando o A4 por 0,3% | **2480×3508 px = 300,0 DPI exatos**, razão de A4 exata |
| piso de traço | **não aplicado** (a peça nem era tratada como impressa) | aplicado — traço mais fino **0,251 mm** |
| inércia | — | **6 de 7** formatos byte-idênticas |

⚠ **Mas a dimensão NÃO virou regra, e isso é declarado:** **não existe piso de
resolução no canon**, e criar um seria inventar valor de marca (§0-b). A A4 foi
corrigida **por decisão**, não por guarda. *A guarda imprime o DPI como diagnóstico e
não julga. Logo: uma peça impressa nova pode nascer a 100 DPI e MM1 dirá PASS se o
traço em mm couber. A dimensão está **coberta na peça, não no processo**.*

#### ③ O que a guarda achou na estreia — e por que isso vale mais que o placar

A primeira execução **reprovou em bloco** as 3 peças de cartão aprovadas e a A4.
⭐ *Sexta aplicação da régua "régua nova reprovando em bloco = a régua mede outra
coisa"* — e desta vez ela estava **meio certa**: um dos dois achados era da régua, o
outro era real.

| achado | de quem era | o que era |
|---|---|---|
| MM1-c reprovando peça aprovada | **da régua** | contava **formas** de traço; a serra real tem **5 formas para 4 planos** (a frente entra e sai da peça em segmentos) |
| MM1-a reprovando a A4 por 0,1% | **do gerador — real** | `round(...,2)` devolvia **0,24980 mm** onde o canon manda 0,25. **O piso estava sendo violado pelo arredondamento** |

> ⭐ **A lição de cobertura desta parte, e ela é o argumento inteiro do instrumento:**
> **conferência à mão arredonda; instrumento não.** O `mede-traco-mm.py` rodado à mão
> imprimia `0,250 mm` para a pasta A4 — três casas decimais, exatamente o piso,
> verde. O defeito estava na **quarta** casa. *Uma verificação que exibe menos
> precisão do que a regra exige não é verificação: é confirmação.*

#### Tabela consolidada — atualização

| dimensão | estado |
|---|---|
| **guarda de alvo de pasta para o piso em mm** | ✅ **contrato MM1**, com fixtures e placar de referência |
| **resolução de exportação da peça impressa** | ⚠ **corrigida na peça** (A4 a 300 DPI), **ausente como REGRA** — não há piso de resolução no canon |
| **alvo físico declarado no artefato** | ✅ nova, e é o que sustenta ① — ⚠ artefato antigo não declara e sai `[n/a]` (**MM-P1**) |
| **sangria e margem de segurança** | ⚠ **ausente em 100% das peças** (**MR-P10**), com decisão dele pendente |
| **proveniência do valor** | ⚠ §22.21 — 1 valor conferido, nenhum inventário |
| **medida física da peça** | ✅ decidida e no canon (90×50 mm) |
| **cobertura de propagação** | à mão — PR-P4 |

### 22.23 DÉCIMA NONA parte (2026-08-22) — nasce a dimensão de OBRIGAÇÃO LEGAL E NORMATIVA, e ela estava em zero no acervo inteiro

#### ① OBRIGAÇÃO LEGAL E NORMATIVA — de **inexistente como pergunta** para **nomeada**

| antes | agora |
|---|---|
| nenhuma guarda, nenhum documento e nenhum inventário pergunta **"esta peça é exigida por lei?"** | duas famílias identificadas com fundamento citado: **placa de obra** e **sinalização elétrica** |
| o inventário de peças físicas (canon §12) era o do **Manual 2018** | ⭐ **e ele não contém uma única peça específica de engenharia elétrica** — a classe regulada estava **inteira ausente** |
| cor de peça era assunto só de marca | **em sinalização de segurança a cor é NORMATIVA** (NR-26 → NBR 7195) — a marca não manda |
| conteúdo obrigatório de peça: nunca verificado | **placa de obra** tem conteúdo obrigatório (nome · título · registro CREA) e **forma livre** |

⭐ **A lição de cobertura, e ela é sobre o QUE se mede:** este projeto tem ~60 guardas
que medem **contraste, foco, colisão, área, faixa, traço, tipografia viva, barra
fixa** — todas propriedades **visuais**. **Nenhuma mede CONFORMIDADE.** *Uma peça pode
passar em todas as guardas desta casa, ser bonita, respeitar cada teto do canon — e
ser **ilegal**, por não trazer o registro do responsável técnico que a Lei 5.194/1966
exige. A dimensão que faltava não é mais fina que as outras: é de outra natureza.*

#### ② O conflito que a dimensão nova revelou no primeiro uso

| | |
|---|---|
| **amarelo da SEED** | `#FAD61D`, **acento único** da marca (canon §3.4) |
| **amarelo da NBR 7195** | **CUIDADO / ADVERTÊNCIA** |
| onde colidem | peça instalada em **subestação, sala de painéis, canteiro** — o mesmo amarelo diz "a SEED assina" e "há risco" |
| estado | ✅ **MR-P11 resolvida em 2026-08-22** (marca-seed v5.13 §17.6): amarelo de marca não entra em peça instalada em ambiente com sinalização de segurança — assinatura turquesa e branco; demais meios mantêm o acento único |

*Note que este achado **não veio de uma guarda**: veio de ler a norma que governa o
ambiente onde a peça vai morar. **Cobertura de conformidade se lê em norma, não em
pixel** — e é por isso que ela não podia ter nascido das guardas existentes.*

#### ③ SANGRIA E MARGEM — de **ausente em 100% das peças** para **medida**

| | antes | agora |
|---|---|---|
| sangria | **nenhuma peça tem**, e ninguém tinha medido se precisa | **medido: a serra toca 3 bordas** → sangria é obrigatória nesta família |
| margem de segurança | nunca medida | **4,24 mm** de conteúdo ao corte: **PASS** em 3 mm, **FAIL em 5 mm por 0,76 mm** |
| instrumento | nenhum | `validacao/mede-sangria.py` — lê o artefato, não a fórmula |
| valor de canon | inexistente | **ainda inexistente** — é valor de marca (§0-b), com folha entregue e veredito pendente |

⚠ **Alcance declarado:** a medição cobre as **peças com alvo físico declarado**
(3 cartões + pasta A4). Peça de tela sai `[n/a]`. **Dobra, vinco e lombada não estão
medidos** — a pasta A4 com aba é o primeiro caso e não existe como arquivo de produção.

#### Tabela consolidada — atualização

| dimensão | estado |
|---|---|
| **obrigação legal e normativa da peça** | ⚠ **nomeada, sem instrumento** — 2 famílias mapeadas, nenhuma guarda |
| **cor normativa × cor de marca** | ✅ resolvido (**MR-P11**, 2026-08-22, marca-seed v5.13) |
| **sangria e margem de segurança** | ✅ **medida**; valor de canon pendente (**MR-P10**) |
| **inventário de peças do sistema** | ✅ **36 peças em 5 famílias** (`inventario-pecas-ds.md`, `proposta`) — antes: 8 peças de escritório genérico |
| **peça com dobra/vinco** | ⚠ **ausente** — a pasta A4 não é arquivo de produção |
| **guarda de alvo de pasta para o piso em mm** | ✅ contrato MM1 (§22.22) |
| **cobertura de propagação** | à mão — PR-P4 |

### 22.24 VIGÉSIMA parte (2026-08-22) — a sangria nasce e fecha no mesmo dia, e com ela nasce a distinção GATE × PRODUÇÃO

#### ① SANGRIA E MARGEM — de **ausente** para **governada e conferida**, em uma rodada

| antes (§22.23) | agora |
|---|---|
| medida, com candidatos de mercado e **nenhum valor de canon** | **canon §7.4-e: 3 mm + 3 mm**, por veredito dele |
| o **método** de produzir sangria não estava escrito em lugar nenhum | **é regra**: a composição é definida para a área de corte e **não se mexe**; a sangria é **crescimento para fora** |
| conferência: nenhuma | **MM1-d** (sangria ≥ 3 mm em arquivo de produção) e **MM1-e** (conteúdo ≥ 3 mm do corte) |
| fixtures: 7 | **11** |
| arquivo de produção: não existia | **existe** — `producao/cartao-90x50/`, **15 PASS · 0 FAIL · 0 [n/a]** |

#### ② A distinção que nasceu: ARQUIVO DE GATE × ARQUIVO DE PRODUÇÃO

⭐ **Esta é a dimensão nova, e ela é conceitual antes de ser técnica.** Até hoje o
projeto tinha **um arquivo por peça** e o chamava de "a peça". Com a sangria existem
**dois**, do mesmo desenho, com tamanhos diferentes e **guardas diferentes**:

| | GATE | PRODUÇÃO |
|---|---|---|
| tamanho | área de corte | corte + 3 mm |
| medido por | **GR1** (área · véu · faixa) | **MM1-d/e** |
| razão da peça | casa com a tabela de tetos §7.4 | **não casa** — e não deve |

⚠ **A consequência de cobertura:** *um arquivo de produção guardado na pasta de gate
produz `[n/a]` na GR1 por razão fora da tabela — um defeito que não é defeito.* A
separação não é organizacional: é o que mantém as duas réguas medindo a coisa certa.
E cada arquivo **declara o próprio papel** (`<meta name="papel">`), pela mesma doutrina
da §22.22: *a informação vive no dado, não numa lista dentro do instrumento.*

#### ③ ⚠ A referência escrita ANTES estava errada — e o registro do erro é a parte útil

Previ **34·6·15**; a guarda devolveu **30·6·19**. Os dois desvios eram **meus**:
esqueci que a fixture do conteúdo-na-margem **tem sangria correta** (logo passa MM1-d),
e supus que as 6 fixtures antigas tinham bloco de conteúdo posicionado — **não têm**,
e para elas `[n/a]` é o veredito certo.

> ⭐ **A lição de cobertura, e ela é sobre disciplina de instrumento:** *a referência só
> se ajusta DEPOIS de entendida a causa de cada divergência.* Ajustar a referência
> porque "a guarda disse outra coisa" transforma a pasta de prova em decoração — é o
> oposto exato do que ela existe para fazer. **Fica impresso no gerador quais foram os
> dois erros**, para a próxima sessão não achar que sempre foi assim.

E um **defeito de instrumento** no caminho: a MM1-e reportava a **própria linha de
corte** como "o conteúdo mais perto do corte" e **passava por acidente**, escondendo a
distância real do texto. *Régua que mede a si mesma sempre passa.*

#### Tabela consolidada — atualização

| dimensão | estado |
|---|---|
| **sangria e margem de segurança** | ✅ **canon + guarda** (§7.4-e · MM1-d/e) |
| **arquivo de gate × arquivo de produção** | ✅ nova, declarada no artefato — ⚠ hoje só o **cartão** tem arquivo de produção |
| **peça com dobra / vinco / furo** | ⚠ **ausente** (**MR-P12**) — a pasta A4 com aba não existe como produção |
| **obrigação legal e normativa da peça** | ⚠ nomeada, sem instrumento (§22.23) |
| **cor normativa × cor de marca** | ✅ **MR-P11** resolvida (2026-08-22, v5.13) |
| **cobertura de propagação** | à mão — PR-P4 |

### 22.25 VIGÉSIMA PRIMEIRA parte (2026-08-22) — o inventário deixa de ser proposta, e nasce uma dimensão sobre COMO o trabalho é proposto

#### ① INVENTÁRIO DE PEÇAS — de **proposta** para **confirmado contra a operação**

| antes (§22.23) | agora |
|---|---|
| 36 peças levantadas, **nenhuma confirmada** com quem opera | **as 20 peças das famílias de papelaria e de campo são REAIS** — veredito dele |
| risco declarado: *"inventário com peça inventada é pior que inventário curto"* | **risco eliminado por confirmação**, não por inferência |
| não se sabia o que **falta** × o que **existe sem padrão** | **o layout de frota é a única a criar de zero**; as outras 19 existem e precisam ser *padronizadas* |

⚠ **Leitura declarada:** entendi *"acho que layout do carro é que está faltando"* como
*"não existe na operação"*. Se o sentido era *"faltava na sua lista"*, o efeito é o
mesmo. *Registro a ambiguidade em vez de escolher em silêncio.*

#### ② DIMENSÃO NOVA — a legibilidade da PROPOSTA, não do artefato

Ele recusou a proposta de ondas com uma frase: *"3 ondas é vago, nao da pra enteder o
que quer dizer."*

> ⭐ **A lição, e ela é irmã da §22.21 (pendência enunciada como "A ou B"):**
> *plano com nome de fase e sem definição de entregável é plano que só o autor
> entende.* Um lote de trabalho só é decidível se disser, **por peça**: o que é · o que
> ele recebe · o que eu preciso dele · de que outra peça depende. E as palavras do plano
> precisam ser **definidas antes de usadas** — "mock", "produção", "gate", "pronto"
> significam coisas diferentes para quem escreve e para quem lê.
>
> **Este projeto mede 60 dimensões do artefato e nenhuma da COMUNICAÇÃO com o
> decisor** — e é a segunda vez em duas partes que o custo aparece: primeiro a
> pendência mal-escrita (§22.21), agora o plano mal-escrito.

#### ③ Uma regra de PROCESSO que muda o que se produz: arquivo sob demanda

Perguntei sobre uma peça (a pasta A4) e ele respondeu sobre o sistema: **mock é o
padrão; arquivo de produção nasce sob demanda** (canon v5.11 §7.4-e).

⚠ **Efeito na cobertura, e é positivo:** *arquivo de produção feito antes da compra
envelhece* — a gráfica pode pedir 5 mm em vez de 3, ou faca diferente — e vira
**arquivo errado com aparência de pronto**, que é pior que arquivo nenhum porque
ninguém desconfia dele. **A regra reduz a superfície do acervo que pode apodrecer em
silêncio.**

#### Tabela consolidada — atualização

| dimensão | estado |
|---|---|
| **inventário de peças** | ✅ **confirmado contra a operação** (20 reais · 1 a criar) |
| **legibilidade da proposta ao decisor** | ⚠ **nova, sem instrumento** — 2 falhas registradas em 2 partes |
| **arquivo de produção** | ✅ **sob demanda** por regra — só o cartão tem hoje |
| **sangria e margem** | ✅ canon + guarda (§22.24) |
| **obrigação legal e normativa da peça** | ⚠ nomeada, sem instrumento (§22.23) |
| **cor normativa × cor de marca** | ✅ **MR-P11** resolvida (2026-08-22, v5.13) — a frente está sem bloqueio de decisão |
| **cobertura de propagação** | à mão — PR-P4 |
