Status: Shipped
PR: #108
Depends on: milestones/generation-model-strings.md (PR #107),
milestones/visual-map-row-types.md (PR #86),
milestones/segment-id-strings.md (PR #87)
visual_map rows are already mappings and keys are already strings.
These inner / sibling wiring values were not:
visual_map.<id>.type/scene/class/source— a YAML list wasstr()’d ("['manim']"). Compose and pipeline then skipped the segment (unknown type / missing class) instead of failing at config load.yaml-generatetreated"['manim']"as a non-manim leftover and preserved the broken row.segment_namesvalues — keys are strings; a list stem became"['01-intro']"and asset lookup used a bogus filename.
Empty type: "" remains allowed (unmapped / yaml-generate fill).
Fail closed at Config.from_yaml. Missing fields stay optional.
- Present
visual_map.<id>.type/scene/class/sourcemust be YAML strings (empty allowed). - Present
segment_namesvalues must be non-empty YAML strings. - Tests for list values of those keys.
-
ruff check src/ tests/ -
pytest tests/ -
docgen benchmark(no clock change)
visual_mapmixedsources:remains a list of paths.env_file/repo_root/dirs.*path strings are separate.- Per-segment generation
system_prompt/class_nameare separate.