The renderer registry: one entry per renderable kind.
Remarks
Two consumers, one list. describe resolves an explicit kind ('sheet') by name; dynamic
surfaces (the REPL's .md, a macro result) resolve an arbitrary SDK object via Renderer.Entry.is. Both paths land on the same entry, so a kind cannot render differently
depending on how it was reached.
Detection uses the SDK's isI* runtime brands (isIWorkbook, isISheet, isICellRange,
…) — the SDK's own convention for runtime type checking. The registry knows the SDK's
interfaces, never its classes, and a brand survives any transport that preserves methods.
The renderer registry: one entry per renderable kind.
Remarks
Two consumers, one list.
describeresolves an explicit kind ('sheet') by name; dynamic surfaces (the REPL's.md, a macro result) resolve an arbitrary SDK object via Renderer.Entry.is. Both paths land on the same entry, so a kind cannot render differently depending on how it was reached.Detection uses the SDK's
isI*runtime brands (isIWorkbook,isISheet,isICellRange, …) — the SDK's own convention for runtime type checking. The registry knows the SDK's interfaces, never its classes, and a brand survives any transport that preserves methods.