Changelog
✅ Recent Major Completions
Secure Invoke System with Centralized Parameters (v1.9.0)
- Handler-Based Security - Replaces dangerous arbitrary function execution with secure handler registration system
- SCXML Event Compliance - Generates proper
done.invoke.{id}
,error.execution
, anderror.communication
events per specification - Centralized Parameter Processing - Unified
<param>
evaluation with strict (InvokeAction) and lenient (SendAction) error handling modes - External Service Integration - Safe way to integrate SCXML state machines with external services and APIs
- Complete Test Coverage - InvokeAction and InvokeHandler modules achieve 100% test coverage
- Parameter Architecture Refactor - Consolidated parameter evaluation logic removes code duplication across actions
Complete History State Support (v1.4.0)
- Shallow History - Records and restores immediate children of parent states that contain active descendants
- Deep History - Records and restores all atomic descendant states within parent states
- History Tracking - Complete
Statifier.HistoryTracker
module with efficient MapSet operations - History Validation - Comprehensive
Statifier.Validator.HistoryStateValidator
with W3C specification compliance - History Resolution - Full W3C SCXML compliant history state transition resolution during interpreter execution
- StateChart Integration - History tracking integrated into StateChart lifecycle with recording before onexit actions
- SCION Test Coverage - Major improvement in SCION history test compliance (5/8 tests now passing)
Multiple Transition Target Support (v1.4.0)
- Space-Separated Parsing - Handles
target="state1 state2 state3"
syntax with proper whitespace splitting - API Enhancement -
Statifier.Transition.targets
field (list) replacestarget
field (string) for better readability - Validator Updates - All transition validators updated for list-based target validation with comprehensive testing
- Parallel State Fixes - Critical parallel state exit logic improvements with proper W3C SCXML exit set computation
- SCION Compatibility - history4b and history5 SCION tests now pass completely with multiple target support
SCXML-Compliant Processing Engine
- Microstep/Macrostep Execution - Implements SCXML event processing model with microstep (single transition set execution) and macrostep (series of microsteps until stable)
- Eventless Transitions - Transitions without event attributes (called NULL transitions in SCXML spec) that fire automatically upon state entry
- Exit Set Computation - Implements W3C SCXML exit set calculation algorithm for determining which states to exit during transitions
- LCCA Algorithm - Full Least Common Compound Ancestor computation for accurate transition conflict resolution and exit set calculation
- Cycle Detection - Prevents infinite loops with configurable iteration limits (100 iterations default)
- Parallel Region Preservation - Proper SCXML exit semantics for transitions within and across parallel regions
- Optimal Transition Set - SCXML-compliant transition conflict resolution where child state transitions take priority over ancestors
Enhanced Parallel State Support
- Cross-Parallel Boundaries - Proper exit semantics when transitions leave parallel regions
- Sibling State Management - Automatic exit of parallel siblings when transitions exit their shared parent
- Self-Transitions - Transitions within parallel regions preserve unaffected parallel regions
- Parallel Ancestor Detection - New functions for identifying parallel ancestors and region relationships
- Enhanced Exit Logic - All parallel regions properly exited when transitioning to external states
Feature-Based Test Validation System
- Statifier.FeatureDetector - Analyzes SCXML documents to detect used features
- Feature validation - Tests fail when they depend on unsupported features
- False positive prevention - No more "passing" tests that silently ignore unsupported features
- Capability tracking - Clear visibility into which SCXML features are supported
Modular Validator Architecture
- Statifier.Validator - Main orchestrator (from 386-line monolith)
- Statifier.Validator.StateValidator - State ID validation
- Statifier.Validator.TransitionValidator - Transition target validation
- Statifier.Validator.InitialStateValidator - All initial state constraints
- Statifier.Validator.ReachabilityAnalyzer - State reachability analysis
- Statifier.Validator.Utils - Shared utilities
Initial State Elements
- Parser support -
<initial>
elements with<transition>
children - Interpreter logic - Proper initial state entry via initial elements
- Comprehensive validation - Conflict detection, target validation, structure validation
- Feature detection - Automatic detection of initial element usage
Implementation Status
For current feature status and working capabilities, see the main README.