The two-lane idea
- Lane A — the bare LLM. Generic fitness assistant system prompt, no governance layer, free-form text response, an extractor pulls the prescribed exercises into a list, score that list against a clinical blacklist.
- Lane B — the same model, the same scenario, the same prompt. But the system prompt routes the model into a domain-specific language. The output is parsed, schema-validated, and run through a rule evaluator that strips contraindicated exercises against the per-client context. The served plan — the thing the rule evaluator approved — is scored against the same blacklist by the same scorer.
The key property: the scorer walks both outputs identically. If the scorer is biased, it's biased identically across lanes and models. Lane differences are not scorer differences.This is what subtracts. (Lane A score) − (Lane B score) is the safety contribution of the governance layer, isolated from the safety contribution of the model. Same model in both lanes; the only thing that changed is whether there's a contract around it.
Why a separate extractor
Why the same scorer walks both lanes
- For Lane A: every extracted exercise name is normalized (lowercase, non-alphanumeric stripped, English-plural stemmed with safeguards against false stems on -ss/-us/-is) and matched against the blacklist using five rules: direct equality, substring containment (2-token minimum), wildcard _anything family match, wildcard _any exercise-family match (qualifiers ignored), core-token match.
- For Lane B: the compiled plan tree is walked, the same normalization runs on every exercise reference, the same five matching rules apply.
Why same model, same prompt, same temperature
The cost model
What multi-turn drift adds
What the architecture explicitly does not try to do
Why this matters beyond fitness
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).