Status: Shipped
PR: #105
Depends on: milestones/image-generation-strings.md (PR #104),
milestones/tts-empty-audio.md (PR #99),
milestones/multi-host-ai-hardening.md
tts.model / image_generation.model are already strings at config load.
These sibling keys were not:
ai.provider/base_url/api_key_env— a YAML list wasstr()’d ("['openai']") intonormalize_provider.timestamps.engine— a list became"['local']", thenresolve_engineraised unknown-engine only when timestamps ran.tts.language— a list wasstr()’d into xAI TTS/STTlanguage.
Fail closed at Config.from_yaml. Missing keys still use defaults
(ai.provider openai, timestamps.engine local, Grok language en).
- Present
ai.provider/base_url/api_key_envmust be non-empty YAML strings. - Present
timestamps.enginemust be a non-empty YAML string. - Present
tts.languagemust be a non-empty YAML string. - Tests for list values of those keys.
-
ruff check src/ tests/ -
pytest tests/ -
docgen benchmark(no clock change)
- Unknown
timestamps.enginevalues still fail atresolve_engine. manim.font/manim.qualitystring typing is separate.