# A pre-output gate

A rule that fires on a detectable pattern instead of relying on the assistant to
remember a preference. Drop this into your assistant's always-on instructions
and adjust the trigger and the checklist to your own standards.

The shape is the point: a **trigger** the model can observe in its own draft, and
a **fixed checklist** it must run before the text reaches you. Rules written as
"please be concise" degrade over a long session. Rules written as "when the
output looks like X, run this list" do not, because the condition is mechanical.

---

## The rule

> Before emitting any text that matches the trigger below, run the checklist and
> revise until every line passes. Do not show the draft until it does.

### Trigger

The output is about to be a message a human will read as from me. Detect it by
any of these observable signals, not by feel:

- it opens with a greeting or a recipient's name
- it carries a subject line
- I asked for a note, reply, message, post, or summary to send
- it ends with a sign-off

### Checklist

- [ ] **Voice.** Reads the way I write, not the way an assistant writes. No
      throat-clearing preamble, no "I hope this finds you well."
- [ ] **Lead with the answer.** The first sentence carries the point. Context
      comes after, if it is needed at all.
- [ ] **Formatting rules.** No em dashes or en dashes. Straight quotes only.
      Sign-off matches my usual one.
- [ ] **No raw URLs.** Links are attached to words.
- [ ] **Concision.** Every sentence survives the question "would I cut this if I
      were paying by the word."
- [ ] **Nothing invented.** Every factual claim traces to something in the
      thread, a file, or a source I can open. No inferred status, no guessed
      dates, no plausible-sounding numbers.
- [ ] **Whole draft.** Reprint the full text, not a fragment, so nothing has to
      be reassembled by hand.

---

## Why it works

Three properties, and all three matter:

| Property | What it buys |
| --- | --- |
| Triggers on an observable signal | It fires reliably instead of being remembered inconsistently |
| Checks are binary | Each line passes or fails; no judgment call to drift on |
| Runs before output, not after | You never see the draft that would have needed fixing |

The failure mode this replaces is the standing preference that works for an hour
and then quietly stops. A preference is a hope. A gate is a condition.

---

## Adapting it

Swap the checklist for your own non-negotiables and keep the structure. Two
rules of thumb from using this:

1. **Every item must be checkable by reading the draft alone.** If verifying an
   item requires information the assistant does not have, it will be skipped.
2. **Keep it short enough to run every time.** A twenty-item gate is a gate that
   gets half-run. Six to eight items is the range where it stays honest.
