PostGatecontrol layer, not a prompt8 rules18 drafts

A prompt can ask a model to follow your rules. It cannot stop the draft that breaks one.

This is the difference between "I told it the rules" and a workflow you can trust unattended. Every rule below is a checkable constraint. Every draft gets a verdict, and a rejected draft names the rule it broke and quotes the words that broke it.

Built by Muhannad for an educational-content workflow brief Synthetic sources, no client data Recomputed in your browser on load
01 / the run

Eighteen drafts through the gate.

Twelve were assembled by a constrained composer from four source documents. Six are what an unconstrained model hands you when the rules live only in the prompt. Watch which ones stop.

02 / the ledger

Click any row. A rejection tells you exactly what to fix.

DraftOriginFormatVerdictRulesBroke
03 / falsifiable

Paste your own text. The same eight rules run on it.

Nothing here is fixture-bound. The gate takes any string. Try breaking a rule on purpose: add an invented percentage, write "guaranteed", open with "In this post I wanted to share".

04 / the rules

Eight constraints, and why each one exists.

Six are blockers and stop a draft. Two are notes and only annotate. That split is a decision your rules file owns, not the model.

RuleWeightWhy it exists
05 / verification

Every number above, re-derived and asserted.

These assertions pin relationships, not totals, so they keep meaning if the corpus changes. They run in your browser now, and at /api/selftest.