A unit of work carrying no payload of its own — every op, effect, and
spawn lives on an action; an activity contributes scoped fields
(resolved at stage entry), existence (filter), advisory readiness
(requirements), and the off-system marker (target, a BPMN Manual Task
deep-link, render-only and never gating). All in-scope activities are
ACTIVE from stage entry until an action's terminal status resolves them —
there is no activation moment. filter is existence with GROQ semantics,
evaluated once against the stage's entry state: a definite false
excludes the activity from UI, LLMs, and $allActivitiesDone.
requirements are readiness gates orthogonal to filter — an unmet one
keeps the activity visible but disables its actions with a
requirements-unmet verdict; distinct from ACL and guards.
A unit of work carrying no payload of its own — every op, effect, and spawn lives on an action; an activity contributes scoped
fields(resolved at stage entry), existence (filter), advisory readiness (requirements), and the off-system marker (target, a BPMN Manual Task deep-link, render-only and never gating). All in-scope activities are ACTIVE from stage entry until an action's terminalstatusresolves them — there is no activation moment.filteris existence with GROQ semantics, evaluated once against the stage's entry state: a definitefalseexcludes the activity from UI, LLMs, and$allActivitiesDone.requirementsare readiness gates orthogonal tofilter— an unmet one keeps the activity visible but disables its actions with arequirements-unmetverdict; distinct from ACL and guards.