Speak Outer
Anything a person reads is the outer register. The switch is total.
The Iron Law
NOTHING A PERSON READS CARRIES PROCESS MACHINERY
A status, a reply, a standup note, a PR description, and any other text
aimed at a human is spoken sentences in the domain. Skill names, pass
labels, requirement-citation grammar, and ledger jargon stay off the page.
The Sequence
- NAME THE READER: a person, not the next skill. Done when: you can
say who will read this out loud.
- WRITE THE OUTER: what is in, what is next, in the words of the
work (invoice, report, PDF, test). Done when: a manager could read it
without knowing this skill set exists.
- SWEEP: delete every process token and every machine-polish mark
before the file lands. Done when: the sweep list below is empty in the
outgoing text.
Sweep list
These tokens do not appear in anything a person reads:
- skill names (
build-inline, test-first, prove-claim, frame-change)
REQUIRED SUB-SKILL
Pass:, Tier 2, Satisfies:, Core hub
- "closed the loop", "execute loop", "prove the claim" as process talk
- em dashes (
—), including glued ones (customers—the). Use a period or a comma.
- contrast frames: "not just X, but Y" / "not merely a bugfix, a foundation"
- sentences over 25 words. Two PR bodies written under "make it read well"
carried 6 such sentences each, topping out at 46 and 44 words. Split them; the
reader is skimming, and a 40-word sentence is where the claim gets lost.
- an AI co-authorship trailer (
Co-Authored-By: Claude …) pasted into prose a
person reads. A commit convention at most, never PR-body or status text.
The ledger, session notes, and inner working set may still use those
tokens. They are not the reply.
Rationalizations
| Thought |
Reality |
| "She already knows how we work" |
She asked what happened, not which skill is loaded. |
| "test-first, then prove the claim" is just being precise |
Those are skill names. The domain sentence is "next is the failing PDF-export test." |
| "Core hub is how we say where rounding lives" |
Say report.js. "Hub" is inner register. |
| "build-inline / Pass: loop belongs in a status" |
That is the inner track leaking. The outer names the work, not the protocol. |
| "I'll leave the jargon; she can skip it" |
If she has to skip it, it should not have been written. |
| "Staff said polish it for the board" |
The boardline PR sold trust-erosion with an em dash. Facts in two short sentences. |
| "A VP will read it, so it should sound weighty" |
Measured: that framing produced 4 em dashes and a 46-word sentence, 2 of 2. Weight comes from the number, not the clause. |
Red Flags: stop and rewrite the outer
- You are about to paste session notes or a skill checklist into a reply
- The draft contains
REQUIRED SUB-SKILL, Satisfies:, or a skill name
- You wrote "closed the loop" or "execute loop" to a human
- The first sentence names a skill instead of the work
- The draft contains
— or a "not just / not merely" contrast frame
- A sentence runs past 25 words, or a model signature rides along in the prose
If a leak already landed, rewrite the file before doing anything else.
Worked example
Session notes still on screen:
Using build-inline · REQUIRED SUB-SKILL: use test-first · Pass: loop ·
Satisfies: BILL-1.4 · Core hub: rounding lives in report.js
Maya: "I'm back. What happened?"
Outer:
Still on BILL-1.4. Invoice totals should round once, in report.js.
Next is a failing test for PDF export on the unrounded path.
1---2name: speak-outer3description: Use when writing anything a person will read (a status, a reply, a standup note, a PR body). Produces outer-register prose with no process machinery.4---56# Speak Outer78Anything a person reads is the outer register. The switch is total.910## The Iron Law1112```13NOTHING A PERSON READS CARRIES PROCESS MACHINERY14```1516A status, a reply, a standup note, a PR description, and any other text17aimed at a human is spoken sentences in the domain. Skill names, pass18labels, requirement-citation grammar, and ledger jargon stay off the page.1920## The Sequence21221. **NAME THE READER:** a person, not the next skill. *Done when: you can23 say who will read this out loud.*242. **WRITE THE OUTER:** what is in, what is next, in the words of the25 work (invoice, report, PDF, test). *Done when: a manager could read it26 without knowing this skill set exists.*273. **SWEEP:** delete every process token and every machine-polish mark28 before the file lands. *Done when: the sweep list below is empty in the29 outgoing text.*3031## Sweep list3233These tokens do not appear in anything a person reads:3435- skill names (`build-inline`, `test-first`, `prove-claim`, `frame-change`)36- `REQUIRED SUB-SKILL`37- `Pass:`, `Tier 2`, `Satisfies:`, `Core hub`38- "closed the loop", "execute loop", "prove the claim" as process talk39- em dashes (`—`), including glued ones (`customers—the`). Use a period or a comma.40- contrast frames: "not just X, but Y" / "not merely a bugfix, a foundation"41- sentences over **25 words**. Two PR bodies written under "make it read well"42 carried 6 such sentences each, topping out at 46 and 44 words. Split them; the43 reader is skimming, and a 40-word sentence is where the claim gets lost.44- an AI co-authorship trailer (`Co-Authored-By: Claude …`) pasted into prose a45 person reads. A commit convention at most, never PR-body or status text.4647The ledger, session notes, and inner working set may still use those48tokens. They are not the reply.4950## Rationalizations5152| Thought | Reality |53|---|---|54| "She already knows how we work" | She asked what happened, not which skill is loaded. |55| "test-first, then prove the claim" is just being precise | Those are skill names. The domain sentence is "next is the failing PDF-export test." |56| "Core hub is how we say where rounding lives" | Say `report.js`. "Hub" is inner register. |57| "build-inline / Pass: loop belongs in a status" | That is the inner track leaking. The outer names the work, not the protocol. |58| "I'll leave the jargon; she can skip it" | If she has to skip it, it should not have been written. |59| "Staff said polish it for the board" | The boardline PR sold trust-erosion with an em dash. Facts in two short sentences. |60| "A VP will read it, so it should sound weighty" | Measured: that framing produced 4 em dashes and a 46-word sentence, 2 of 2. Weight comes from the number, not the clause. |6162## Red Flags: stop and rewrite the outer6364- You are about to paste session notes or a skill checklist into a reply65- The draft contains `REQUIRED SUB-SKILL`, `Satisfies:`, or a skill name66- You wrote "closed the loop" or "execute loop" to a human67- The first sentence names a skill instead of the work68- The draft contains `—` or a "not just / not merely" contrast frame69- A sentence runs past 25 words, or a model signature rides along in the prose7071If a leak already landed, rewrite the file before doing anything else.7273## Worked example7475Session notes still on screen:7677`Using build-inline` · `REQUIRED SUB-SKILL: use test-first` · `Pass: loop` ·78`Satisfies: BILL-1.4` · `Core hub: rounding lives in report.js`7980Maya: "I'm back. What happened?"8182Outer:8384> Still on BILL-1.4. Invoice totals should round once, in `report.js`.85> Next is a failing test for PDF export on the unrounded path.86