7. Régua de validação executada
A camada de validação da Fase 3 (445 testes jsdom + 43 verificações de render em Chrome headless) não se aplica a esta fase, e o motivo é estrutural: jsdom valida comportamento de DOM interativo, que o e-mail não tem; e o Chrome headless é o cliente de e-mail mais permissivo que existe — passar nele não prova nada sobre o Outlook.
| Camada | Artefato | O que mede |
|---|---|---|
| Estática | suite-email.mjs |
Reprova var(--, <svg>, flex/grid/position, tabela de layout sem role="presentation", <img> sem alt ou com alt ausente, <img> sem dimensão em px, <html> sem lang, ausência de preheader / color-scheme / supported-color-schemes, link sem href absoluto, fundo transparente em bloco de marca |
| Peso | mesma suíte | HTML < 80 KB (EM6) + inventário de imagens |
| Contraste | contraste-email.py |
Todos os pares resolvidos, com as três categorias de piso |
| Render | extensão da suíte de render existente | 600px e 320px · com e sem imagens · dark emulado · prova grayscale |
| Gate humano | protocolo de envio real | A única camada que vê o motor Word |
7.1 Matriz do gate humano#
| Cliente | Papel no diagnóstico |
|---|---|
| Outlook 2024 clássico (Windows) | Motor do Word. É onde tudo quebra — e é o cliente dos destinatários B2B da SEED (concessionária, indústria, órgão público, licitação) |
| Gmail app Android | Inversão forçada de dark mode |
| Gmail web | Proxy de imagem, tratamento de <style>, fallback de fonte |
| Outlook.com web | Regime intermediário: injeta estilos próprios com !important |
| Apple Mail iOS | Controle — o mais permissivo. Se quebra aqui, o defeito é nosso |
Inversão de equilíbrio a assumir de frente: esta é a primeira fase do projeto em que o gate humano é mais determinante que a camada automatizada. Nenhuma ferramenta disponível emula o motor Word.
Cuidado de identificação: existem dois programas chamados Outlook no Windows, e apenas o clássico serve. O "novo Outlook" usa motor de navegador e renderiza bem demais para servir de pior caso.
7.2 Ciclo de gate executado (2026-08-07 → 2026-08-08) — registro completo#
O template-base atravessou três rodadas de gate visual humano. Cinco defeitos reais foram encontrados — nenhum deles visível pelas 19 verificações automatizadas. Todos corrigidos e convertidos em teste-guarda permanente, com crédito ao gate do Rafael, conforme a regra do projeto.
| # | Cliente | Defeito encontrado | Causa | Correção | Guarda |
|---|---|---|---|---|---|
| 1 | Gmail app Android (dark forçado) | Emenda de dois tons ao redor do logo | O cliente inverte a cor CSS do <td> mas não inverte imagem; a placa do PNG divergiu do fundo |
Faixa de marca virou imagem única de borda a borda (cabecalho-seed-600@2x.png) |
GV1 |
| 2 | Gmail app Android | Corpo inteiro centralizado | O align="center" do canvas externo vaza por herança (o web ignora; o app obedece) |
align + text-align explícitos em todo <td> de conteúdo |
GV2 |
| 3 | Gmail app Android | Blocos escuros irregulares atrás do texto | Elemento sem background-color declarado recebe tratamento diferente do vizinho na inversão |
background-color explícito em todo h1/p |
GV3 |
| 4 | Gmail app Android | Título transbordando a caixa | Auto-scaling de fonte do cliente. Registrado como hipótese na v0.2; promovido a fato quando o reenvio confirmou a correção | -webkit-text-size-adjust:100% no body |
coberto pela revalidação |
| 5 | Outlook 2024 clássico (motor Word) | Divisor ao lado do botão VML, não abaixo | O motor Word ignora margin em <table> |
Espaçamento vertical virou linha espaçadora com height |
GV4 |
Regra unificada nascida dos defeitos 1–3: os três tinham a mesma causa — o Gmail inverte o que é CSS implícito e não toca em imagem nem no que é explícito. A régua permanente é NADA IMPLÍCITO: toda cor, alinhamento e fundo declarados; faixa de marca é imagem única; espaçamento entre blocos é linha espaçadora, nunca margin de tabela.
Regra de protocolo nascida do processo: print de e-mail encaminhado não vale como
evidência de gate — o encaminhamento do Gmail descarta o <head> (metas de tema, media
queries) e os comentários condicionais (VML), produzindo defeitos que não são do template.
O gate exige recebimento direto na caixa do cliente testado. Aconteceu duas vezes no
ciclo antes de virar regra.
Matriz efetivamente coberta: Gmail web ✅ · Gmail app Android com inversão forçada ✅ · Outlook 2024 clássico ✅ (VML do botão confirmado renderizando). Pendentes sem bloquear: Outlook.com web e Apple Mail iOS — riscos residuais baixos, cobertos na primeira oportunidade.
Diferença v0.2 → v0.3: apenas o divisor (defeito 5). Promovida sem reenvio aos clientes já aprovados, por ser correção de padrão documentado do motor Word com risco classificado como mínimo — decisão consciente, não omissão.
7.3 Promoção#
2026-08-08 — Rafael aprovou ("aprovo") a promoção a estável de: o template-base
seed-email-base.html v0.3 (MD5 4fed56e13ae5c90e43ab706be9e32eb6), as réguas GV1–GV4
como teste-guarda permanente, e o protocolo de gate sem encaminhamento. A suíte
suite-email.mjs acompanha com 19 verificações (MD5 a936c3f73ea7cf647386db5c0eed7b63).