Part of the metadata liveness audit umbrella #1878 (P0 security cluster).
Problem
Action disabled in its CEL (predicate) form is silently ignored. The renderer reads a non-spec boolean enabled (action-button.tsx:56); the spec's disabled predicate has zero consumers. So an action gated by a CEL disabled expression (e.g. "disable unless record is approved") renders as fully enabled — a guard the author believes is active does nothing.
Decision required (enforce or remove)
- Enforce: evaluate the
disabled CEL predicate in the renderer and reflect it in the button's disabled state (reconcile with / replace the non-spec enabled key). - Remove: if only a static boolean is supported, drop the CEL form from the spec and align the spec key with what the renderer reads.
Evidence
docs/audits/2026-06-actionschema-property-liveness.mdaction-button.tsx:56 (reads non-spec enabled)
Part of the metadata liveness audit umbrella #1878 (P0 security cluster).
Problem
Action
disabledin its CEL (predicate) form is silently ignored. The renderer reads a non-spec booleanenabled(action-button.tsx:56); the spec'sdisabledpredicate has zero consumers. So an action gated by a CELdisabledexpression (e.g. "disable unless record is approved") renders as fully enabled — a guard the author believes is active does nothing.Decision required (enforce or remove)
disabledCEL predicate in the renderer and reflect it in the button's disabled state (reconcile with / replace the non-specenabledkey).Evidence
docs/audits/2026-06-actionschema-property-liveness.mdaction-button.tsx:56(reads non-specenabled)