Skip to content

Release v4.18.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 23:00
2b9fdb9

Chronicle hosts Screenplay's compiler for its projection language, and it is now the recorded authority for what projections, keys, constraints and event context mean at runtime (decision record 0001). This release brings the executable semantic model in line with Chronicle and admits much more of the language: validation rules, projection blocks and unique constraints. It also closes a batch of silent diagnostic gaps and makes MCP authoring preserve comments and declaration order.

Added

  • The executable semantic model admits validation rules beyond not empty: max/min (length on text, value on numbers), ==/!=, >/>=/</<= on numbers, length ==, and all >/all >= over collections of numbers. The reference executor evaluates them all (#209)
  • The executable semantic model admits every projection block the way Chronicle lowers it: several events in one from, children, nested, update-only join, every/all, remove with, remove via join, composite and literal keys, and the add/subtract/increment/decrement/count/clear mappings. The reference executor runs them all (#211)
  • The executable semantic model admits unique <property> on <Event> and unique event <Event> constraints, and the reference executor enforces them with Chronicle's semantics (#212)
  • One event-context catalog, matching Chronicle's EventContext, is shared by the compiler, the editor and the documentation. The compiler checks $eventContext paths against it (PLAY0295–PLAY0299) and the editor underlines invalid paths (#217)
  • MCP read-proposal has a dropped-comments view, and every proposal reports how many comments it drops (#216)
  • A workspace operation replaces one produced-event mapping source in place (#193)
  • New warnings:
    • PLAY0290: an import names something the application declares itself (#208)
    • PLAY0340: the same behavior is attached twice across folder files
    • PLAY0380: Chronicle's projection lowering drops part of a construct
    • PLAY0381: a projection-level key does not route events

Changed

  • Canonical printing keeps the authored order of declarations, also through MCP propose-ast edits and folder expansion (#221)
  • MCP PreserveTrivia edits replace literal values and whole mappings in place at every mapping site, keeping comments and blank lines (#216, #222)
  • propose-rename is refused only when opaque text actually names the declaration being renamed, and the conflict states the file, line and column (#215)
  • A projection-level key no longer decides which instance an event updates; key it on from, as Chronicle does (#219)
  • A reducer without a transition body is reported with guidance to declare a projection instead (#213)

Fixed

  • An import of a declaration from the same application no longer hides consistency diagnostics (#208)
  • A dotted path that continues past a scalar, concept or enum field is reported (PLAY0282/PLAY0287) instead of compiling silently (#201)
  • Module- and feature-level behaviors are no longer copied into every file when a model is expanded into a folder, nor dropped when a folder is compiled. Repeated copies in folders written by 4.17.0 are kept once, with a warning (#202)
  • not empty on a property it cannot apply to is reported at the rule, not at the application (#225)
  • The documentation lists PLAY0330–PLAY0336 as the warnings they are