@cratis/pi 7.66.0 → 7.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/corpus/product-sync.json +3 -3
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/realization-and-gap-fill.md +1 -1
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/atomic-batches-and-source-mappings.md +1 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +4 -3
- package/package/corpus/skills/cratis-screenplay-command-surface/references/date-comparisons.md +13 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +2 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/state-and-recovery.md +1 -0
- package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/references/public-keys-and-routes.md +4 -2
- package/package/corpus/skills/cratis-screenplay-model-review/references/report-template.md +2 -2
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/SKILL.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/phases.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/stop-or-assume.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/verdicts-and-modes.md +6 -1
- package/package/corpus/skills/cratis-screenplay-projections/SKILL.md +8 -1
- package/package/corpus/skills/cratis-screenplay-projections/references/pdl-grammar.md +42 -2
- package/package/corpus/skills/cratis-screenplay-projections/references/reducer-identity.md +88 -0
- package/package/corpus/skills/cratis-screenplay-projections/verification.json +2 -1
- package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +14 -7
- package/package/corpus/skills/cratis-screenplay-read-surface/references/equality-filters.md +1 -1
- package/package/corpus/skills/cratis-screenplay-read-surface/references/named-keys.md +168 -58
- package/package/corpus/skills/cratis-screenplay-read-surface/verification.json +2 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +1 -1
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-examples.md +2 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +3 -3
- package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +5 -7
- package/package/corpus/skills/cratis-screenplay-slice-design/references/public-boundaries-and-keys.md +5 -3
- package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md +7 -3
- package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +3 -2
- package/package/corpus/skills/cratis-screenplay-specifications/references/query-rejections.md +4 -0
- package/package/corpus/skills/cratis-screenplay-specifications/references/vocabulary.md +17 -0
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +3 -1
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/read-model-keys.md +46 -0
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +11 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +17 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +22 -8
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +31 -9
- package/package/corpus/skills/cratis-screenplay-toolchain/references/language-admission.md +15 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/production-routes-and-filters.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +3 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +1722 -76
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +3 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +64 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +8 -2
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +5 -4
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +12 -7
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/sandbox-and-specrunner.md +17 -0
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Contents
|
|
4
4
|
|
|
5
|
+
- Validation commands and the gate file
|
|
5
6
|
- Samples and preview fixtures
|
|
6
7
|
- Lexical and structural rules
|
|
7
8
|
- Exact numeric source mode
|
|
@@ -28,8 +29,8 @@ keeping the capture in Translate. No automatic split.
|
|
|
28
29
|
Requires Screenplay 4.176.0 or later; older compilers leave that shape unchecked.
|
|
29
30
|
Read
|
|
30
31
|
[public contracts](../../cratis-screenplay-automations-and-translations/references/public-events-and-direction.md).
|
|
31
|
-
View properties use trailing `key`;
|
|
32
|
-
|
|
32
|
+
View properties use trailing `key`; several parts select v27 (not v10), with a `by` block on
|
|
33
|
+
an optional single-instance query and equality filters on lists. Read [named keys](../../cratis-screenplay-read-surface/references/named-keys.md).
|
|
33
34
|
Production `stream Source.Stream` overrides and reaction/reducer `from Source[.Stream]`
|
|
34
35
|
select released v10: [routes and filters](production-routes-and-filters.md).
|
|
35
36
|
Qualifying non-route Double literals select v11;
|
|
@@ -57,6 +58,20 @@ by `for_Documentation/when_comparing_the_grammar_against_the_parsers.cs`),
|
|
|
57
58
|
Screenplay CI (`when_compiling_every_example.cs`) against repository main: the standalone
|
|
58
59
|
compiler; the compiler bundled in `cratis` can be older and lack the newest ESM versions.
|
|
59
60
|
|
|
61
|
+
## Validation commands and the gate file
|
|
62
|
+
|
|
63
|
+
```shell
|
|
64
|
+
screenplay <root> --warnaserror --no-color # V1; also reads <root>/screenplay.json
|
|
65
|
+
screenplay <root> --print-gate # effective gate and each value's source, no compile
|
|
66
|
+
screenplay <root> --format json # one JSON report: diagnostics, gate, exitCode
|
|
67
|
+
screenplay <root> --no-gate-file --check all # bypass the file for one run
|
|
68
|
+
screenplay test <root> # V4
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`screenplay.json` (authored, beside `.screenplay/`) holds `validation.checks`, `warningsAsErrors`, `scope`
|
|
72
|
+
and `openQuestions`; unknown keys or check names are refused (exit 2), never ignored. Details and
|
|
73
|
+
precedence: [verdicts](verdicts.md).
|
|
74
|
+
|
|
60
75
|
## Samples and preview fixtures
|
|
61
76
|
|
|
62
77
|
Invoicing is a warning-free syntax showcase, not a runnable whole-language proof.
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
- Explicit enum member numbers
|
|
9
9
|
- Reserved stored names and event pins
|
|
10
10
|
- Named keys, production routes and observer filters
|
|
11
|
+
- Reducer instance identity (PLAY0690)
|
|
11
12
|
- Caller identity, compliance and routes
|
|
12
13
|
- Specification metadata, callers, cases and locators
|
|
13
14
|
- Guarded interaction diagnostics
|
|
@@ -137,13 +138,25 @@ Target evidence: a renderer must admit ESM v16 and preserve `storedName`, or ref
|
|
|
137
138
|
| PLAY0665 | E | Invalid/duplicate/child-bearing/unresolved source/stream filter or filtered reaction with a non-event trigger |
|
|
138
139
|
| PLAY0666 | W | Filter excludes all statically known effective producer routes; C# only, handlers/foreign origins suppress it |
|
|
139
140
|
|
|
140
|
-
Queries and trigger reads have no PLAY0661 repair.
|
|
141
|
-
blocks
|
|
142
|
-
byte-identically to inference. Fixtures missing any part
|
|
141
|
+
Queries and trigger reads have no PLAY0661 repair. Flat composite view keys bind as v27;
|
|
142
|
+
projection or removal key blocks missing a part report PLAY0661 and bad parts PLAY0662.
|
|
143
|
+
One explicit key binds byte-identically to inference. Fixtures missing any part
|
|
144
|
+
report PLAY0351. Joins, children, `every`, `all`, `nested`, `variant`, reducers and
|
|
145
|
+
list-query `by` blocks over a composite-keyed view are PLAY0268.
|
|
143
146
|
Overrides/filters select released ESM v10; malformed routes also use PLAY0504.
|
|
144
147
|
Read read-surface `references/named-keys.md` and
|
|
145
148
|
[production routes and filters](production-routes-and-filters.md).
|
|
146
149
|
|
|
150
|
+
## Reducer instance identity (PLAY0690)
|
|
151
|
+
|
|
152
|
+
| Code | Severity | Meaning / fix |
|
|
153
|
+
| --- | --- | --- |
|
|
154
|
+
| PLAY0690 | W | A reducer instance is keyed by the event-source id, so a reducer-backed scalar query `by` another nominal type, or a reducer whose complete producers use several identity types, warns. Reducers cannot be re-keyed: use a projection with a property key on each `from`, or a join for existing instances |
|
|
155
|
+
|
|
156
|
+
Fails `--warnaserror`. Compares declared nominal types only where producers are known (command `for`, implicit or generated identifiers, reaction `for`); plain `produces` without `for`, reactions without `for`, captures, seeds and code are not compared. Native C# only: a clean editor proves nothing. Example and limits: projections [reducer identity](../../cratis-screenplay-projections/references/reducer-identity.md).
|
|
157
|
+
|
|
158
|
+
Requires Screenplay 4.170.0 or later (`screenplay --version`); an older compiler does not report it, and `cratis screenplay validate` reports it only when its bundled compiler is that new.
|
|
159
|
+
|
|
147
160
|
## Caller identity, compliance and routes
|
|
148
161
|
|
|
149
162
|
| Code | Severity | Meaning / fix |
|
|
@@ -307,8 +320,8 @@ identity details (0633–0646), compliance/subject checks, reaction identity
|
|
|
307
320
|
A shared catalog code is not proof that a check is implemented in both compilers.
|
|
308
321
|
|
|
309
322
|
C# CLI/MCP owns whole-application scoped diagnostics, opt-in completeness
|
|
310
|
-
(including PLAY0530–0537, PLAY0602–0606 and PLAY0652),
|
|
311
|
-
checks PLAY0650/0651, semantic binding and PLAY0546 (a negated claim targets optional,
|
|
323
|
+
(including PLAY0530–0537, PLAY0602–0606 and PLAY0652), reducer identity
|
|
324
|
+
PLAY0690, bound reaction gate checks PLAY0650/0651, semantic binding and PLAY0546 (a negated claim targets optional,
|
|
312
325
|
unavailable-subject or non-text data). The VS Code repair bridge is not a general
|
|
313
326
|
C# validator. A clean editor is not V1 for the complete application, V3 binding
|
|
314
327
|
or V4 execution. Run the CLI or MCP for those verdicts.
|
|
@@ -346,15 +359,16 @@ refusal reasons. Read [language admission](language-admission.md) before changin
|
|
|
346
359
|
| PLAY0785 | Ambiguous view path; use distinct aliases on repeated reads |
|
|
347
360
|
| PLAY0786 (I) | Eligible legacy model; preview typed preamble repair, individually review absence/conflict semantics |
|
|
348
361
|
| PLAY0787 (W) | Exact deprecated Studio text-rule pattern; repair to literal rule or equality, preserving message/severity |
|
|
349
|
-
| STAGE-ESM-043 | Atomic mode not realized, even in admitted v23–
|
|
362
|
+
| STAGE-ESM-043 | Atomic mode not realized, even in admitted v23–v26; retain declaration and gap-fill |
|
|
350
363
|
| STAGE-ESM-044 | Cratis C# renderer refuses protected reads despite v25 admission; semantic Host/executor support is separate; keep protection and gap-fill generated-app scope |
|
|
351
364
|
| STAGE-ESM-045 | Non-Error protected requirement; semantic Host/executor refuse before execution, including reaction-invoked commands; keep severity and report Unsupported |
|
|
352
365
|
| STAGE-IMPL-002 | Described handler body not realized by Stage, even Stub mode; no stubs emitted |
|
|
353
366
|
|
|
354
367
|
Invalid match syntax remains PLAY0367. Property/concept text rules bind v24;
|
|
355
368
|
`contains`/`starts with` in conditions only still fail PLAY0268. Stage rejects
|
|
356
|
-
v22/
|
|
357
|
-
bodies, batches or rendered protected reads (STAGE-ESM-044)
|
|
369
|
+
v22/v27 and mixed pairs with STAGE-ESM-016; v23–v26 admission does not implement
|
|
370
|
+
bodies, batches or rendered protected reads (STAGE-ESM-044), and the renderer refuses
|
|
371
|
+
v26 date comparisons with STAGE-ESM-046. Requires Stage 4.129.0
|
|
358
372
|
for semantic Host/executor protected reads; older engines refuse -044. Read
|
|
359
373
|
[language admission](language-admission.md) for the stricter Host outside-append guard.
|
|
360
374
|
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
- Generated values and responses (ESM v7)
|
|
12
12
|
- Released public boundaries and observer routes
|
|
13
13
|
- Chronological command date comparisons (ESM v26)
|
|
14
|
+
- Flat composite read-model keys (ESM v27)
|
|
14
15
|
- Code attachments (what binds, what never does)
|
|
15
16
|
- Refused (code, reason): fix, or record as a mode gap
|
|
16
17
|
- Not refused, but do not rely on it
|
|
@@ -41,7 +42,7 @@ Complete examples that bind live in `executable-example.md`, `pdl-example.md` (p
|
|
|
41
42
|
`automation-translate-example.md` (ESM v6) and `generated-responses-example.md` (ESM v7).
|
|
42
43
|
|
|
43
44
|
For atomic batches (v22), described handlers (v23), ordinal text rules (v24) and
|
|
44
|
-
protected reads (v25)
|
|
45
|
+
protected reads (v25), chronological command dates (v26) and composite keys (v27), read
|
|
45
46
|
[language admission](language-admission.md). A later
|
|
46
47
|
version alone does not enable either application opt-in.
|
|
47
48
|
|
|
@@ -86,10 +87,10 @@ Requires Screenplay 4.141.0 or later (`screenplay --version`) to bind concept co
|
|
|
86
87
|
none supplies identity and an admitted list query exists does conventional
|
|
87
88
|
`*Id` inference run (collection-key exclusions: read-surface `references/named-keys.md`).
|
|
88
89
|
Queryless read models need an explicit `key`. Explicit single keys preserve
|
|
89
|
-
equivalent inferred ESM bytes.
|
|
90
|
-
|
|
90
|
+
equivalent inferred ESM bytes. Flat composite read-model keys bind as v27
|
|
91
|
+
(see below). Collections and observable delivery bind.
|
|
91
92
|
Caller-supplied equality filters on collections also bind as ESM v14; context
|
|
92
|
-
sources, single-result filters, scope, performer and
|
|
93
|
+
sources, single-result filters, scope, performer and a list-query `by` block remain blocked.
|
|
93
94
|
- One projection per read model: `from`, `every`, `all` (one block per level), `join`,
|
|
94
95
|
`children`, `nested`, `remove with`, `remove via join` (binds; blocks the execution plan at the projection level, see below), `clear with`, counters, `add`,
|
|
95
96
|
`subtract`, `set`, `clear`, variants, and the identifier mapped from the projection's key (`xId = $eventSourceId` only for an event-source key).
|
|
@@ -264,15 +265,36 @@ DateTime input needs an offset or `Z`, else Validation rejects before rules, eve
|
|
|
264
265
|
for skipped comparisons. `then` matching stays ordinal. Invalid date literals or
|
|
265
266
|
offset-less DateTime literals in admitted comparisons report PLAY0273. Read
|
|
266
267
|
[date comparisons](../../cratis-screenplay-command-surface/references/date-comparisons.md)
|
|
267
|
-
for the complete window model and retained PLAY0268 refusals. Stage refuses
|
|
268
|
-
with STAGE-ESM-
|
|
268
|
+
for the complete window model and retained PLAY0268 refusals. The Stage renderer refuses
|
|
269
|
+
v26 date comparisons with STAGE-ESM-046, independently of standalone binding/reference execution.
|
|
270
|
+
|
|
271
|
+
## Flat composite read-model keys (ESM v27)
|
|
272
|
+
|
|
273
|
+
Requires Screenplay 4.204.0 (ESM v27; `screenplay --version`); older binders refuse a
|
|
274
|
+
read model with two or more `key` marks with PLAY0268. Binding admits a model with
|
|
275
|
+
several flat scalar key parts when:
|
|
276
|
+
|
|
277
|
+
- root `from` and `remove with` blocks name every part in an untyped `key` block;
|
|
278
|
+
- a list query narrows with equality filters, and an optional single-instance query
|
|
279
|
+
names every part in a `by` block;
|
|
280
|
+
- fixtures state every part (`given readmodel`, `then readmodel`, `then no readmodel`).
|
|
281
|
+
|
|
282
|
+
Models with one `key` mark keep their earlier version and bytes. Refused with PLAY0268:
|
|
283
|
+
joins, `children`, `remove via join`, `every`, `all`, `nested`, `clear with`, `variant`
|
|
284
|
+
and reducers on the composite-keyed read model, a list query with a `by` block, a
|
|
285
|
+
non-optional single-instance return, and command reads (PLAY0271, or PLAY0781
|
|
286
|
+
ByParts under `command reads protected`) or trigger reads that produce directly.
|
|
287
|
+
Stage refuses v27 with STAGE-ESM-016, independently of standalone binding and
|
|
288
|
+
reference execution. Read read-surface
|
|
289
|
+
[named keys](../../cratis-screenplay-read-surface/references/named-keys.md) for the
|
|
290
|
+
complete example.
|
|
269
291
|
|
|
270
292
|
## Code attachments (what binds, what never does)
|
|
271
293
|
|
|
272
294
|
Pending `handler implementation` beside unconditional `produces` binds as a described
|
|
273
295
|
command (v23). Its payload-only body returns Unsupported ImplementationBody when reached;
|
|
274
296
|
denial/validation specs still run. Read [language admission](language-admission.md) for
|
|
275
|
-
v22–
|
|
297
|
+
v22–v27 and [described handlers](../../cratis-screenplay-command-surface/references/described-handlers.md)
|
|
276
298
|
for the result contract. Attached handlers remain unbound.
|
|
277
299
|
|
|
278
300
|
Inline fences (`csharp`, `typescript`, `react`, `html`, `sql`) and `file <path>` attach
|
|
@@ -316,7 +338,7 @@ bodies still leave their owner non-executable.
|
|
|
316
338
|
| `Automation` or `Translate` slice, `reaction`, `capture`, `trigger`; `given clock`, `when clock`, `when trigger`, `when capture` | PLAY0268 | **older bundled compilers only**; current compilers bind them (ESM v6) |
|
|
317
339
|
| Unquoted `import Other.Contract` | PLAY0268 | external contract import is not bound |
|
|
318
340
|
| `pii` or `secret` on a concept | PLAY0268 | Older compilers refuse it outright. Current compilers admit v13 except enum/identity compliance and events mixing personal or explicitly subject-scoped secret values with explicit subject marks; see `compliance.md` in command-surface references |
|
|
319
|
-
| `query` with a
|
|
341
|
+
| `query` with a `by` block over a list, or `by ... from` context-derived arguments | PLAY0268 | a `by` block binds only on an optional single-instance query (v27). An optional scalar snapshot lookup, an unfiltered list (`RM[]`) and a list narrowed by one caller-supplied `by` key bind, in their `observable` form too |
|
|
320
342
|
| Context `from`, single-result filters, `scoped to`, `performer` queries | PLAY0268 | Typed query context, filtering of single results, opaque scope and query implementation remain unadmitted; each refusal names its reason. Caller-supplied collection equality filters bind as v14. `observable` goes in the return position (`=> observable RM[]`); as a body line it is PLAY0048 |
|
|
321
343
|
| `contains` or `starts with` in conditions only | PLAY0268 | conditions admit scalar equality and numeric ordering, plus same-primitive command date comparisons from v26; property/concept text rules bind as v24 |
|
|
322
344
|
| Date comparisons with mixed primitives, `$context` (including occurred), `today`, protected read paths, optional condition operands, concept rules or reaction `where` | PLAY0268 | v26 admits only command conditions and command/property literal validation rules |
|
|
@@ -338,7 +360,7 @@ bodies still leave their owner non-executable.
|
|
|
338
360
|
| `generated` or `returns` on an older compiler | PLAY0268 | admitted from ESM v7, see above |
|
|
339
361
|
| Operations or systems, `numbers exact` source mode | PLAY0268 | not admitted by any supported ESM version; one such construct leaves the **whole** application without an executable model. Event sources/streams/routes instead bind as ESM v8 on the current compiler (`sources-and-streams.md`) |
|
|
340
362
|
| Spec of a gated command or query without `given caller` | PLAY0389 | module and feature gates count |
|
|
341
|
-
| `given` or `then readmodel` missing key parts | PLAY0351 | explicit `key` marks replace inference; composite fixtures need every part
|
|
363
|
+
| `given` or `then readmodel` missing key parts | PLAY0351 | explicit `key` marks replace inference; composite fixtures need every part (v27) |
|
|
342
364
|
| When-less spec asserting events or errors | PLAY0352 | |
|
|
343
365
|
| `null` in command or event values | PLAY0350 | Chronicle semantics, not only a binder limit: an optional fact is a separate event (nullable event properties are CHR0012) |
|
|
344
366
|
| `for` with no unambiguous destination type | PLAY0273 | |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- Copyright (c) Cratis. All rights reserved. -->
|
|
2
2
|
<!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
|
|
3
3
|
|
|
4
|
-
# Language admission: batches, described bodies, text, reads and
|
|
4
|
+
# Language admission: batches, described bodies, text, reads, dates and composite keys
|
|
5
5
|
|
|
6
6
|
Select the highest version required by constructs in the model. A newer version
|
|
7
7
|
alone never opts into either application mode. Consumers must explicitly admit
|
|
@@ -9,11 +9,12 @@ exact language/semantic pairs; binding, reference execution and rendering are se
|
|
|
9
9
|
|
|
10
10
|
| ESM | Selecting construct | Binding/reference behavior | Stage boundary |
|
|
11
11
|
| --- | --- | --- | --- |
|
|
12
|
-
| v22 | Application-root `reaction batches atomic` | Direct productions per trigger occurrence and each selected refusal branch are separate atomic batches; commands remain independent | v22 refused STAGE-ESM-016; mode in admitted v23–
|
|
12
|
+
| v22 | Application-root `reaction batches atomic` | Direct productions per trigger occurrence and each selected refusal branch are separate atomic batches; commands remain independent | v22 refused STAGE-ESM-016; mode in admitted v23–v26 refused STAGE-ESM-043 |
|
|
13
13
|
| v23 | Pending `handler implementation` beside unconditional `produces` | Payload-only body; PLAY0695 information; reaching body gives Unsupported ImplementationBody | v23 admitted, body refused STAGE-IMPL-002 in renderer/Host/executor, even Stub mode |
|
|
14
14
|
| v24 | `contains`, `not contains`, `starts with`, `ends with` property/concept rules | Ordinal UTF-16, absent optional passes; not text-condition operators | v24 admitted; semantic Host/executor and generated ordinal comparisons preserve rules |
|
|
15
15
|
| v25 | Application-root `command reads protected` | Admitted reads in requirements/mappings, absence Validation, matching decide/commit changes Conflict | v25 admitted; Cratis C# renderer refuses STAGE-ESM-044; semantic Host/executor execute reads, non-Error protected requirements refuse STAGE-ESM-045 |
|
|
16
|
-
| v26 | Chronological command Date/DateTime comparisons | Same-primitive `==`, `!=`, `>`, `>=`, `<`, `<=`; DateTime UTC ticks and pre-rule offset validation | v26
|
|
16
|
+
| v26 | Chronological command Date/DateTime comparisons | Same-primitive `==`, `!=`, `>`, `>=`, `<`, `<=`; DateTime UTC ticks and pre-rule offset validation | v26 admitted; Host/executor run it, renderer and legacy engines refuse STAGE-ESM-046 |
|
|
17
|
+
| v27 | A read model with two or more `key` marks | Untyped projection `key` blocks, equality-filter lists, single-instance `by` blocks, per-part fixtures | v27 refused STAGE-ESM-016 |
|
|
17
18
|
|
|
18
19
|
Requires Screenplay 4.181.0 or later (`screenplay --version`) for atomic batches; older compilers cannot admit the preamble.
|
|
19
20
|
|
|
@@ -25,6 +26,8 @@ Requires Screenplay 4.193.0 or later (`screenplay --version`) for protected read
|
|
|
25
26
|
|
|
26
27
|
Requires Screenplay 4.199.0 (ESM v26; `screenplay --version`) for date comparisons; older binders report PLAY0268.
|
|
27
28
|
|
|
29
|
+
Requires Screenplay 4.204.0 (ESM v27; `screenplay --version`) for composite read-model keys; older binders report PLAY0268.
|
|
30
|
+
|
|
28
31
|
Requires Stage 4.124.0 for v24 text-rule admission (`cratis --version` identifies the CLI bundle); older renderers refuse v24 with STAGE-ESM-016. V23 admission alone does not implement described bodies.
|
|
29
32
|
|
|
30
33
|
Requires Stage 4.127.0 for v25 version admission; older renderers refuse v25 with STAGE-ESM-016. The Cratis C# renderer still refuses protected reads with STAGE-ESM-044; no artifacts are emitted.
|
|
@@ -56,8 +59,15 @@ positions, invalid date literals or offset-less DateTime literals use PLAY0273.
|
|
|
56
59
|
Read [date comparisons](../../cratis-screenplay-command-surface/references/date-comparisons.md)
|
|
57
60
|
for the complete interval example and input/target boundaries.
|
|
58
61
|
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
For v27, read read-surface [named keys](../../cratis-screenplay-read-surface/references/named-keys.md)
|
|
63
|
+
for the one complete example and every refusal. Only a model with a read model of two or
|
|
64
|
+
more key parts selects v27; one `key` mark keeps its earlier version and bytes. To see the
|
|
65
|
+
selected version, open the model with the `screenplay` MCP server and call `read-workspace`
|
|
66
|
+
with `view` `executable-model`: `languageVersion` reads `27.0`.
|
|
67
|
+
|
|
68
|
+
Stage's semantic engines admit exact v1–v21 and v23–v26 pairs. V22/v27 and mixed
|
|
69
|
+
pairs refuse STAGE-ESM-016. Requires Stage 4.135.0 for v26 admission; older Stage
|
|
70
|
+
refuses v26 with STAGE-ESM-016. Admission of v23–v26 is not admission of described bodies,
|
|
61
71
|
atomic mode or rendered protected reads. A CLI may bundle an older compiler/Stage pair: run no-write render
|
|
62
72
|
admission rather than transferring a standalone verdict. Pattern diagnostics arise
|
|
63
73
|
in Screenplay before rendering; diagnostic arguments add no ESM version or new tool.
|
|
@@ -103,7 +103,7 @@ and wrong source/stream, and unrouted input. Read [specification route forms](so
|
|
|
103
103
|
|
|
104
104
|
ESM v10 carries reaction system identity, production route overrides and observer filters as one
|
|
105
105
|
frozen contract. A consumer admitting v10 must include all three, not just identity.
|
|
106
|
-
Composite **read-model** keys are separate and
|
|
106
|
+
Composite **read-model** keys are separate and select v27 (`language-admission.md`).
|
|
107
107
|
|
|
108
108
|
The CLI/Stage pair admits through its newest version to construct checks: production overrides
|
|
109
109
|
still refuse STAGE-ESM-036; reaction/reducer filters render on the semantic path,
|
|
@@ -21,9 +21,9 @@ and concept compliance (v13) render.
|
|
|
21
21
|
|
|
22
22
|
## Current admission
|
|
23
23
|
|
|
24
|
-
Stage admits exact ESM v1–v21 and v23–
|
|
24
|
+
Stage admits exact ESM v1–v21 and v23–v26 pairs; v22/v27 and mixed pairs
|
|
25
25
|
refuse STAGE-ESM-016. Chronological command Date/DateTime comparisons select v26:
|
|
26
|
-
|
|
26
|
+
the Host and executor run them, but the renderer refuses STAGE-ESM-046, so they are not renderable. Keep the
|
|
27
27
|
rule and use authorized gap-fill. Version admission is separate from construct support.
|
|
28
28
|
Requires Stage 4.106.0 for v18 admission; older Stage refuses it with `STAGE-ESM-016`.
|
|
29
29
|
For generated-concept v20/v21 admission and construct prerequisites, read
|
|
@@ -46,7 +46,7 @@ This table is a reading of the renderer's admission, not a render result: run th
|
|
|
46
46
|
| Area | Renders | Refused (code) |
|
|
47
47
|
| --- | --- | --- |
|
|
48
48
|
| Slice kinds | `StateChange`, `StateView`, supported event-triggered `Automation` with Chronicle reactors | Translate, captures, non-event triggers, opaque bodies, clock/trigger/capture specs (`-024`); claim-reading/opaque `runs as` gates (`-034`), mixed effects from one handler (`-037`, redelivery can duplicate events), unsupported conditions/destinations/mappings (`-039`). Keep refused reactions whole |
|
|
49
|
-
| Queries | optional keyed snapshot lookups; snapshot or observable collections, keyed or unkeyed, with v14 equality filters | context/single-result filters, opaque `scoped to`/`performer` and
|
|
49
|
+
| Queries | optional keyed snapshot lookups; snapshot or observable collections, keyed or unkeyed, with v14 equality filters | context/single-result filters, opaque `scoped to`/`performer` and a list-query `by` block: PLAY0268; v27 composite keys: STAGE-ESM-016. DateTime filters and required parameters after optional filters refuse `-010`; filter-name collisions refuse `-012`; concept arguments retain Arc validation, including nested members/elements; nullable keys or optional concept filters with `not empty` refuse `-010` rather than changing null behavior |
|
|
50
50
|
| Authorization | role-only, authenticated, opaque pure policies, claim conditions with Uuid, Date, DateTime or text targets (numeric and Boolean claim matches render as always false), `not`/and/or; roles read through the identity's `RoleClaimType` | role-claim URIs, nested opaque policies, unresolved or non-portable policies, no single identifier, opaque-policy subjects that are not text, Uuid, Date or DateTime (`STAGE-ESM-015`, a restriction separate from declarative claim targets) |
|
|
51
51
|
| Event sources, streams, routes (ESM v8) | rendered, including routed read-model/query companion replay | reserved stored names, unformattable routed fixtures (`STAGE-ESM-030`) |
|
|
52
52
|
| Numbers, case tables | whole numbers as `long` from ESM v8; case tables | out-of-`int` literals below v8 (`STAGE-ESM-031`) |
|