A stored action. semantics is engine-owned advisory meaning, independent
of execution and presentation — an array so the vocabulary can grow without
reshaping this field. when's presence makes the action CASCADE-FIRED: the
engine fires it the moment the condition turns true, at most once per stage
visit, and it is never invocable via fireAction; absent, the action must
be invoked via fireAction by any caller holding a token (fire-on-entry is
when: 'true'). filter is existence with GROQ semantics — a non-matching
action might as well not exist (invisible to UI and LLMs, never merely
disabled); on a when action it composes: filter scopes whether the
automation exists, when is its firing trigger. roles is kept VERBATIM
only when cascade-fired (the pin on which identities may execute the
trigger); a fireAction-fired action's roles folds into filter at
desugar instead.
A stored action.
semanticsis engine-owned advisory meaning, independent of execution and presentation — an array so the vocabulary can grow without reshaping this field.when's presence makes the action CASCADE-FIRED: the engine fires it the moment the condition turns true, at most once per stage visit, and it is never invocable viafireAction; absent, the action must be invoked viafireActionby any caller holding a token (fire-on-entry iswhen: 'true').filteris existence with GROQ semantics — a non-matching action might as well not exist (invisible to UI and LLMs, never merely disabled); on awhenaction it composes:filterscopes whether the automation exists,whenis its firing trigger.rolesis kept VERBATIM only when cascade-fired (the pin on which identities may execute the trigger); a fireAction-fired action'srolesfolds intofilterat desugar instead.