One candidate from Dispatcher.resolveAll — a binding that matched the
event, with why it did or didn't get to fire.
Verdicts:
would-fire — eligible, enabled() passed, and nothing above it fired.
At most one candidate per call carries this.
ineligible — the action's eligible rule evaluated false against the
live RuleCtx. reason is the rule, serialized.
disabled — enabled() returned a disabled reason, carried verbatim.
shadowed — never asked, for one of two reasons: something above it
already fired, or it is a repeat binding of the action that itself won
higher in the list (several bindings may point at one action, and the
dispatcher runs each action at most once). A repeat of an action that was
already judged ineligible or disabled is NOT shadowed — it inherits
that action's verdict, since that is the reason it doesn't fire.
One candidate from
Dispatcher.resolveAll— a binding that matched the event, with why it did or didn't get to fire.Verdicts:
would-fire— eligible,enabled()passed, and nothing above it fired. At most one candidate per call carries this.ineligible— the action'seligiblerule evaluated false against the liveRuleCtx.reasonis the rule, serialized.disabled—enabled()returned a disabled reason, carried verbatim.shadowed— never asked, for one of two reasons: something above it already fired, or it is a repeat binding of the action that itself won higher in the list (several bindings may point at one action, and the dispatcher runs each action at most once). A repeat of an action that was already judgedineligibleordisabledis NOT shadowed — it inherits that action's verdict, since that is the reason it doesn't fire.