Typed, versioned experience metadata carried through CapabilityMetadata.extensions. Platform preserves
the namespaced JSON without interpreting roles, slots, action intents, screens, layout, or rendering.
Display renderers
createDisplayRegistry() maps an event type to a DisplayRenderer, which turns an event payload into a
DisplayDescriptor. render(eventType, payload, context) passes context to the renderer unchanged.
DisplayContext.event is an optional DisplayEventIdentity copied from the event envelope: eventId,
subjectType, subjectId, occurredAt, and actionInvocationId when an invocation emitted the event.
Some payloads identify their invocation only in the envelope. Platform Host's ApprovalRequested,
ApprovalDecided and ApprovalExpired payloads omit the command and proposal, for example. To render
one, read the invocation with a lookup scoped to context.tenantId and context.spaceId and keyed by
context.event.actionInvocationId. Renderers that use only the payload can ignore the field.