Why the supported subset is intentionally small¶
Sismic supports richer statecharts than the flat python-statemachine declaration generated by State Mate.
Supporting every Sismic construct would require one of two undesirable behaviours: silently discard semantics, or grow State Mate into a second execution/model framework.
Fidelity is more important than acceptance¶
A generator should reject a source model when it cannot reproduce its semantics faithfully. For example, flattening nested states or dropping a guard may produce syntactically valid Python while changing runtime behaviour.
State Mate therefore treats unsupported constructs as errors.
Flat finite-state machines are the current target¶
The generator is optimized for a useful, explicit subset:
- flat states under a single root;
- final states;
- event-driven external transitions;
- shared events across several source states.
This maps naturally to States.from_enum() and states.X.to(states.Y) declarations.
Extensions should be semantic, not cosmetic¶
If State Mate gains support for additional Sismic features later, each feature should have a defined representation in the generated runtime model and tests that demonstrate equivalent behaviour. Expanding the accepted syntax without equivalent semantics would weaken the generator's contract.