Eight email templates for the cluster's waitlists, rendered from their committed source with the example data the confirmation sends use, and shown here as the markup that ships — not as pictures of it. Each was drawn in three browser engines at two widths, every CSS property it uses was checked against caniemail's dataset, and every line was measured against the transport's 998-octet limit.
What this sheet is honest about: no paid render farm was used. Read plate 03 before trusting plate 02.
Each frame is the rendered letter itself, inlined, live and scrollable — the same bytes the audit measured. Five are drawn per product on its own design system, each attached to its own listmonk template and sent and confirmed end-to-end against a real inbox; three are the generic defaults every product starts on.
FRAMES LOAD THEIR OWN WEB FONTS AND REMOTE IMAGES FROM THIS PAGE, WHICH IS MORE THAN MOST MAIL CLIENTS ALLOW — EXCEPT PERSONAL, GENERIC OPT-IN, WELCOME AND NEWSPAPER — CAMPAIGN, WHICH REQUEST NOTHING. THE ALTINERIS READERS PLATE IS THE ONE REMOTE IMAGE ON THE SHEET — SEE FINDING 02. THE DIMENSIONS BELOW EACH FRAME ARE THE ENGINES' SCROLL HEIGHTS, NOT THIS PAGE'S.
Three checks were run, each a real measurement. What they cannot see is stated at the same size as what they can.
Blink, WebKit and Gecko, driven by Playwright: the engines under Gmail's web and Android clients, under Apple Mail and every browser on iOS, and under Thunderbird. Each letter at 640 and at 375, full-page, with scroll height, horizontal overflow, image count and page errors recorded. 48 renders; 0 page errors; 0 with overflow after the fix in finding 01.
The dataset at api/data.json, last updated 2026-09-16. Every CSS property and HTML feature each letter uses was looked up against Gmail, Outlook, Apple Mail and Yahoo on the platforms we actually send to — fifteen client-platform pairs. The matrix on plate 05 is that lookup, not an opinion.
The transport's line limit. A real send on 22.09.26 exceeded it and the letter arrived corrupted. Every rendered line was measured in octets; the longest now is 884, in the altineris letter, and none of the eight crosses the limit.
Litmus and Email on Acid photograph the actual clients. Neither was used, so there are no real Gmail or Outlook screenshots on this sheet. An engine render plus a support matrix is a strong proxy: it catches the structural faults — overflow, broken images, lines the transport will fold — and it names every property a client will drop.
It does not catch what Outlook on Windows will do once its Word rendering engine gets the markup, and it does not see the dark-mode transforms Gmail and Outlook apply on their own. Those remain unverified here, and the last check — one real send, read by a person in a real inbox — is what stands in for them.
Four things the checks turned up, re-verified on 23.09.26 against the letters as merged. One of them is the reason this sheet exists.
optin.html, welcome.html and newspaper.html — the generic three, the templates every product starts on — each set .wrap { width: 100%; padding: 32px 16px } with no box-sizing. Content-box is the default, so the block was the whole viewport plus its padding: exactly 32 px of horizontal overflow at 640, at 375 and at 320, in Blink, WebKit and Gecko alike.
The web-developer reflex is box-sizing: border-box. caniemail says that property is unsupported in Outlook on Windows, in all of Yahoo, and in Gmail's mobile webmail. The obvious fix would have looked right in all three engines here and failed silently in the clients that matter most.
The fix that went in drops width: 100%. A block fills its container by default, and every client agrees on that. Re-rendered: 0 px of overflow in all 48. This is the study's point — an email-specific constraint making the web reflex the wrong answer, and the engine render alone would not have said so.
SUPPORT VERDICTS FROM CANIEMAIL, 2026-09-16. THE DRAWING IS TO THE CSS, NOT TO SCALE.
The Altineris letter carries one remote image, the 560 × 96 animated plate of the Readers, now at the foot of the letter. Revision A of this sheet rendered it broken in all six of its renders and left the item open. The cause was the audit's own example data, which named assets.devclusterai.com — a host that does not resolve. A bad test fixture, not a missing upload. The template reads {{ .Tx.Data.meta.plate_url }} from the product's meta column, and that column was right all along.
Checked again on 23.09.26, from this sheet's build: mail.devclusterai.com/altineris/readers.gif, the R2 bucket the repository documents, answers 200 with a 10,382-byte GIF of 8 frames; the live product row's plate_url, read from D1, is that same address; and the fixture now names it too. Re-rendered: 0 broken images in 48. With images blocked the letter still reads — the wordmark, the headline and the orbit scene are table cells, and only the Readers are a picture.
THE PLATE URL, ITS STATUS, SIZE AND FRAME COUNT, AND THE LIVE ROW ARE READ AT BUILD TIME; NONE OF THEM IS TYPED.
font-stretch is unsupported in Gmail on Android, Outlook on Windows and Android, and all of Yahoo. It appears once across the eight letters: on the DevClusterAI headline — the river take, chosen over two earlier ones and since named plainly optin-devclusterai.html — as font-stretch: 112% beside font-variation-settings: 'wdth' 112 and a Google Fonts link for Archivo at that width. 112 is an extended width, not a condensed one.
Where the <link> survives and the web font loads — Apple Mail, Outlook for Mac — Archivo arrives as a single wdth-112 face and there is nothing for font-stretch to choose between. Where the link is dropped — Gmail, Yahoo, Outlook.com and Outlook on iOS and Android, per the same dataset — Archivo never loads and the headline sets in the fallback stack: 'Arial Narrow', 'Roboto Condensed', Helvetica.
So the failure runs the other way from the one feared. The headline does not fail to condense; it condenses where it was drawn wide. The thing to reconsider is the fallback stack, not the property.
font-family: 'Archivo', 'Arial Narrow', 'Roboto Condensed', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-stretch: 112%; font-weight: 620; font-variation-settings: 'wdth' 112, 'wght' 620; font-size: 42px;
VERDICTS FOR <LINK>, @FONT-FACE AND FONT-STRETCH FROM CANIEMAIL, 2026-09-16.
RFC 5321 gives a line of text at most 998 octets. On 22.09.26 a real send crossed that and the transport folded the line, which corrupted the letter in transit. The template source has since been wrapped (scripts/wrap-lines.py), and the audit measures the rendered output rather than the source, because the data can lengthen a line. Longest rendered line: 884 octets, in the altineris letter. Violations: none.
LIMIT 998. GENERIC LETTERS ARE SHORT BECAUSE THEY CARRY NO DRAWING.
Every feature used by at least one letter that at least one client we send to does not support. The verdict shown is the worst across that client's platforms; the count says how many of them. The last column names the letters that use it.
| FEATURE | GMAIL | OUTLOOK | APPLE MAIL | YAHOO | USED BY |
|---|---|---|---|---|---|
color-scheme | NO · 4/4 | NO · 5/6 | YES | NO · 3/3 | 06 07 08 |
font-stretch | NO · 1/4 | NO · 2/6 | YES | NO · 3/3 | 02 |
overflow-wrap | NO · 3/4 | NO · 5/6 | PART · 2/2 | NO · 3/3 | 01 |
text-underline-offset | NO · 4/4 | NO · 6/6 | YES | NO · 3/3 | 01 02 |
background-size | NO · 1/4 | NO · 2/6 | YES | YES | 01 |
text-decoration-color | NO · 1/4 | NO · 2/6 | YES | YES | 05 |
word-break | PART · 3/4 | NO · 1/6 | PART · 2/2 | NO · 3/3 | 01 02 03 04 05 06 07 |
background-image | YES | NO · 2/6 | YES | PART · 3/3 | 01 |
background-position | YES | NO · 2/6 | YES | YES | 01 |
border-radius | YES | NO · 2/6 | YES | PART · 3/3 | 01 04 06 07 |
border-spacing | YES | NO · 3/6 | YES | YES | 01 |
float | PART · 2/4 | NO · 2/6 | YES | PART · 3/3 | 08 |
height | YES | PART · 1/6 | YES | NO · 3/3 | 01 02 03 04 05 06 07 08 |
max-height | YES | NO · 2/6 | YES | YES | 01 02 03 04 05 |
min-width | YES | NO · 2/6 | YES | YES | 05 06 07 |
outline | YES | NO · 2/6 | YES | YES | 03 |
overflow | PART · 4/4 | NO · 2/6 | PART · 2/2 | PART · 3/3 | 01 02 03 04 05 06 07 |
table-layout | YES | NO · 2/6 | YES | YES | 01 |
text-decoration-style | YES | NO · 2/6 | YES | YES | 05 |
white-space | PART · 2/4 | NO · 2/6 | YES | PART · 2/3 | 01 02 03 04 05 |
word-wrap | PART · 2/4 | NO · 3/6 | YES | YES | 05 |
READ ACROSS: color-scheme — THE GENERIC THREE'S DARK-MODE HANDLING — IS HONOURED ONLY BY APPLE MAIL; GMAIL, OUTLOOK AND YAHOO APPLY THEIR OWN TRANSFORMS INSTEAD. border-radius, background-image AND background-size FALL AWAY IN OUTLOOK ON WINDOWS, WHICH IS WHY THE DESIGNED LETTERS DRAW IN TABLE CELLS. height IS DROPPED BY YAHOO EVERYWHERE.
| FEATURE | GMAIL | OUTLOOK | APPLE MAIL | YAHOO | USED BY |
|---|---|---|---|---|---|
background | YES | PART · 2/6 | YES | PART · 3/3 | 01 02 03 04 05 06 07 08 |
border | YES | PART · 2/6 | YES | YES | 01 02 03 04 08 |
display | PART · 2/4 | PART · 2/6 | YES | PART · 3/3 | 01 02 03 04 05 06 07 |
font-size | YES | PART · 2/6 | YES | PART · 3/3 | 01 02 03 04 05 06 07 08 |
font-weight | YES | PART · 2/6 | YES | PART · 3/3 | 01 02 03 04 06 07 08 |
letter-spacing | YES | PART · 2/6 | YES | YES | 01 02 03 04 06 07 08 |
line-height | YES | PART · 2/6 | YES | YES | 01 02 03 04 05 06 07 08 |
list-style | PART · 4/4 | PART · 2/6 | YES | PART · 3/3 | 06 07 |
margin | PART · 4/4 | PART · 5/6 | YES | PART · 3/3 | 01 02 03 04 05 06 07 08 |
max-width | YES | PART · 2/6 | PART · 1/2 | YES | 01 02 03 04 05 06 07 08 |
padding | YES | PART · 2/6 | YES | YES | 01 02 03 04 05 06 07 08 |
text-align | PART · 2/4 | PART · 3/6 | YES | PART · 3/3 | 01 03 04 |
text-decoration | PART · 2/4 | PART · 2/6 | YES | YES | 01 02 03 04 05 06 07 08 |
text-transform | YES | PART · 2/6 | YES | YES | 01 02 03 04 06 07 08 |
width | YES | PART · 1/6 | YES | YES | 01 02 03 04 05 |
PARTIAL MEANS CANIEMAIL RECORDS A CAVEAT — A VALUE IGNORED, A UNIT REJECTED, A CONTEXT WHERE IT DOES NOT APPLY. NONE OF THESE IS A STRUCTURAL FAULT; ALL OF THEM ARE WHY THE APPROVAL INBOX IS STILL THE LAST CHECK.
All 48 renders on one table: scroll height in pixels per engine at 640 and 375, then the faults counted across the six. Heights differ between engines by a few pixels where the fonts fall back differently; that is normal, and the numbers are shown so the differences are visible rather than smoothed.
| LETTER | BLINK 640 | BLINK 375 | WEBKIT 640 | WEBKIT 375 | GECKO 640 | GECKO 375 | OVERFLOW | BROKEN IMG | ERRORS |
|---|---|---|---|---|---|---|---|---|---|
| I AUTO-E2E | 1430 | 1791 | 1431 | 1792 | 1410 | 1792 | 0 | 0 | 0 |
| II DEVCLUSTERAI | 1143 | 1279 | 1143 | 1278 | 1137 | 1273 | 0 | 0 | 0 |
| III ALTINERIS | 1028 | 1129 | 1028 | 1129 | 1029 | 1129 | 0 | 0 | 0 |
| IV RESEARCH STACK | 1040 | 1502 | 1040 | 1502 | 1040 | 1502 | 0 | 0 | 0 |
| V PERSONAL | 900 | 900 | 900 | 900 | 900 | 900 | 0 | 0 | 0 |
| VI GENERIC OPT-IN | 900 | 900 | 900 | 900 | 900 | 900 | 0 | 0 | 0 |
| VII WELCOME | 900 | 900 | 900 | 900 | 900 | 900 | 0 | 0 | 0 |
| VIII NEWSPAPER — CAMPAIGN | 900 | 900 | 900 | 900 | 900 | 900 | 0 | 0 | 0 |
A HEIGHT OF 900 IS THE VIEWPORT: A LETTER SHORTER THAN THE WINDOW READS 900. THE THREE ENGINES NOW AGREE ON EVERY LETTER WITHIN 21 PX; THE WIDEST SPREAD IS AUTO-E2E AT 640. IN REVISION A WEBKIT DREW ALTINERIS 464 PX TALLER THAN THE OTHER TWO, BECAUSE IT RENDERS A DEAD IMAGE AS A FULL-WIDTH PLACEHOLDER BOX WHERE BLINK AND GECKO COLLAPSE IT TO ITS ALT TEXT — A SCREEN OF EMPTY SKY, WHICH IS WHAT A DEAD PLATE URL WOULD LOOK LIKE IN APPLE MAIL. THE PLATE WAS NEVER DEAD; THE FIXTURE WAS. SEE FINDING 02.