Reference: The Vocabulary
The vocabulary is the closed set of everything a ChainRender app can express. It's machine-readable via
vocabulary(), and it's closed by design — that closure is what makes apps analyzable and safe.
Node types (primitives)
box, text, heading, button, link, image, input, and the structured renderers: chart, table, controls (toggle, select, slider, search), layout (stack/grid/flow), multi-view.
Capabilities
READ_CHAIN (read state), WRITE_CHAIN (send a tx), VALUE (move ETH), SIGN_MESSAGE (typed signing),
BATCH_EXECUTE (atomic multi-action), CLIENT_FETCH (off-chain fetch — drops the grade), GPU_EXECUTE
(client GPU enhancement, fails closed to a poster). An app declares its envelope; the enforcer verifies it.
Resolver kinds
Each resolver declares which kinds it serves. vocabulary().resolverKinds lists them — never hardcode a kind
string; read it from here.
Call vocabulary() for the exact, current schema — it's generated from the real on-chain constants, drift-locked.