Skip to content

Release v4.246.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 11:55
647b620

A specification now runs against the slice that declares it, and nothing else, so it states only what its slice owns.

Added

  • then invokes <Command> states a command the slice's reaction invokes, with the values it passes indented beneath, as ESM v34. A specification that states at least one invocation compares every recorded invocation in count and order, or as a set under then events in any order.
  • PLAY0815 reports a malformed then invokes line, and PLAY0816 reports a then invokes for a command no reaction of the specification's own slice invokes.
  • A specification run's new Invocations property lists the invocations its reactions made, accepted or refused, as SemanticRecordedInvocation values.

Changed

  • Only the specification's own slice runs: its reactions, captures and outbound publications. Other slices' reactions, captures and publications no longer run, so their facts never reach then, read-model or query assertions. A command another slice owns is still decided when the slice's reaction invokes it, so refusals and on refused branches behave as declared, but its events are not kept. State that hand-over with then invokes. See decision 0115.
  • PLAY0285 follows only the reactions, invocations and publications of the specification's own slice, so a specification that states another slice's event is refused at compile time.
  • Upgrade: a specification that stated another slice's events now fails. Move a published event to the outbound Translate slice's specification (when append <PrivateEvent>), and replace an invoked command's events with then invokes <Command>.
  • The Acme Commerce sample specifies each slice on its own, with new specifications in the slices that own the moved facts.
  • The canonical reactions, Acme admissions, protected command reads and described command handlers corpora are restated under the new rule.

Fixed

  • A command specification no longer passes while stating an event another slice publishes, such as SetProductPrice stating ProductPriceChanged.