Repository navigation
Release v4.160.0
Changed
- The Cratis renderer no longer refuses
STAGE-ESM-044for a command that has protected reads and produces an event under an append-time constraint. The rendered application, the Stage executor and the reference evaluator fail in the same order: a missing read, then the requirements, then the constraint. Still refused withSTAGE-ESM-044: a read path in aproduces whencondition or destination, a read-path mapping to an optional/collection/composite/differently typed property, and reads combined with generated-value freshness scopes. (#557) - A command whose event takes a unique-value constraint's value from a protected read renders (the validator no longer assumes the constrained mapping is a command property).
- A protected command may now combine its read-backed requirements with validated request concepts (
STAGE-ESM-005no longer refuses it). Requirements of a protected command are guards inHandle, so the order is concept validation, then the reads, then the requirements, the same as the reference. Commands without reads keep the refusal. (#409) - A specification that expects the triggering command's own rejection (a message only that command declares) renders although the command's event triggers a reaction: a rejected command appends nothing, so no reaction runs (
STAGE-ESM-011no longer refuses it). (#503)
Fixed
- Acme Commerce commands
ApproveProductForSale,WithdrawProduct(reads plus a unique constraint),AddToBasketandCheckOut(read-backed requirement plus validated concepts) were refused by the renderer although the executor ran them.
Part of #503. Proof: three-way conformance when_comparing_protected_reads_with_constraints, ..._with_validated_concepts, ..._with_unique_values and when_comparing_rejections_before_a_reaction; Reference/Stage/Rendered all pass. The canonical race vectors now render (conformance matrix updated).