The setup
- Lane A — raw LLM. Generic fitness AI system prompt, free-form text out, an extractor pulls the prescribed exercises into a list, a deterministic scorer counts how many are on the blacklist.
- Lane B — the same model, the same scenario, the same scorer, but routed through a compile-time safety contract: a domain-specific language with a published JSON Schema, per-client rule evaluation that strips contraindicated exercises before serving.
The number that made me stop and recount
A hypothesis worth testing
What governance actually does
Picking a "safer model" is the wrong frame. Picking a contract is the right one.The same Opus 4.7 that wrote 129 contraindicated prescriptions raw, had the overwhelming majority of them stripped before serving once it spoke through the contract.
So which LLM should you actually use?
Why I'm telling you this in narrative form
- The model is not the safety boundary. Choosing between Sonnet and Opus does not change the failure mode shape; it changes the absolute count. The contract is the boundary.
- "Most capable" is not "safest" by default. Verbosity inflates absolute violation count. Without a contract, more capable models surface this pattern first, not last.
- You can audit this for the cost of a dinner. The full dataset — now 560 trials including a short-plan corpus — reproduces for under $170 of API spend. Every prompt, every response, every score is reproducible from a fresh checkout. The benchmark is open. If you don't trust my numbers, run them yourself; the runner is idempotent.
The series continues → I Audited My Own AI-Safety Benchmark and Made the Numbers Look Worse (how I de-circularized my own evals) and My Safety Layer Had a Blind Spot in Production (the catalog drift that hid rehab clients from the safety layer).