Supported Sismic subset

State Mate intentionally accepts only constructs that map directly and predictably to the generated flat python-statemachine class.

Statechart shape

A supported statechart has:

  • exactly one root state;
  • a compound root state;
  • an initial child declared on the root;
  • at least one direct child state;
  • no descendants below those direct children.

Supported child states

Direct children of the root may be:

  • BasicState;
  • FinalState.

Supported transitions

Transitions must:

  • originate from a direct root child;
  • target a direct root child;
  • declare an event;
  • be external transitions;
  • have no guard;
  • have no action;
  • use the default priority;
  • have no preconditions, postconditions, or invariants.

Repeated event names are supported. State Mate combines their transition declarations into one python-statemachine event expression.

Unsupported Sismic features

State Mate rejects:

  • nested compound states;
  • parallel states;
  • history states;
  • eventless transitions;
  • internal transitions;
  • guards;
  • transition actions;
  • non-default transition priorities;
  • state entry actions;
  • state exit actions;
  • state contracts;
  • transition contracts.

Python naming rules

State names are converted to uppercase Python identifiers for enum members. Event names are converted to valid Python identifiers for state-machine event attributes.

Generation fails if two distinct source names normalize to the same Python name. This prevents silent overwriting or ambiguous generated code.