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.