The experiment
What the data says
Why I think this happens
Tokenized errors are machine-repairable. Positional errors silently shift block scope. The tax that indentation imposes on small models is not the discipline itself — it's that the failure mode is undebuggable.
What this changes for v0.7
- B1: DSL surface form. END-markers versus indented form, full sweep across the Anthropic and OpenAI lineups, both single- and multi-turn. Tests whether the +47-point Haiku compile gain reproduces and whether the larger models gain anything at multi-turn (where they do show compile failures, unlike single-turn where Sonnet was at ceiling).
- B2: Activity-block schema. The original Arm B — drop the type discriminator and allow additionalProperties. Orthogonal to B1; addresses the schema-validation ceiling that B1 does not move.
What I'd encourage other DSL designers to consider
- Prefer tokenized scope markers over positional ones at any tier where you expect the LLM to emit long output. Long is the operative word; for short outputs both forms work fine.
- Audit your DSL by measuring what makes it fail on your smallest deployable model. If the small-model failure mode is "the parser landed the exercise in the wrong week," that's an indentation problem. If it's "the exercise name is misspelled," that's a vocabulary problem. Different problems have different fixes.
- Tolerant parsing is more valuable for LLM-emitted DSLs than for human-authored ones. A human author who skips a closer notices and fixes it. An LLM that skips a closer does not, and an LLM that's prompted to retry will produce a different skipped closer next time. Build the parser to recover; the re-indenter in this probe recovered 6 of 8 emit-warning trials into compile-valid output. That recovery rate is a meaningful contributor to served-rate, not a footnote.
The wpl-ai compiler bug I found along the way
Closing the series
- The clickbait headline — bigger LLMs aren't safer; the data is uncomfortable but the framing is honest.
- The two-lane benchmark — how to actually measure whether your safety mechanism contributes, isolated from the model.
- Multi-turn drift — your LLM forgets the constraint, 42% of the time, in conversations that span more than one turn.
- The compile-time safety contract — what WPL is, why DSL → compile beats JSON-mode-with-schema at long output length.
- Bigger isn't safer, sharpened across vendors — the flagship pattern reproduces on Anthropic; capability inflates absolute violation count.
- Surface form matters, especially for small models — this post. Indentation is a tax the small tier can't pay.
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).