Goal: scene-compile must not emit unpaced cascading FadeIns when
timing.json has no words, and yaml-generate must not retarget committed
Manim visual_map rows. Related CLI paths (lint, compose, TTS,
generate-all) fail closed instead of exiting 0 on empty work.
Branch / PR: cursor/scene-compile-pace-2ccd
Follows timestamps-fail-closed.md (#78). Closes the remaining hole in issue #56 (missing/empty Whisper words).
-
pacing_violationsrequirestiming.jsonwords whenever any labeled story box is notpace: none(unlabeled images stay exempt) -
linted_class_block_from_spec/scene-compileraiseSceneGenerationErrorfor paced labels when words are missing or empty - Explicit
pace: noneon every story box still compiles without words -
discover_visual_mappreserves existing manimscene/class(even when the class is missing fromscenes.pyor the file is empty) - Unused scene classes fill empty manim slots in file order (no positional overwrite of a committed class)
-
docgen lintexits 1 when a listed segment has no narration file -
docgen composewith no args usessegments.defaultif nonempty, elsesegments.all(empty default no longer composes nothing and succeeds) - TTS raises
TTSErrorwhen stripped narration is empty -
generate-all/rebuild-after-audiowrapRuntimeErrorasClickExceptionwithout swallowingSystemExitfromrun_pre_push; emptysegments.allis an error
- Clock /
_TimedScene/ dwell math (nodocgen benchmarkbaseline bump) - Archived Playwright / Embabel / slides