# Mechanical Quality Gate Report

Patterns loaded: 209 (BANNED 102, CAP 8, WATCH 99)

Allowlist format: `relative/path.md|pattern-id|line`. Every allowlisted hit must be defended on the chapter card or in style_and_voice.md (dialogue hits may instead cite the speaking character's voice card).

| file | line | pattern | tier | status | evidence |
|---|---:|---|---|---|---|
| `output/drafts/claude/chapter_20.round_01.md` | 0 | reddit1-repeated-descriptor | WATCH | WATCH | 9 occurrence(s); first: scene 1: against x3 |
| `output/drafts/claude/chapter_20.round_01.md` | 1 | wp-aititlecase-headings | WATCH | WATCH | 1 occurrence(s); first: # Chapter Twenty: No Advice / Keys Here |
| `output/drafts/claude/chapter_20.round_01.md` | 3 | watch-qs-from-x-to-y | WATCH | WATCH | 2 occurrence(s); first: from the sink to the table |
| `output/drafts/claude/chapter_20.round_01.md` | 19 | ruleset-markdown-bold-in-prose | BANNED | OPEN | **Sam Rivera:** |
| `output/drafts/claude/chapter_20.round_01.md` | 19 | wp-aibold-density | WATCH | WATCH | 1 occurrence(s); first: **Sam Rivera:** |
| `output/drafts/claude/chapter_20.round_01.md` | 19 | wp-ailist-inline-header-list | WATCH | WATCH | 1 occurrence(s); first: **Sam Rivera:** Mara wants her dish back before Luis refills it. We're running errands your direction this morning. 10:3 |
| `output/drafts/claude/chapter_20.round_01.md` | 31 | watch-qs-trailing-participle | WATCH | WATCH | 2 occurrence(s); first: , lifting |
| `output/drafts/claude/chapter_20.round_01.md` | 33 | reddit2-emdash-dialogue-good | WATCH | WATCH | 12 occurrence(s); first: — |
| `output/drafts/claude/chapter_20.round_01.md` | 39 | ruleset-three-part-cadence | WATCH | WATCH | 1 occurrence(s); first: time, knees, and carried |
| `output/drafts/claude/chapter_20.round_01.md` | 41 | watch-rt2-emdash-comma-list | WATCH | WATCH | 1 occurrence(s); first: — the receipt, the notebook, the phone, all of it squared up like evidence — |
| `output/drafts/claude/chapter_20.round_01.md` | 85 | aiisms-2.25-transition-verbs | WATCH | WATCH | 1 occurrence(s); first: shifted |
| `output/drafts/claude/chapter_20.round_01.md` | 89 | watch-qs-and-but-start | WATCH | WATCH | 2 occurrence(s); first: And |
| `output/drafts/claude/chapter_20.round_01.md` | 103 | banned-1.10-echo-line-poetics | BANNED | OPEN | She was not staying for anyone. She was |
| `output/drafts/claude/chapter_20.round_01.md` | 129 | legacy-uncontracted-casual-dialogue | WATCH | WATCH | 1 occurrence(s); first: It is |
| `output/drafts/claude/chapter_20.round_01.md` | 153 | wp-aivocab-cluster | WATCH | WATCH | 1 occurrence(s); first: key |
| `output/drafts/claude/chapter_20.round_01.md` | 155 | watch-rt2-emdash-participial-absolute | WATCH | WATCH | 1 occurrence(s); first: — printed |
| `output/drafts/claude/chapter_20.round_01.md` | 163 | tells-2.1-hands-body-watch | WATCH | WATCH | 1 occurrence(s); first: hand |

Open findings: 2
Allowlisted: 0
WATCH hits (non-blocking, feed the judgment audits and tics tracker): 37
