Skip to content

Release 1.19.0

Choose a tag to compare

@reid-spencer reid-spencer released this 04 Apr 23:27
· 24 commits to main since this release

What's New

New CompletenessWarning Message Kind

A new validation message kind, CompletenessWarning, flags models that are incomplete for simulation, code generation, or analysis. Completeness warnings sit between UsageWarning and Warning in severity and are actionable (not ignorable), ensuring they surface prominently during validation.

  • New showCompletenessWarnings option in CommonOptions (default: true)
  • CLI flag: -c / --show-completeness-warnings
  • HOCON config key: show-completeness-warnings
  • New Completeness log level (displayed in yellow)

New Completeness Validation Checks

The following checks are now performed during full validation:

Entity checks:

  • Entity states without an on init clause to initialize state
  • Entity states with on init but no set statement
  • Command handlers in entities that don't send an event
  • Query handlers in entities that don't send a result
  • Entities without any on query clause
  • Entities without an outlet streamlet for publishing events
  • Entities with no handlers to process messages
  • FSM entities with 2+ states but no morph or become statements

Context checks:

  • Contexts with entities but no Sink streamlet to receive incoming messages
  • Streamlet handlers that receive messages but don't dispatch to entities via tell

Projector checks:

  • Projectors that don't reference any repository to persist their projection
  • Projectors whose handlers don't tell messages to a repository
  • Declared repository references in projectors that are never used in a tell statement

Handler checks:

  • Handlers with no executable statements (empty / ???)
  • Handlers with only prompt statements (no tell, send, morph, set, etc.)

Streaming checks (converted from generic Warning):

  • Isolated streamlets not connected to any connector
  • Sources without a downstream path to a sink
  • Sinks without an upstream path from a source
  • Unattached inlets and outlets

Repository Usage Tracking

Repositories are now tracked in UsageResolution. A repository that is not referenced by any tell statement, projector, or other definition anywhere in the model now produces a UsageWarning ("Repository X is unused").

Bug Fixes

  • Command/query completeness checks now entity-only: The "command processing should result in sending an event" and "query processing should result in sending a result" checks now only fire for entity handlers, not for streamlets, adaptors, or other processor types.
  • Empty definitions skipped: Completeness checks skip placeholder (???) definitions to avoid noise on incomplete models.

Infrastructure

  • Replaced peter-evans/repository-dispatch@v3 with gh api calls in the release workflow, fixing "Bad credentials" errors that prevented blog post dispatch since 1.17.0.
  • Fixed CommandTest to use symbolic severity references instead of hardcoded integers.

Compatibility

  • Additive: New CompletenessWarning kind, new showCompletenessWarnings option, new validation checks
  • Severity renumbering: Warning is now severity 5 (was 4), Error is 6 (was 5), SevereError is 7 (was 6). Code that compares via KindOfMessage objects (not raw integers) is unaffected. CLI exit codes based on highestSeverity will shift accordingly.
  • All existing APIs remain unchanged