Split the pipeline where determinism ends
instead of · Handing the whole timeline to a model and letting it decide every cut
Silence detection is arithmetic on word gaps: deterministic, free, and correct by construction. Retake detection is semantic judgement: probabilistic and billed per call. Drawing the boundary there protects the invariant that timing is never inferred by a model, and confines cost and error probability to the one stage that actually needs judgement.
Word indices as the model contract, never timestamps
instead of · Asking the model for time ranges directly
A hallucinated timestamp is a plausible float that cuts the wrong frame and fails silently. An invalid word index fails validation before it touches the footage. Keeping the index-to-time mapping in my code turns the worst failure mode, a silent mis-cut, into a loud, recoverable rejection.
A second audit pass over the assembled cut
instead of · One better-prompted cut pass
Individually correct cuts can still compose into a duplicated phrase or a broken join: per-edit correctness does not guarantee sequence correctness. The audit pass reads only the surviving words, the edit as the viewer will hear it, and keeps the original indices so its corrections land in the same coordinate system. One extra model call buys a check the first pass cannot perform on itself.
Deleting the wipe transition instead of maintaining the fix
instead of · Shipping the working fix I had already written
The fix suppressed the wipe wherever a chapter card already breaks the flow, so the feature only stayed acceptable under a guard rule every future layout change would have to respect. A default that needs a rule to not look wrong carries negative value: it still looked worse than no transition, so one commit later the feature went, and the rule with it.