---
name: one-composer-two-renderers
description: single-source composed text consumed by two render pipelines must be markup-agnostic — styling assumed by one renderer reaches the other audience as literal noise
metadata: 
  node_type: memory
  type: feedback
  originSessionId: bcaec1f3-343d-4719-aa9d-1e1cb82b0e58
  modified: 2026-08-01T15:06:19.404Z
---

DOORBELL W2 leg 3 (todlando, aa80e80): the surface-vocabulary composer emitted **bold** ids because CLI help renders through helpfmt — but the engine-room briefing composes the SAME source in spt-store and never passes that renderer, so one audience would get styled text and the other literal asterisks.

**Why:** single-sourcing text (the right move) creates a new seam — every consumer's render pipeline. Markup valid in one pipeline is corruption in another; units stay green because both audiences' tests assert `contains()` on the words, not the styling.

**How to apply:** when a composer feeds multiple audiences, emit plain text and let each display site style it — or prove every consumer shares the renderer. At review, ask "who else calls this composer, and through what formatter?" Companion false-pass in the same wave: a grammar guard that excused resolution failure at depth>0 excused the exact dead-verb shape it existed to catch — a guard forgiving its own bug's shape is not a guard; walks must also assert they inspected something (vacuity guard). Related: [[uniform-table-blindness-sweep]], [[single-source-discriminant-marker]], [[scripted-edit-zero-match-refusal]].
