[NICE TO HAVE]
When configuring a rule's item_filter, there is no way to tell whether it matches what you intended until the scheduler runs and something does (or doesn't) happen. A filter that silently matches nothing looks identical to one that is simply not due yet.
Proposal
A "preview" control on the filter builder that evaluates the current, unsaved expression against the items presently in the transition's source stage and reports the matches; count at minimum, ideally a short list.
Most of the machinery exists: ConditionEvaluator plus ItemFieldResolver already do exactly this evaluation. The work is an endpoint that accepts an unsaved expression, and the UI to call it.
[NICE TO HAVE]
When configuring a rule's item_filter, there is no way to tell whether it matches what you intended until the scheduler runs and something does (or doesn't) happen. A filter that silently matches nothing looks identical to one that is simply not due yet.
Proposal
A "preview" control on the filter builder that evaluates the current, unsaved expression against the items presently in the transition's source stage and reports the matches; count at minimum, ideally a short list.
Most of the machinery exists: ConditionEvaluator plus ItemFieldResolver already do exactly this evaluation. The work is an endpoint that accepts an unsaved expression, and the UI to call it.