Why an in-flight instance is genuinely blocked — nothing advances it on its
own OR via a normal action. Ordered most- to least-actionable in
diagnoseInstance: a failed effect is the root cause even when it left
its activity looking merely "active", so it wins over the activity- and
transition-level symptoms it produces. Note an active activity awaiting a human
action is NOT here — that's the healthy Diagnosiswaiting state.
transition-unevaluable is the recoverable arm: every activity resolved,
but an exit transition's when came back GROQ null (a referenced operand
is missing or unreadable), so selection halts and the cascade re-fires once
the operand resolves — where no-transition-fires means every when is a
definite false. It carries the undecidable transitions.
Why an in-flight instance is genuinely blocked — nothing advances it on its own OR via a normal action. Ordered most- to least-actionable in diagnoseInstance: a failed effect is the root cause even when it left its activity looking merely "active", so it wins over the activity- and transition-level symptoms it produces. Note an active activity awaiting a human action is NOT here — that's the healthy Diagnosis
waitingstate.transition-unevaluableis the recoverable arm: every activity resolved, but an exit transition'swhencame back GROQnull(a referenced operand is missing or unreadable), so selection halts and the cascade re-fires once the operand resolves — whereno-transition-firesmeans everywhenis a definitefalse. It carries the undecidable transitions.