What running it actually taught me
Everything above was built against a mock, using responses I’d guessed at. These came out of real runs, and a few of them are mistakes in my own assumptions rather than anything the model did.
A working repair loop hid a prompt defect
Planning returned numeric step ids in every live run. The loop fixed it each time, so everything looked fine, but the prompt had never said the field was a string. That's what caused it. Fixing the prompt removed a whole model call per run. I could have just coerced the type in the schema instead, but that would have buried the bug and kept paying for the extra call forever.
Cost does not follow per-token pricing
Opus is 5x Haiku per token but 13x per run, because thinking is on by default and blows up the output. On the same ticket all three models landed on the same rubric average, so the extra money bought nothing I could measure.
An eval that passed when nothing ran
A coverage assertion checked that the check "did not fail", which is automatically true on a run that never got as far as validation. An eval that passes when nothing happened is worse than having no eval.
One sample is not a property
clarificationNeeded came back true for every fixture, so I figured it just over-flags and pinned that as a test. A later set of recordings had it get the answer right. So it's really just nondeterministic, and my first conclusion made exactly the mistake this project warns about.
A code review found a spend vector
The approval endpoint enforced the repair bound against a number the client supplied. A forged run with repairRounds -9999 was accepted and made real billable calls. Validating the shape would not have fixed it, since a client sending 0 forever still buys unlimited replans. The state had to move server-side.