Status: Shipped
PR: #111
Depends on: milestones/generation-segment-strings.md (PR #110),
milestones/path-config-strings.md (PR #109),
milestones/concat-segment-lists.md (PR #84)
env_file / dirs.* are already strings at config load. Pages keys
were not:
pages.docs_dir/demos_subdir— a YAML list Path-joined when writingindex.html/pages.yml(Path / listTypeError).pages.title/subtitle/repo_url— a list was interpolated into HTML as"['Demo Videos']".pages.segments.<id>.title/description— same HTML interpolation; a non-mapping row only failed atpagesgenerate (RuntimeError), not at config load.pages.extra_links— a non-list or non-mapping item only failed at generate;href/labelwere untyped.
Fail closed at Config.from_yaml. Missing keys still use defaults
(docs, demos, "Demo Videos"). Empty title / subtitle /
repo_url remain allowed.
- Present
pages.docs_dir/demos_subdirmust be non-empty YAML strings. - Present
pages.title/subtitle/repo_urlmust be YAML strings (empty allowed). -
pages.segmentsrows must be mappings; presenttitle/descriptionmust be YAML strings (empty allowed). -
pages.extra_linksmust be a list of mappings with non-emptyhrefstrings. - Tests for list / non-mapping values.
-
ruff check src/ tests/ -
pytest tests/ -
docgen benchmark(no clock change)
wizard.default_guidancetype gating is separate.- Unknown
pages.extra_linkskeys besideshref/labelare ignored.