Repository navigation
Release v4.18.0
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 ==, andall >/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-onlyjoin,every/all,remove with,remove via join, composite and literal keys, and theadd/subtract/increment/decrement/count/clearmappings. The reference executor runs them all (#211) - The executable semantic model admits
unique <property> on <Event>andunique 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$eventContextpaths against it (PLAY0295–PLAY0299) and the editor underlines invalid paths (#217) - MCP
read-proposalhas adropped-commentsview, 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: animportnames something the application declares itself (#208)PLAY0340: the same behavior is attached twice across folder filesPLAY0380: Chronicle's projection lowering drops part of a constructPLAY0381: a projection-level key does not route events
Changed
- Canonical printing keeps the authored order of declarations, also through MCP
propose-astedits and folder expansion (#221) - MCP
PreserveTriviaedits replace literal values and whole mappings in place at every mapping site, keeping comments and blank lines (#216, #222) propose-renameis refused only when opaque text actually names the declaration being renamed, and the conflict states the file, line and column (#215)- A projection-level
keyno longer decides which instance an event updates; key it onfrom, as Chronicle does (#219) - A reducer without a transition body is reported with guidance to declare a projection instead (#213)
Fixed
- An
importof 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 emptyon a property it cannot apply to is reported at the rule, not at the application (#225)- The documentation lists
PLAY0330–PLAY0336as the warnings they are