# Mistakes Log — [YOUR NEWSLETTER NAME]

Every documented failure pattern, with the auditor check that prevents recurrence.

**This file is pre-seeded with universal mistakes.** Keep them. Add your own as you ship.
The auditor runs a regression check against this log on every issue. These mistakes never ship twice.

---

## How to add an entry

When a mistake is discovered (in audit, in preview, or after send):
1. Add an entry with the next MISTAKE-NNN number
2. Describe what went wrong and where
3. Define the check that prevents recurrence
4. The auditor enforces it on all future issues

---

## MISTAKE-001 — Em dash in copy

**What happened:** Em dash used in body copy.
**Impact:** AI-detector tell. Signals AI-generated text to sophisticated readers. Kills credibility.
**Check:** Auditor scans for U+2014 in all text fields. Hook blocks on newsletter issue files.
**Status:** Hook-blocked.

---

## MISTAKE-002 — Subject line over 50 characters

**What happened:** Subject line exceeded 50-character limit.
**Impact:** Truncated in Gmail on mobile (shows ~45-50 chars). Loses the verb or the payoff.
**Check:** Auditor checks `len(subject) <= 50` in frontmatter.
**Status:** Auditor-checked.

---

## MISTAKE-003 — Placeholder text in shipped code block

**What happened:** Code block contained `YOUR_VALUE_HERE` or `<placeholder>`.
**Impact:** Reader can't run the code. Breaks the "testable in 60 seconds" promise.
**Check:** Auditor scans for `YOUR_VALUE`, `<placeholder>`, `...` inside `<pre><code>` blocks.
**Status:** Auditor-checked.

---

## MISTAKE-004 — Banned filler phrase in copy

**What happened:** "Simply", "Just", "Obviously", or similar filler in body copy.
**Impact:** Sounds AI-generated. Condescending to the floor reader.
**Check:** Auditor + jargon hook scan for banned phrases from VOICE.md.
**Status:** Hook-blocked.

---

## MISTAKE-005 — Low-contrast text colour

**What happened:** Grey text that fails WCAG AA (4.5:1) used for body copy.
**Impact:** Unreadable in light mode for some subscribers. Fails accessibility.
**Check:** Contrast hook blocks known low-contrast hex values on newsletter files.
**Status:** Hook-blocked. Approved greys: #4a4a5a (~8.4:1), #6a6a7a (~5.7:1).

---

## MISTAKE-006 — Flexbox layout in HTML

**What happened:** `display:flex` used in email template.
**Impact:** Breaks in Outlook. Layout collapses.
**Check:** Auditor and stylist scan for `display:flex` and `display:grid` in rendered HTML.
**Status:** Auditor-checked.

---

## MISTAKE-007 — Raw non-ASCII characters in HTML

**What happened:** Literal `↓`, `·`, `→`, or `—` pasted into rendered HTML (not HTML entities).
**Impact:** Beehiiv re-decodes UTF-8 as Latin-1 during paste, producing mojibake.
**Check:** Auditor scans for non-ASCII chars in rendered HTML. Use entities: `&darr;`, `&middot;`, `&rarr;`, `&mdash;`.
**Status:** Auditor-checked.

---

## MISTAKE-008 — `<style>` block in HTML

**What happened:** CSS styles in a `<style>` block instead of inline.
**Impact:** Beehiiv strips `<style>` blocks on paste. All class-based styles disappear.
**Check:** Auditor scans for `<style>` tags in rendered HTML.
**Status:** Auditor-checked.

---

## MISTAKE-009 — Broken link in issue

**What happened:** External link in READ_THIS_WEEK or DEEP_DIVE returned 404.
**Impact:** Subscriber clicks, gets a 404. Erodes trust.
**Check:** Auditor verifies each link via HTTP HEAD request before ship.
**Status:** Auditor-checked.

---

## MISTAKE-010 — Total HTML over 102KB

**What happened:** Rendered HTML exceeded Gmail's clip threshold.
**Impact:** Gmail showed `[Message clipped]`. Subscribers who didn't click "View entire message" missed the bottom half of the email.
**Check:** Stylist checks `wc -c NNN-rendered.html` < 102400 bytes.
**Status:** Stylist-checked.

---

## MISTAKE-011 — TLDR does not summarise the issue

**What happened:** TLDR described the process ("in this issue we cover...") instead of the takeaway.
**Impact:** Skim-readers got no value from the TLDR. Bounce without reading further.
**Check:** Auditor checks TLDR contains 3 concrete bullets, each with a specific claim or instruction.
**Status:** Auditor-checked.

---

## MISTAKE-012 — PRO_TIP repeats TIP_BODY content

**What happened:** Pro tip section restated what was already in the main tip.
**Impact:** Ceiling readers felt the issue was padded. Churned.
**Check:** Auditor checks PRO_TIP introduces a concept not in TIP_BODY.
**Status:** Auditor-checked.

---

## MISTAKE-013 — NEXT_TEASE is vague

**What happened:** NEXT_TEASE said "next week: something exciting about Claude Code" without specifics.
**Impact:** No curiosity created. No reason to look forward to next issue.
**Check:** Auditor checks NEXT_TEASE names the specific technique or topic.
**Status:** Auditor-checked.

---

## MISTAKE-014 — God-tier prompt not tested on 3 codebases

**What happened:** God-tier prompt shipped without passing the 3-codebase test harness.
**Impact:** Prompt produced mediocre output on subscriber codebases. Eroded trust in the prompt quality guarantee.
**Check:** Prompt-architect must log 3 test passes before embedding in issue.
**Status:** Process-checked (prompt-architect agent enforces).

---

## MISTAKE-015 — Paragraph collapse in rendered HTML

**What happened:** Two consecutive `\n\n` inside a `<p>` tag. Renders as one wall-of-text paragraph in Gmail.
**Impact:** Two-beat hook rhythm was lost. Reader saw one wall of text.
**Check:** Paragraph-collapse hook blocks writes to `-rendered.html` with this pattern. Fix: use `<br><br>` or split into two `<p>` tags.
**Status:** Hook-blocked.

---

## Add your own entries below

Format:
```
## MISTAKE-NNN — [short description]

**What happened:** [what failed and where]
**Impact:** [what the subscriber experienced]
**Check:** [what the auditor or hook now checks to prevent recurrence]
**Status:** [Auditor-checked | Hook-blocked | Process-checked]
```
