fix(short): el primer plano gastaba el gancho en la fecha

El gancho de un Short es lo que se DIBUJA, no solo lo que se dice. El prompt
llevaba la mitad hablada desde 4b («the first line is the whole hook») y no
tenía nada sobre la mitad vista. De los diecisiete short_en generados, once
abren mal: diez ponen la fecha en el titular —el texto más grande del vídeo—
mientras el subline de debajo ya lleva el sitio, y el output 131 abre con
document_quote.

Medido sobre el renderizador a 5,5 s de plano: las cinco plantillas con
`headline` lo ponen a tinta plena en 0,33-0,40 s, y shortsmith lo garantiza a
cualquier duración desde db1ac7e. Las tres que no lo tienen dejan la banda
superior del fotograma al nivel del fondo TODO el plano —su texto se escribe a
máquina más abajo y no está entero hasta 2,6-2,8 s—. Con 6,9 s de visionado
medio, abrir con una de esas regala el tercio de la ventana en el que se
decide todo.

La costura es `headline`, preguntada al esquema y no a una lista de nombres:
una plantilla nueva de shortsmith con titular podrá abrir sin tocar este repo,
y una sin él no podrá. El mismo pacto que el resto del contrato.

Y `_closer_to_target` ordenaba SOLO por segundos, lo que hacía decorativo el
aviso nuevo: una reescritura que arreglaba el titular pero se pasaba un
segundo perdía contra el intento que abría con una fecha. Ahora el gancho va
delante — los segundos son un gradiente, el gancho es binario.

Comprobado contra los 17 specs reales de producción: avisa de once y de
ninguno más. Los que pasan son los titulares que se quieren (62 CHILDREN,
23 HELICOPTERS, RELEASE 05).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
ChemaVX
2026-09-01 12:39:08 +00:00
co-authored by Claude Opus 5
parent a17edf43b7
commit 6d9b6025ba
6 changed files with 299 additions and 24 deletions
+27
View File
@@ -256,6 +256,33 @@ Available any time, zero researchowl changes, because the contract is fetched li
hook → evidence → unresolved question → CTA arc. Costs one commit, no deploy risk
beyond a prompt change.
### The visual hook — **done 2026-09-01**
The narration hook was already in the prompt (§3b, "the first line is the whole hook").
What nobody had written down is that **the hook is also what is drawn**, and the specs
show it: of the seventeen `short_en` generated, eleven open badly. Ten spend the
headline — the largest text in the video — on a date, while the `subline` right below
already carries the place; one (output 131) opens with `document_quote`.
Measured on the renderer at a 5.5 s shot: the five templates with a `headline` prop put
it at full ink in **0.330.40 s**, and shortsmith guarantees that at any shot length
since `db1ac7e`. The three without one leave the top band of the frame at background
level for the *whole shot* — their content types in lower down and is not complete until
**2.62.8 s**. With an average view of 6.9 s, opening with one of those spends a third
of the window on a frame that has not said anything.
So the seam is `headline`, asked of the schema rather than of a hardcoded list: a new
shortsmith template with a headline may open a video, one without may not, and neither
case needs a change here. Prompt §3c states both halves; `opening_notes()` in
`spec_contract.py` enforces them as editorial notes, and `_closer_to_target` now ranks
the hook above the duration — without that, a rewrite that fixed the headline but ran a
second long would lose to the attempt that opened with a date, and the note would be
decoration.
Still open on the generator side: `document_quote` is also weak as the *second* shot for
the same reason, and nothing yet reads the `severe: true` auto-fit warnings shortsmith
already emits (one real caption was drawn at 20 px).
---
## Implementation order