---
fonte: 01-canonicos/seed-email.md
versao_da_fonte: v0.13
secao: 08-e
titulo: "Sub-bloco EN — newsletter e comercial (`estável` · promovido em 2026-08-08)"
sequencia: 15 de 17
bytes_do_corpo: 8219
md5_do_corpo: 6f067b3c7571f433ba212bca5088f294
gerado_por: 06-validacao/geradores/gen-camada-ia.py
nota: fatia GERADA — o corpo abaixo é byte a byte o trecho do canônico; edite o canônico, nunca esta fatia. Canônico inteiro em https://ds.seed.eng.br/01-canonicos/seed-email.md
---
## 8-E. Sub-bloco EN — newsletter e comercial (`estável` · promovido em 2026-08-08)

> Consolidado EN1–EN5 aprovado em 2026-08-08. Fatos-guia: corpus B2B converge com o
> nosso base (coluna única 600px, corpo ≥14px, botão 44px); o desenho certo para
> conteúdo que varia por envio é o layout MODULAR (pilha de blocos independentes
> rearranjáveis); e prospecção direta responde melhor a texto quase puro — HTML de
> marca funciona em newsletter, não em follow-up.

**Newsletter (EN1, EN4):** `en-newsletter.html` — 4 módulos delimitados por marcadores
`MODULO-*` no código (Destaque · Notas `{{#notas}}` · Case · Aviso); cada edição
escolhe e ORDENA módulos removendo blocos inteiros, nunca os esvaziando. Rodapé
estendido: "Gerenciar preferências" + **"Cancelar inscrição"** com `{{descadastro_url}}`
integral — a URL é gerada pela ferramenta de disparo por destinatário e não pode ter
domínio fixo no canônico.

**Comercial/follow-up (EN2, EN3):** `en-comercial.html` — texto quase puro por decisão:
sem faixa de marca, sem imagem, sem botão; saudação + 3 parágrafos + um link inline.
A marca entra pela assinatura EA colada no slot `{{assinatura_ea}}`. A copy é território
da skill `seed-ds-mensagem` (fronteira EN3). Rodapé de conformidade compacto com
endereço e descadastro.

**Trilha de disparo (EN5):** formalmente adiada, herdando a EM13 — ferramenta de
campanha e cadência são decisão do Rafael quando houver lista. Os templates são
agnósticos de ferramenta.

### Refinamentos de suíte do gate EA+EN (transparência)

A 1ª auditoria dos formatos novos produziu 8 FAILs — nenhum defeito de design, três
lacunas da suíte diante de formatos que ela nunca tinha visto:
1. **URL-placeholder:** `href="{{descadastro_url}}"` reprovava no canônico; regra
   refinada — URL contendo `{{` valida na AMOSTRA (o output real), não no template.
2. **Modo fragmento:** a assinatura foi auditada como e-mail completo e reprovou em 6
   testes de nível-documento (lang, h1, metas, preheader, grade) que não se aplicam a
   uma tabela colada nas configurações do Gmail. A suíte agora detecta fragmento
   (ausência de `<html>`) e pula esses testes com SKIP explícito.
3. **GV3 na assinatura:** este era real — os `<p>` dela não declaravam fundo, e
   assinatura também sofre inversão de dark mode. Corrigido no artefato: NADA IMPLÍCITO
   vale nela também.
Regressão pós-refinamento: base + componentes + ET = 60 PASS / 0 FAIL; fixture violador
segue reprovando (15 FAIL corretos).

---

### Gate visual do EN — defeitos 8 e 9 (2026-08-08) e correção retroativa

| # | Cliente | Defeito | Causa | Correção | Guarda |
|---|---|---|---|---|---|
| 8 | Todos (amostra da newsletter) | **Chaves órfãs vazando ao destinatário**: "{{SEED em agosto}}", "{nota}" | Erro de geração: placeholders dentro de expressões de f-string Python não sofrem a redução de chaves — o canônico saiu com 4 chaves e a substituição deixou par órfão em volta do valor. **Agravante:** a asserção anti-resíduo procurava só `{{palavra}}` e não viu valor com espaços — falsa confiança | Canônico normalizado por pós-processamento; **asserção reforçada: qualquer `{{`/`}}` residual reprova** | **GV6a** |
| 9 | Outlook 2024 | Divisores entre módulos rendendo como **faixas cinza** | `<td>` espaçador sem `background-color` — a regra NADA IMPLÍCITO cobria texto (GV3) mas não o vazio | Fundo explícito em todo spacer/divisor | **GV6b** |

> **REVISÃO DO DEFEITO 9 (mesma data, após reenvio).** A correção de fundo NÃO resolveu:
> inspeção do arquivo enviado provou o `background-color:#FFFFFF` presente em todos os
> spacers, e as faixas persistiram no Outlook — **a hipótese da causa estava errada.**
> Causa revisada, por eliminação com evidência dos gates anteriores: o construto de
> divisor em 3 linhas (spacer + border-top + spacer) é que o motor Word renderiza como
> faixas; spacers isolados e linha simples sempre renderizaram limpos. **Correção
> estrutural:** divisor vira td externo com padding vertical + linha de 1px via
> `bgcolor` (atributo nativo do Word) com `mso-line-height-rule:exactly`. O GV6b
> (fundo em spacer) permanece — é barato e coerente com NADA IMPLÍCITO — mas deixa de
> ser apontado como a correção do 9. No retrofit, o GV2 reprovou o td novo do divisor
> (padding sem align) na primeira auditoria — corrigido; os guardas policiando o
> próprio conserto é o sistema operando como desenhado.

**Latência retroativa medida e corrigida:** o GV6 varreu o acervo e reprovou os spacers
de TODOS os templates promovidos (base, componentes, os 3 ET + amostras) — o defeito
sempre existiu, só ficou visível nos divisores maiores da newsletter. Correção em lote
com versão nova: **base v0.4 · componentes v0.3 · ET v0.2 (todos)**. Diferença exclusiva:
fundo nos spacers. Regressão pós-correção: **284 PASS / 0 FAIL nos 14 arquivos do acervo.**

### Ciclo final do gate EA+EN — defeitos 10 e 11, veredito final do 9, e a promoção

**Veredito final do defeito 9 (terceira e última revisão, com crédito ao Rafael):** os
prints em três zooms diferentes do Outlook provaram que **qualquer linha-espaçadora com
`&nbsp;` fantasmagoriza como faixa cinza em zoom ≠100% no motor Word** — inclusive
spacers de 8px com fundo branco declarado. Regra canônica resultante: **espaçamento
vertical em e-mail é padding e margin; o divisor é td com padding + linha de 1px via
`bgcolor` + `mso-line-height-rule:exactly`.** A newsletter v3.1+ tem zero row-spacers.
Nota de transparência: houve uma reclassificação prematura minha ("artefato benigno de
zoom") entre a 2ª e a 3ª evidência — derrubada pelo print seguinte do Rafael e registrada.

| # | Defeito | Causa | Correção | Guarda |
|---|---|---|---|---|
| 10 | "@@" no texto e botão flutuando dentro do parágrafo (Outlook) | **Erro de ferramenta do produtor:** uma linha "no-op" num script de edição avaliava para `replace("</p>","@@")` e destruiu todos os fechamentos de parágrafo; a suíte passou 42/42 porque nada verificava balanceamento | 9 `</p>` restaurados pela inversa exata; balanceamento conferido | **GV7** (tags p/h1/h2/ul/table balanceadas + sentinela residual) |
| 11 | Logo da assinatura quebrado nos e-mails (anônima ok, Content-Type ok) | **Artefato composto desatualizado:** o EA3-b trocou o logo para o vertical, mas o comercial — que EMBUTE a assinatura — não foi regenerado e saiu pedindo o PNG aposentado, inexistente no bucket | Comercial regenerado com asserção dupla (URL vertical presente, aposentada ausente); regra: peça que embute outra regenera junto | **GV8** (lista viva de assets aposentados; referência reprova) |

**Decisão do Rafael — row-spacers do acervo (2026-08-08, "aprovo b"):** TOLERÂNCIA
MONITORADA. Os templates promovidos (base v0.4, componentes v0.3, ET v0.2) mantêm o
construto antigo — passaram nos gates reais, o fantasma é cosmético e dependente de
zoom, e a régua do projeto veta editar canônico promovido sem motivo funcional (mudaria
8 MD5 ancorados por estética condicional). A regra "espaçamento por padding" vale para
TODO template novo; o retrofit de um template existente acontece quando ele for editado
por outro motivo. *Alternativa descartada:* retrofit completo imediato (uniformidade
técnica ao custo de re-gate de 8 arquivos sem defeito funcional).

### Promoção final — EA + EN (fecha a produção da Fase 4)

**2026-08-08 — Rafael aprovou** ("aprovo b"). Evidências do gate combinado: newsletter
v3.2 limpa no Outlook em 100% e 120% (defeitos 9 e 10 mortos com prova) · comercial v2
aprovado na percepção ("e-mail de pessoa") com o logo vertical carregando · assinatura
**instalada no Gmail real do diretor**, renderizando na janela de composição com dados
reais e os três links ativos.

**Balanço da fase: 11 defeitos reais encontrados pelo gate humano, 11 corrigidos, 8
famílias de guarda permanentes (GV1–GV8). Nenhum dos 11 era visível às verificações
automatizadas antes do olho do Rafael.** Com EA e EN, os 6 sub-blocos da F4 (EM · EL ·
EC · ET · EN · EA) estão `estável`.

