Skip to content

Track UML statechart semantics based on the OMG PSSM test suite #692

Open
0 of 27 issues completed
Open

Description

@fgmacedo

Why

The engine follows W3C SCXML, and every semantic decision is checked against the W3C SCXML test suite (tests/scxml/). UML state machine features (event deferral, choice, junction, entry/exit points, and others) keep being requested, but UML and SCXML disagree on several behaviors, and there was no executable reference here to settle them.

The OMG publishes one: PSSM 1.0 (Precise Semantics of UML State Machines) ships a machine-readable test suite with 103 tests and their expected traces. This issue tracks building UML statechart support on top of it, the same way SCXML support was built on the W3C suite. No UML-derived feature is merged before this reference exists.

Plan

Additive features ship in 3.x minors; only breaking changes wait for 4.0. Order is by user demand (requests and real usage in this and neighbor libraries), not by PSSM tests unlocked; PSSM cases are the acceptance check. 3.3.0 ships the reference, the bug fixes and the high-demand features. The UML pseudostates and deferral are used mostly in Spring and embedded code, so they follow in later releases.

Reference and fixes (3.3.0)

Features (3.3.0)

Later 3.x minors (UML constructs with low demand)

4.0 (breaking only)

Out of scope for now: ChangeEvent (covered by eventless transitions with guards), ProtocolStateMachine, state invariants. Until the whole suite passes, the docs describe the work as "based on PSSM", not as conformance. Class-level flags for conflicting behaviors live on StateChart; a UMLStatechart preset is only added if enough of them accumulate.

Related: #587, #660, #664.

Activity

  1. added this to the 3.3.0 milestone on Oct 14, 2026
  2. 6 remaining items

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions