Skip to content

Release v4.98.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 00:12
2f9e810

Summary

Commands whose productions are conditional (produces <Event> when <condition>) now render, run in the Stage Host and are verified by the spec runner. State-change slices may declare several commands. Screenplay's canonical v15 generated-values corpus now passes three-way: the reference, Stage's spec runner and the rendered application agree.

Added

  • A conditional production renders as a guarded event in the generated command handler. The condition is evaluated over the command's values and generated values, and productions whose condition does not hold are skipped. When every production is skipped, the command is accepted without appending. (#360)
  • Freshness guards on generated event sources (ESM v15) apply only to productions that are taken, so a skipped production never causes a false concurrency rejection. (#360)
  • The Stage Host and the spec runner execute only taken productions, matching Screenplay's reference evaluation. (#360)
  • A state-change slice may declare several commands; each renders with its own record, validator and response, alongside the slice's shared events and read models. (#360)

Changed

  • STAGE-ESM-004 now refuses only state-change slices without commands. STAGE-ESM-006 still refuses expression conditions and enumeration operands in production conditions. (#360)