Skip to content

Release v4.78.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 14:38
e842e04

Summary

Stage now renders event-triggered Screenplay reactions in Automation slices as Chronicle reactors, together with the slice's own commands, events, read models, projections and reducers. The Stage Host and the specification executor still refuse reactions until they run them.

Added

  • Event-triggered reactions render as Chronicle reactors: [Reactor("<semantic id>")] keeps the observer stable across renames, [OnceOnly] keeps replays from repeating effects, a where condition becomes a guard, invoked commands are returned for Arc to execute, and produced events are appended to the triggering event source without a stream. (part of #207)
  • Automation slices render their own commands (zero or more), events, read models, projections, reducers and queries. (part of #207)
  • STAGE-ESM-039 refuses a reaction whose condition, mapping or destination cannot be rendered without changing its meaning, such as a condition on an optional, composite or enumeration value, or a production that does not map every event property. (part of #207)
  • The rendering reference has a new page on reaction rendering, covering the reactor identity, replay, ordering and how live retries differ from Screenplay's reference evaluation: https://github.com/Cratis/Stage/blob/main/Documentation/reference/reaction-rendering.md (part of #207)

Changed

  • Clock, application, startup and shutdown triggers and opaque reaction bodies still fail STAGE-ESM-024, now naming the trigger kind; reactions that both produce and invoke, including different triggers on the same event, fail STAGE-ESM-037. (part of #207)
  • A command specification whose events would trigger a reaction fails STAGE-ESM-011, because the generated command specification does not settle reactions. (part of #207)