Follow-up from #1097 (decision 0001, option Q1-C).
The new renderToNotionMarkdown projector (@overeng/notion-react/markdown) owns a dedicated JSX→Markdown spelling table that deliberately aligns with — but does not share code with — the pull-side wire renderer (NotionMarkdown.treeToMarkdown in @overeng/notion-effect-client). Delegation was rejected because the pull-side renderer lacks a diagnostics channel and modifying it for review-artifact needs risks .nmd wire-format drift.
Trigger to revisit: a second real consumer of the Markdown projection, or a stable compatibility requirement, per the #1097 demand gate.
Then: evaluate extracting shared spelling constants (or a dialect module) consumed by both serializers, with golden tests on both sides preventing drift.
Follow-up from #1097 (decision 0001, option Q1-C).
The new
renderToNotionMarkdownprojector (@overeng/notion-react/markdown) owns a dedicated JSX→Markdown spelling table that deliberately aligns with — but does not share code with — the pull-side wire renderer (NotionMarkdown.treeToMarkdownin@overeng/notion-effect-client). Delegation was rejected because the pull-side renderer lacks a diagnostics channel and modifying it for review-artifact needs risks.nmdwire-format drift.Trigger to revisit: a second real consumer of the Markdown projection, or a stable compatibility requirement, per the #1097 demand gate.
Then: evaluate extracting shared spelling constants (or a dialect module) consumed by both serializers, with golden tests on both sides preventing drift.