Commit 16b4f27
committed
fix(validators): always propagate exceptions, never convert to error.execution
Validators operate in the transition-selection phase, not the execution
phase. A validator rejecting is semantically "this transition should not
happen" — not "something failed during execution". Converting the
exception to error.execution conflated these two concepts.
Engine change: pass on_error=None for validators in _conditions_match()
(both sync and async), so exceptions always propagate to the caller
regardless of error_on_execution.
- Add 28 dedicated validator tests (14 scenarios × sync/async via
sm_runner): propagation, multiple validators, combined with cond,
no error.execution trigger, no fallthrough
- Rewrite guards.md: progressive narrative, conditions with kwargs
(PriorityRouter), validator propagation semantics, contrast with
error.execution, rename title to "Conditions"
- Remove now-unnecessary error_on_execution=False from conftest fixture
and issue509 test1 parent 5c98d3d commit 16b4f27
6 files changed
Lines changed: 576 additions & 188 deletions
File tree
- docs
- statemachine/engines
- tests
- testcases
0 commit comments