Status: Shipped
PR: #107
Depends on: milestones/manim-font-quality.md (PR #106),
milestones/wizard-prompt-strings.md (PR #100)
wizard.llm_model / wizard.system_prompt and tts.model are already
typed at config load. These LLM keys were not:
narration_from_source.model—str()turned a YAML list into"['gpt-4o']"and sent it to the chat API.narration_from_source.system_prompt— a list became a bracketed string used as the narration system prompt.manim_scene_generation.model/system_prompt/scene_spec_system_prompt— samestr()coercion into scene-spec generation.
Fail closed at Config.from_yaml. Missing keys still use code defaults
(gpt-4o / built-in prompts). Empty system_prompt strings remain
allowed (same as wizard.system_prompt).
- Present
narration_from_source.modelmust be a non-empty YAML string. - Present
narration_from_source.system_promptmust be a YAML string (empty allowed). - Present
manim_scene_generation.modelmust be a non-empty YAML string. - Present
manim_scene_generation.system_prompt/scene_spec_system_promptmust be YAML strings (empty allowed). - Tests for list values of those keys.
-
ruff check src/ tests/ -
pytest tests/ -
docgen benchmark(no clock change)
- Per-segment
system_prompt/class_nameunder those blocks. wizard.default_guidancetype gating is separate.env_file/repo_root/dirs.*path strings are separate.