diff --git a/docs/shortsmith-phases-4-6.md b/docs/shortsmith-phases-4-6.md index d3c7fb1..98cb557 100644 --- a/docs/shortsmith-phases-4-6.md +++ b/docs/shortsmith-phases-4-6.md @@ -97,6 +97,24 @@ What actually landed, and where it differs from the plan below: redacted." costs three quarters of a second that a characters-only model gives away. Estimates now land within half a second of the three rendered MP4s. The lesson is the older one restated: a constant taken from one sample is a guess with a decimal point. +- **The spec writer was under-declaring because the prompt asked for three things that + could not all be true** (2026-08-13). Every narrated spec the bot had written declared + less time than its own narration needed on three or four shots out of five or six — + 3.8 to 8.2 seconds of drift per Short. The video still came out the right length, + because `plan()` grows the shot; what was wrong was that the spec described a visual + rhythm that never rendered. The cause was not a lazy model. The prompt asked at once + for lines of up to 18 words, shots of at most 6 seconds, and enough declared time for + the line — and 18 words need 7.3 s, so the set is unsatisfiable. The model broke the + only one of the three that nothing checked. Three fixes, all deterministic and none + costing a generation to find: the taught rule got the per-sentence term it was missing + (`words/2.75 + 0.5` fell short on 14 of the 28 measured lines, by up to 2.27 s — so + even perfect obedience under-declared); the word cap is now *derived* from the shot + cap rather than written by hand, so the contradiction cannot come back; and the worked + example, which violated its own rule on two of its six lines, was cut to obey it. That + last one is the lesson worth keeping: **the example is the strongest signal in the + prompt, so an example that breaks a rule teaches the breakage**, whatever the prose + says. It is the same finding as "el ejemplo del prompt habla, y por eso los specs + vuelven a hablar", arriving a second time. Original plan, kept for the record: