Slice 122: CLI Wiki Render Boundaries
Scope#
Keep wiki CLI output unchanged while splitting the wiki render edge by output family.
Out of scope#
- No parser flag changes.
- No dispatch request changes.
- No service/workflow behavior changes.
- No hosted command surface.
Design#
Cosmic Python chapter 4 says the service layer handles workflows and use cases while interfacing code adapts the outside world. The CLI render edge is interfacing code: it turns typed service results into text or JSON. It should not become a second service layer, and it should not group unrelated output families just because they all belong to the wiki command surface.
The sibling Almanac CLI keeps hosted renderers split by noun. CodeAlmanac's local equivalent is:
cli.render.root # public facade imported by dispatchers
-> cli.render.wiki # wiki-render facade only
-> search.py # search and reindex output
-> pages.py # show/page output
-> topics.py # topic list/show/mutation output
-> health.py # health report output
-> tagging.py # tag/untag outputcli/render/wiki.py remains an import-compatible facade. New rendering logic
belongs in the command-family module that owns the displayed result.
Verification#
- Focused CLI, topic mutation, and architecture tests.
- Architecture guard keeping service model imports and
render_*definitions out ofcli/render/wiki.py. - Isolated public CLI dogfood for init, list, search, show, topics, health, tag/untag, and reindex.