diff --git a/docs/shortsmith-phases-4-6.md b/docs/shortsmith-phases-4-6.md index 98cb557..1b2619e 100644 --- a/docs/shortsmith-phases-4-6.md +++ b/docs/shortsmith-phases-4-6.md @@ -116,6 +116,20 @@ What actually landed, and where it differs from the plan below: says. It is the same finding as "el ejemplo del prompt habla, y por eso los specs vuelven a hablar", arriving a second time. +- **A validation rule that fires too late costs a whole generation, not a retry** + (2026-08-13). researchowl deliberately did not replicate shortsmith's cross-field + `@model_validator`s — they are not in the published JSON Schema, and the reasoning was + that the server's 422 covers them. It does, but at the wrong moment: the 422 arrives + at *render* time, after the spec loop has finished, so the spec is not rewritten, it + is handed back to a human. Session 162 (Trans-en-Provence) died exactly there — valid + on the first attempt, 39 claims grounded, and no video because a `scale_bars` shot had + three bars and a quote. Replicated locally, the same spec cost one retry and rendered. + The rule to carry forward: **where a check runs decides what it costs**, and "the + server will catch it" is only true if the server catches it while you can still act. + The error strings are copied from shortsmith word for word, because they are handed to + the model verbatim and two wordings of one failure is how an error message stops + being useful. + Original plan, kept for the record: ### 4b (as planned). Narration (TTS) + burned-in captions