@cratis/pi 7.29.1 → 7.31.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/skills/cratis-chronicle-client-dotnet/SKILL.md +14 -0
- package/package/corpus/skills/cratis-chronicle-client-dotnet/references/pinned-generation-delivery.md +92 -0
- package/package/corpus/skills/cratis-chronicle-event-type-migration/SKILL.md +24 -2
- package/package/corpus/skills/cratis-chronicle-event-type-migration/references/pinned-generations.md +114 -0
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +9 -4
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/audit-format.md +4 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +3 -3
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +5 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/public-events-and-direction.md +137 -0
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/verification.json +5 -1
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +15 -16
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +4 -4
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/product-sources.md +15 -0
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/verification.json +3 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +8 -9
- package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +1 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +4 -4
- package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +2 -2
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +1 -1
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +2 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +4 -4
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +7 -1
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +7 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/screen-authoring-workflow.md +5 -3
- package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +10 -11
- package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/references/public-keys-and-routes.md +32 -0
- package/package/corpus/skills/cratis-screenplay-model-review/verification.json +1 -0
- package/package/corpus/skills/cratis-screenplay-projections/SKILL.md +11 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +19 -16
- package/package/corpus/skills/cratis-screenplay-read-surface/references/named-keys.md +122 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/verification.json +3 -0
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +9 -6
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +3 -3
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +11 -0
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +2 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +32 -9
- package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md +20 -13
- package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +12 -10
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +3 -2
- package/package/corpus/skills/cratis-screenplay-specifications/references/source-notes.md +16 -0
- package/package/corpus/skills/cratis-screenplay-specifications/verification.json +2 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +2 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +2 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +19 -10
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +12 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +55 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +7 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +30 -10
- package/package/corpus/skills/cratis-screenplay-toolchain/references/production-routes-and-filters.md +119 -0
- package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +8 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +11 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +813 -0
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +7 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +6 -6
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +6 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +56 -28
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +7 -1
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +4 -3
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +11 -12
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +14 -3
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/case-tables-and-whole-numbers.md +8 -6
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +3 -1
- package/package.json +1 -1
|
@@ -113,10 +113,14 @@ report and slice `documentation`, and continue.
|
|
|
113
113
|
slice is `read model -> screen -> command -> event`. Pick the builder (declarative projection first, reducer when
|
|
114
114
|
guards cannot be expressed). The query follows the business view: a list where people scan a
|
|
115
115
|
list, a keyed lookup where they open one thing. For **executable or renderable scope**, every
|
|
116
|
-
read model
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
`
|
|
116
|
+
read model needs one unambiguous identity: explicit trailing `key` first, else
|
|
117
|
+
single-instance queries agreeing on `by xId XId`, else conventional `*Id` inference
|
|
118
|
+
only with an admitted list query and no single-instance identifier. Queryless views
|
|
119
|
+
need explicit `key`; read-surface `references/named-keys.md` gives the exact fallback.
|
|
120
|
+
The identifier equals the projection's effective key (decision table in
|
|
121
|
+
`references/read-model-design.md`; Stage rule in `references/admission.md` of
|
|
122
|
+
`cratis-stage-rendering-and-sandbox`). Collections and observable delivery bind at
|
|
123
|
+
4.135.0; check renderer admission separately.
|
|
120
124
|
Whose rows is part of the view; a caller-supplied filter is not access control.
|
|
121
125
|
7. **Screens, Level 1.** `data <RM> via query <Q>` plus `action <Command>` per thing the user
|
|
122
126
|
can do there. Build each slice as read model, screen, command, event. A screen acting on an
|
|
@@ -149,11 +153,13 @@ report and slice `documentation`, and continue.
|
|
|
149
153
|
### Compiler contracts (the tool enforces these)
|
|
150
154
|
|
|
151
155
|
- At most one `identifier` per command; never on an event property; never on a read-model
|
|
152
|
-
property (identity comes from
|
|
156
|
+
property (use `key`; otherwise identity comes from single-instance `by`, or
|
|
157
|
+
conventional `*Id` only with an admitted list query and no single-instance identifier).
|
|
158
|
+
Queryless read models need explicit `key`.
|
|
153
159
|
- At most one builder (projection or reducer) per read model (`PLAY0191`).
|
|
154
|
-
- A query's `by` goes on its own body line.
|
|
155
|
-
|
|
156
|
-
|
|
160
|
+
- A query's `by` goes on its own body line. At 4.135.0, optional keyed and collection
|
|
161
|
+
queries bind, including observable delivery; scalar `by` must be caller-supplied.
|
|
162
|
+
Filtered, scoped, performer-backed and composite-block queries remain `PLAY0268`.
|
|
157
163
|
- A `unique` constraint names a property the event declares directly; the constraint name is
|
|
158
164
|
its identity (renaming starts an empty index).
|
|
159
165
|
- Unauthorized is `then denied`; a broken rule is `then error`; authorization runs first.
|
|
@@ -181,6 +187,21 @@ report and slice `documentation`, and continue.
|
|
|
181
187
|
Ask `references/review-questions.md` (reachability, forms in disguise, secrets, fan-in,
|
|
182
188
|
collections, invariants, who sees which rows); report a finding only with a domain consequence.
|
|
183
189
|
|
|
190
|
+
## Public boundaries and view identity
|
|
191
|
+
|
|
192
|
+
Translate crosses an application boundary: inbound consumes foreign public events
|
|
193
|
+
or data and produces private facts; outbound folds private facts into exactly one
|
|
194
|
+
local public event type. Commands never publish public events. Put direction in
|
|
195
|
+
the slice outline and trace every exported field; read automations-and-translations
|
|
196
|
+
`references/public-events-and-direction.md` for the released ESM v9 contract.
|
|
197
|
+
|
|
198
|
+
Mark view identity with trailing `key`. Use a composite key for independent view
|
|
199
|
+
coordinates (resource + period), a natural single id for one entity's state.
|
|
200
|
+
Supply every named part in single-instance queries and command/trigger reads;
|
|
201
|
+
see read-surface `references/named-keys.md`. Composite view keys remain
|
|
202
|
+
unadmitted at 4.135.0 (PLAY0268, #599), unlike admitted composite stream routes.
|
|
203
|
+
Keep the true identity and report the gap rather than inventing a concatenated id.
|
|
204
|
+
|
|
184
205
|
## Identity-affecting edits on an existing model
|
|
185
206
|
|
|
186
207
|
Classify an edit by whether it changes catalog addresses. When `.screenplay/identities.json`
|
|
@@ -203,7 +224,9 @@ Slice design is done when these hold; otherwise report what is open.
|
|
|
203
224
|
- [ ] Every command has a refusal inventory (success, each refusal with layer and message,
|
|
204
225
|
denied persona); every gated command and query has a `then denied` row.
|
|
205
226
|
- [ ] Every event is past tense, a specific change, and consumed or justified.
|
|
206
|
-
- [ ] Every read model has a consumer and,
|
|
227
|
+
- [ ] Every read model has a consumer and, for executable scope, one identity: explicit
|
|
228
|
+
`key`, else agreeing single-instance `by`, else unambiguous `*Id` only with an
|
|
229
|
+
admitted list query and no single-instance identifier. Queryless views use `key`.
|
|
207
230
|
- [ ] Every StateView's `documentation` gives a reason per contributing event; every read-model
|
|
208
231
|
field and screen field is traced; every `from` event sets a field.
|
|
209
232
|
- [ ] No `screen` without `data` or `action`; every acting screen has `data` or a stated
|
package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md
CHANGED
|
@@ -118,21 +118,27 @@ it stays.
|
|
|
118
118
|
|
|
119
119
|
| The person... | Design-mode query | Executable/renderable scope |
|
|
120
120
|
|---|---|---|
|
|
121
|
-
| opens one thing | `XById => RM optional` + `by xId XId` |
|
|
122
|
-
| scans a list | `ListX => RM[]` (optionally `observable`, `filter`) |
|
|
123
|
-
| sees their own rows | list with scope/`from` on the caller |
|
|
121
|
+
| opens one thing | `XById => RM optional` + `by xId XId` | binds at 4.135.0 with caller-supplied `by`; check target renderer |
|
|
122
|
+
| scans a list | `ListX => RM[]` (optionally `observable`, `filter`) | collection and observable delivery bind at 4.135.0; filters remain PLAY0268; check target renderer |
|
|
123
|
+
| sees their own rows | list with scope/`from` on the caller | scope and context-derived `by` remain PLAY0268; access rules are part of the view, enforced by the target |
|
|
124
124
|
| sees a site-wide figure | singleton read model, `from <Event> key literal "global"` on every `from` (a projection-level `key` routes nothing, PLAY0381; example in Screenplay `projections/keys.md`, "Literal keys") | check the binding (V3, `cratis-screenplay-toolchain`) |
|
|
125
125
|
|
|
126
126
|
- `observable` when people are expected to see others' or automation's changes while looking
|
|
127
|
-
(worklists, status awaiting an outside answer); one-shot otherwise.
|
|
128
|
-
|
|
127
|
+
(worklists, status awaiting an outside answer); one-shot otherwise. Observable delivery
|
|
128
|
+
binds at 4.135.0; renderer support is separate. If access can be revoked mid-session,
|
|
129
|
+
record that the target re-checks per emission.
|
|
129
130
|
- Never model paging or page size (no syntax, Screenplay#140). State the order in the query
|
|
130
131
|
`description` ("oldest first"; queries do not accept `documentation`); an unbounded list is a review question.
|
|
131
132
|
- A gated keyed query needs its own denial spec.
|
|
132
133
|
|
|
133
|
-
Never drop a list query
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
Never drop a business-required list query to satisfy an old compiler or renderer;
|
|
135
|
+
record any actual capability gap. At 4.135.0, explicit trailing `key` takes precedence
|
|
136
|
+
for read-model identity. Otherwise single-instance queries in the owning slice must
|
|
137
|
+
agree on one `by` property declared on the read model. Only with no single-instance
|
|
138
|
+
identifier and an admitted collection/list query does conventional `*Id` inference
|
|
139
|
+
run; queryless views need explicit `key`. The fallback excludes collection-query key
|
|
140
|
+
candidates when that leaves one identifier (full algorithm: read-surface
|
|
141
|
+
`references/named-keys.md`). The identifier equals the projection's effective key:
|
|
136
142
|
|
|
137
143
|
| Effective key | Executable model | Renderable model (Stage) |
|
|
138
144
|
|---|---|---|
|
|
@@ -182,8 +188,8 @@ has children, not a single value.
|
|
|
182
188
|
If a view must stop showing cancelled items, use `remove with <Event>` and pin it with
|
|
183
189
|
`then no readmodel <RM> for "<key>"`. If it keeps them, map a status literal from that event
|
|
184
190
|
instead. The slice `description`, the projection and every spec of the view must agree.
|
|
185
|
-
A complete example (marina berths; the
|
|
186
|
-
|
|
191
|
+
A complete example (marina berths; the keyed query supplies the view's identity
|
|
192
|
+
for the `then no readmodel` assertion; explicit `key` could supply it instead):
|
|
187
193
|
|
|
188
194
|
```screenplay
|
|
189
195
|
domain Harbourlight.Berths
|
|
@@ -277,7 +283,8 @@ module Berths
|
|
|
277
283
|
- Every consumer that needs state has its read model (a blank creation form and a direct reaction
|
|
278
284
|
with a documented no-pending-work reason need none); every read model has a consumer.
|
|
279
285
|
- Every field traced (`field-lineage.md`).
|
|
280
|
-
- Executable
|
|
281
|
-
|
|
282
|
-
no
|
|
286
|
+
- Executable scope: one identity per read model: explicit `key`, else agreeing
|
|
287
|
+
single-instance `by`, else unambiguous `*Id` only with an admitted list query and
|
|
288
|
+
no single-instance identifier. Queryless views need explicit `key`. The identifier
|
|
289
|
+
equals the projection's key (table above); check target renderer admission separately.
|
|
283
290
|
- Design-only shapes listed with the V3 code they cause.
|
|
@@ -26,16 +26,9 @@ source is the single flow model.
|
|
|
26
26
|
|
|
27
27
|
## Verified product sources
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
| --- | --- | --- |
|
|
31
|
-
| `Cratis.Screenplay` | `4.31.0` | Original parser, binder and reference execution evidence |
|
|
32
|
-
| `Cratis.Screenplay` | main `fd18129` | Inline facts, `optional` and clock spelling; changed examples compiled |
|
|
33
|
-
| `Cratis.Screenplay` | `4.68.0` (`79801bf`) | ESM v7 generated fixtures and `then returns` (decision 0026, `specifications.md` "Generated fixtures and return expectations"): the excerpt matches the compiled example in `cratis-screenplay-toolchain`, whose specifications run in the reference runner |
|
|
34
|
-
| `Cratis.Screenplay` | `4.66.0` (`c89198b`) | ESM v6 specification actions and reaction cascades, `then no readmodel`, `$strings` rejections, `invokes` caller rule; probed with the standalone tool and its MCP server |
|
|
29
|
+
Retained inline-fact update evidence: [source notes](references/source-notes.md).
|
|
35
30
|
|
|
36
|
-
The
|
|
37
|
-
`specifications.md` at that main commit (after v4.52.0). This pass compiles the
|
|
38
|
-
changed examples; it does not rerun the reference runner.
|
|
31
|
+
The historical parser/binder/reference-runner version table is in the source notes.
|
|
39
32
|
|
|
40
33
|
Specification syntax was checked against Screenplay v4.127.0 `specifications.md`;
|
|
41
34
|
older probes in the table remain historical. Pins: `cratis-screenplay-toolchain`
|
|
@@ -207,6 +200,15 @@ Read [references/actions-beyond-commands.md](references/actions-beyond-commands.
|
|
|
207
200
|
From ESM v6 every action sets reactions off and `then` events compare every new fact, the action's and the reactions'. A specification whose action is a command goes in the slice that declares the command. A false `PLAY0285` on a cascade under `cratis` before 3.28.2 is tool skew, not a modeling error: never delete the `then` line to silence it.
|
|
208
201
|
Read [references/reactions-and-cascades.md](references/reactions-and-cascades.md) when a specification's expected events include what a reaction appends, when a cascade, clock tick or invoked command is involved, or when `cratis` reports `PLAY0285` on a model that `screenplay` accepts (it holds the "Version skew: cascades and the false `PLAY0285` (cratis before 3.28.2)" section).
|
|
209
202
|
|
|
203
|
+
## Published-event specifications (released ESM v9)
|
|
204
|
+
|
|
205
|
+
Use `when append <PrivateEvent>` then `then <PublicEvent>` for outbound publication,
|
|
206
|
+
not `then readmodel`. The follow-up event list is exhaustive and ordered. Read
|
|
207
|
+
[publication example and fold cases](../cratis-screenplay-automations-and-translations/references/public-events-and-direction.md).
|
|
208
|
+
Events-source captures and reached opaque event-target reducers return typed
|
|
209
|
+
Unsupported, not a pass. Composite view fixtures need every key part but remain
|
|
210
|
+
unadmitted (PLAY0268, #599); see read-surface `references/named-keys.md`.
|
|
211
|
+
|
|
210
212
|
## Reusable fixtures, routes and recovery intent
|
|
211
213
|
|
|
212
214
|
Use typed `example` declarations for repeated event/command/read-model values;
|
|
@@ -278,7 +280,7 @@ For view specifications:
|
|
|
278
280
|
## Verify
|
|
279
281
|
|
|
280
282
|
- [ ] Validate the complete root with warnings as errors, naming tool/version.
|
|
281
|
-
Current standalone pin: 4.
|
|
283
|
+
Current standalone pin: 4.135.0. Run specification examples through
|
|
282
284
|
`screenplay test`; expected unadmitted syntax reports unbound, not passed.
|
|
283
285
|
- [ ] Executable diagnostics are clean too: `PLAY0350`, `PLAY0352`, `PLAY0388`,
|
|
284
286
|
`PLAY0389` and `PLAY0273` are only reported at binding.
|
package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md
CHANGED
|
@@ -94,8 +94,9 @@ so UUID casing is immaterial. Composite mappings supply each named part once,
|
|
|
94
94
|
using literals only; encoding escapes `%`/`|` and preserves declaration order.
|
|
95
95
|
Source: v4.127.0 `event-sources.md`, `specifications.md`, `diagnostics.md`.
|
|
96
96
|
|
|
97
|
-
CLI 3.46.1
|
|
98
|
-
|
|
97
|
+
Previous CLI 3.46.1 refused above v7; CLI 3.50.0/Stage 4.67.0 reaches route
|
|
98
|
+
checks through v10. Routed read-model/query replay can still refuse
|
|
99
|
+
STAGE-ESM-030. Source/reference success never establishes target parity.
|
|
99
100
|
|
|
100
101
|
Command and read-model examples refuse routes (PLAY0526). Effective role and
|
|
101
102
|
`for` checks use the inherited or replaced route: inherited `no stream` on a
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- Copyright (c) Cratis. All rights reserved. -->
|
|
2
|
+
<!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
|
|
3
|
+
|
|
4
|
+
# Retained source notes
|
|
5
|
+
|
|
6
|
+
| Package | Version | Purpose |
|
|
7
|
+
| --- | --- | --- |
|
|
8
|
+
| `Cratis.Screenplay` | `4.31.0` | Original parser, binder and reference execution evidence |
|
|
9
|
+
| `Cratis.Screenplay` | main `fd18129` | Inline facts, `optional` and clock spelling; changed examples compiled |
|
|
10
|
+
| `Cratis.Screenplay` | `4.68.0` (`79801bf`) | ESM v7 generated fixtures and `then returns` (decision 0026, `specifications.md` "Generated fixtures and return expectations"): the excerpt matches the compiled example in `cratis-screenplay-toolchain`, whose specifications run in the reference runner |
|
|
11
|
+
| `Cratis.Screenplay` | `4.66.0` (`c89198b`) | ESM v6 specification actions and reaction cascades, `then no readmodel`, `$strings` rejections, `invokes` caller rule; probed with the standalone tool and its MCP server |
|
|
12
|
+
|
|
13
|
+
The inline-facts update followed `commands.md`, `events.md`, `types.md` and
|
|
14
|
+
`specifications.md` at main `fd18129` (after v4.52.0). That pass compiled the
|
|
15
|
+
changed examples; it did not rerun the reference runner. Keep this historical
|
|
16
|
+
source evidence distinct from the current source-check gate and V4 execution.
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
{ "kind": "play-compiles" },
|
|
7
7
|
{
|
|
8
8
|
"kind": "skill-contains",
|
|
9
|
-
"value": "main `fd18129`"
|
|
9
|
+
"value": "main `fd18129`", "file": "references/source-notes.md"
|
|
10
10
|
},
|
|
11
11
|
{ "kind": "skill-contains", "value": "Generated fixtures and return expectations (ESM v7)" },
|
|
12
12
|
{ "kind": "skill-contains", "value": "`then returns` counts as a success outcome but does not relax event comparison", "file": "references/generated-fixtures.md" },
|
|
13
13
|
{ "kind": "skill-contains", "value": "`Unsupported(IdentityAllocation)`", "file": "references/generated-fixtures.md" },
|
|
14
|
-
{ "kind": "skill-contains", "value": "4.68.0" },
|
|
14
|
+
{ "kind": "skill-contains", "value": "4.68.0", "file": "references/source-notes.md" },
|
|
15
15
|
{
|
|
16
16
|
"kind": "skill-contains",
|
|
17
17
|
"value": "Inline events are ordinary named facts", "file": "references/worked-example.md"
|
|
@@ -88,8 +88,8 @@ option, mark it `ASSUMED` in the slice or module `documentation` and in the sess
|
|
|
88
88
|
namespace, process-stream routing and concurrency scope apart
|
|
89
89
|
(`references/chronicle-boundaries.md`). Declared `eventsource`/`stream`/`streamId` and
|
|
90
90
|
command/specification routes bind and reference-execute as ESM v8 on 4.125.0.
|
|
91
|
-
CLI 3.
|
|
92
|
-
contract
|
|
91
|
+
CLI 3.50.0 reaches Stage construct checks through v10; keep the routing
|
|
92
|
+
contract when target admission requires gap-fill. Forms/boundaries:
|
|
93
93
|
toolchain `references/sources-and-streams.md`. A `generated identifier` (ESM v7, standalone 4.68.0; not rendered by Stage yet) is
|
|
94
94
|
generated fresh on every acceptance: it is not a retry identity, and generated values give no
|
|
95
95
|
idempotency, retry or deduplication guarantee. When a retry must find the same stream, the caller
|
|
@@ -216,8 +216,8 @@ Some event stores decide consistency by a query over tagged events instead of on
|
|
|
216
216
|
check to event types, source type or stream (`concurrency` block, Screenplay
|
|
217
217
|
`commands.md`). Legacy concurrency metadata still fails binding (PLAY0271),
|
|
218
218
|
but sources/streams/routes bind and reference-execute as ESM v8 on 4.125.0.
|
|
219
|
-
Route admission does not make a view read protected. CLI 3.
|
|
220
|
-
|
|
219
|
+
Route admission does not make a view read protected. CLI 3.50.0 reaches Stage construct checks
|
|
220
|
+
through v10; see toolchain `references/versions.md`. Model the stream by business
|
|
221
221
|
identity; when a rule truly needs a cross-stream decision, record it (see
|
|
222
222
|
`consistency-and-concurrency.md`) rather than inventing a construct.
|
|
223
223
|
|
|
@@ -16,6 +16,6 @@
|
|
|
16
16
|
{ "kind": "skill-contains", "value": "bind and reference-execute as ESM v8" },
|
|
17
17
|
{ "kind": "skill-contains", "value": "STAGE-ESM-026" },
|
|
18
18
|
{ "kind": "skill-contains", "value": "generated values give no\n idempotency, retry or deduplication guarantee" },
|
|
19
|
-
{ "kind": "skill-contains", "value": "
|
|
19
|
+
{ "kind": "skill-contains", "value": "Stage construct checks through v10" }
|
|
20
20
|
]
|
|
21
21
|
}
|
|
@@ -22,16 +22,16 @@ files is one application: always check the folder, never one file of it.
|
|
|
22
22
|
|
|
23
23
|
When choosing or upgrading a tool, or checking version-specific capabilities, read `references/versions.md`; it is the only version table, and other skills point to it. For exact diagnostic codes, MCP names/parameters and standalone CLI options, search the large published [references/screenplay-contract.json](references/screenplay-contract.json), pinned by [references/screenplay-contract.version](references/screenplay-contract.version), rather than loading it in full. Locate a diagnostic by its exact `code` (for example `"code": "PLAY0029"`), a tool by its exact `name` (for example `"name": "read-workspace"`), or a command in `cliCommands`; read the matched object for retirement, parameters or options. [references/screenplay-contract-exceptions.json](references/screenplay-contract-exceptions.json) records reasoned exceptions for historical statements; it does not change the current contract.
|
|
24
24
|
|
|
25
|
-
The standalone pin is Screenplay 4.
|
|
26
|
-
Stage 4.
|
|
25
|
+
The standalone pin is Screenplay 4.135.0. CLI 3.50.0 bundles Screenplay 4.131.0,
|
|
26
|
+
Stage 4.67.0 and Cratis.Arc.Screenplay 22.54.0. The single version table records
|
|
27
27
|
released source evidence and historical probes separately; do not relabel an old
|
|
28
28
|
render/browser result as a probe of the current packages.
|
|
29
29
|
|
|
30
30
|
Historical screens-release evidence: CLI 3.40.7 / Stage 4.51.1 / bundled
|
|
31
31
|
Screenplay 4.114.0 opened the canonical corpus with `executableReady true`
|
|
32
32
|
and the stdio transcript exposed 37 tools; standalone language 4.122.0 was
|
|
33
|
-
recorded in that vector. These retained results are not a rerun on CLI 3.
|
|
34
|
-
or Screenplay 4.
|
|
33
|
+
recorded in that vector. These retained results are not a rerun on CLI 3.50.0
|
|
34
|
+
or Screenplay 4.135.0.
|
|
35
35
|
|
|
36
36
|
## Ground rules
|
|
37
37
|
|
|
@@ -67,7 +67,7 @@ or Screenplay 4.131.0.
|
|
|
67
67
|
| Scope/checks | `--scope <address>`, `--check <names>`; a scoped pass is not whole-application success | Discover installed validation options |
|
|
68
68
|
| Reference execution | `screenplay test <root>` or MCP `run-specifications` | Discover bundled MCP capability; target tests are not V4 |
|
|
69
69
|
| MCP | `screenplay mcp <root>`; discover schemas | `cratis screenplay mcp [root]`; registered by `cratis ai install` |
|
|
70
|
-
| Render version boundary | Binder admission is not Stage admission | CLI 3.
|
|
70
|
+
| Render version boundary | Binder admission is not Stage admission | CLI 3.50.0 passes through ESM v10 to Stage construct admission; newer versions: `CLI-RENDER-004` |
|
|
71
71
|
|
|
72
72
|
Read `references/versions.md` when you need the exact messages, exit codes or the MCP roots bug.
|
|
73
73
|
|
|
@@ -108,9 +108,16 @@ changes with the root folder name.
|
|
|
108
108
|
older Stage probes. Current CLI admits v7 to planning, but its v7 corpus gets
|
|
109
109
|
Stage generated-value/response refusals `STAGE-ESM-028`/`029`, not a blanket
|
|
110
110
|
compiler refusal. Run admission before claiming a particular model renders.
|
|
111
|
-
- **Event sources, streams and routes** bind as ESM v8 at 4.125.0
|
|
112
|
-
|
|
113
|
-
mode remain
|
|
111
|
+
- **Event sources, streams and routes** bind as ESM v8 at 4.125.0.
|
|
112
|
+
CLI 3.50.0/Stage 4.67.0 reaches construct admission through v10, not blanket
|
|
113
|
+
rendering. Operations and exact numeric source mode remain unadmitted.
|
|
114
|
+
Details: `references/sources-and-streams.md` and `references/versions.md`.
|
|
115
|
+
- **Released v9/v10 and published v11:** public contracts and direction select v9;
|
|
116
|
+
reaction identity, production overrides and observer filters select frozen v10;
|
|
117
|
+
qualifying retained non-route Double literals select v11 at 4.135.0.
|
|
118
|
+
Composite view keys remain authoring-only (PLAY0268, #599), while one explicit
|
|
119
|
+
`key` binds. Read `references/production-routes-and-filters.md` and read-surface
|
|
120
|
+
`references/named-keys.md`; version freeze and numeric boundaries: `references/versions.md`.
|
|
114
121
|
|
|
115
122
|
- **Caller/compliance metadata** at 4.127.0: `$identity` aliases caller built-ins;
|
|
116
123
|
additional identity details are metadata and executable reads still refuse.
|
|
@@ -157,8 +164,10 @@ Read [references/diagnostics.md](references/diagnostics.md) when a PLAY, STAGE o
|
|
|
157
164
|
still walk lineage. See diagnostics for editor versus C#-only checks.
|
|
158
165
|
6. Without reaction `runs as` an invoke is caller-less. Declare its trusted role
|
|
159
166
|
(ESM v10), keep the gate, and reference-test; CLI/Stage support is separate.
|
|
160
|
-
7.
|
|
161
|
-
|
|
167
|
+
7. Mark read-model identity with trailing `key`, not `identifier`. Otherwise single-instance
|
|
168
|
+
queries must agree on `by`; only with none and an admitted list query can `*Id`
|
|
169
|
+
inference run. Queryless views need `key` (read-surface `references/named-keys.md`).
|
|
170
|
+
Align projection keys. Multipart keys remain PLAY0268 (#599).
|
|
162
171
|
8. Projection `key` routes only on `from`; joins never create; `all` is per source.
|
|
163
172
|
9. `null` only for optional read-model properties in specifications.
|
|
164
173
|
10. `then` events are exhaustive and ordered; after `when append` they list only what followed.
|
|
@@ -12,7 +12,18 @@
|
|
|
12
12
|
- PDL quick reference (most forms are compiled in `pdl-example.md` or `cheat-sheet-example.md`; `remove via join` and `$eventContext.occurred` are not)
|
|
13
13
|
- Specification forms
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Released boundary forms: `public event X`, `event X from "store"`, Translate
|
|
16
|
+
`direction inbound|outbound`, event-target `projection/reducer P => PublicEvent`,
|
|
17
|
+
and capture `source events` with `from ForeignEvent` select v9. Read
|
|
18
|
+
[public contracts](../../cratis-screenplay-automations-and-translations/references/public-events-and-direction.md).
|
|
19
|
+
View properties use trailing `key`; multipart `by` query/read blocks remain
|
|
20
|
+
PLAY0268 (#599), not v10. Read [named keys](../../cratis-screenplay-read-surface/references/named-keys.md).
|
|
21
|
+
Production `stream Source.Stream` overrides and reaction/reducer `from Source[.Stream]`
|
|
22
|
+
select released v10: [routes and filters](production-routes-and-filters.md).
|
|
23
|
+
Qualifying non-route Double literals select published v11 at 4.135.0;
|
|
24
|
+
`numbers exact` does not bind. See `versions.md` for freeze and numeric boundaries.
|
|
25
|
+
|
|
26
|
+
Current pins: standalone Screenplay 4.135.0 / CLI 3.50.0; `versions.md` is the
|
|
16
27
|
single table. Compile evidence below keeps its historical tool labels.
|
|
17
28
|
|
|
18
29
|
The syntax lives in compiled example files next to this one (each is a Markdown file holding
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
- Warnings that hide defects (always validate with `--warnings-as-errors`)
|
|
6
6
|
- Source reference and identifier checks
|
|
7
|
+
- Public events and translation direction
|
|
8
|
+
- Named keys, production routes and observer filters
|
|
7
9
|
- Caller identity, compliance and routes
|
|
8
10
|
- Specification metadata, callers, cases and locators
|
|
9
11
|
- Guarded interaction diagnostics
|
|
@@ -49,6 +51,53 @@ At Screenplay 4.127.0 these are V1 source checks, not binding-only gaps:
|
|
|
49
51
|
|
|
50
52
|
Legacy compliance spellings (`@pii`/`@sensitive`) do not evade PLAY0515.
|
|
51
53
|
|
|
54
|
+
## Public events and translation direction
|
|
55
|
+
|
|
56
|
+
Current at Screenplay 4.135.0; all are errors. These constructs bind as released
|
|
57
|
+
ESM v9, except public/foreign imports without local shapes (PLAY0268).
|
|
58
|
+
|
|
59
|
+
| Code | Meaning / fix |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| PLAY0607 | A command produces a public event; move publication to outbound Translate |
|
|
62
|
+
| PLAY0608 | Local public production outside explicit outbound Translate |
|
|
63
|
+
| PLAY0609 | Outbound translation has zero or several local public event types; repeated instances of one type count once |
|
|
64
|
+
| PLAY0610 | Foreign public consumption outside explicit inbound Translate |
|
|
65
|
+
| PLAY0611 | Outbound consumes a public or foreign event; consume private local facts |
|
|
66
|
+
| PLAY0612 | Inbound produces a public or foreign event; produce private local facts |
|
|
67
|
+
| PLAY0613 | Foreign public event produced locally; translate to a private event |
|
|
68
|
+
| PLAY0614 | Public metadata without explicit direction; typed repair declares inbound/outbound only when exactly one direction fits |
|
|
69
|
+
| PLAY0615 | Outbound contains an external-data capture |
|
|
70
|
+
| PLAY0616 | Explicit inbound consumes private or local events instead of public foreign events |
|
|
71
|
+
| PLAY0617 | Outbound produces a private event instead of its one local public type |
|
|
72
|
+
| PLAY0618 | Event-target projection/reducer outside explicit outbound Translate |
|
|
73
|
+
| PLAY0619 | `source events` capture outside explicit inbound Translate |
|
|
74
|
+
| PLAY0620 | Missing, malformed or repeated `from <Event>` in `source events` |
|
|
75
|
+
|
|
76
|
+
Only PLAY0614 in this range has a repair. Legacy directionless translations
|
|
77
|
+
without public metadata stay inbound. PLAY0027 also covers malformed, repeated
|
|
78
|
+
or non-Translate direction. Repair discovery uses `repair-capabilities`, workspace
|
|
79
|
+
`repairs`, then revision-checked `propose-repair`; do not guess a direction.
|
|
80
|
+
See automations-and-translations `references/public-events-and-direction.md`.
|
|
81
|
+
|
|
82
|
+
## Named keys, production routes and observer filters
|
|
83
|
+
|
|
84
|
+
| Code | Severity | Meaning / fix |
|
|
85
|
+
| --- | --- | --- |
|
|
86
|
+
| PLAY0660 | E | Invalid top-level read-model key owner/modifier/type; multipart parts must be scalar; no repair |
|
|
87
|
+
| PLAY0661 | E | Missing single-instance lookup parts; repair **command reads only** if every missing part has one same-named compatible source, preserving authored mappings and refusing ambiguity |
|
|
88
|
+
| PLAY0662 | E | Invalid block/shape, duplicate or unknown part, incompatible/optional/collection/literal read source; block needs at least two distinct parts; no repair |
|
|
89
|
+
| PLAY0663 | E | Route on reaction/refusal-branch production; only command event productions override routes |
|
|
90
|
+
| PLAY0664 | W | Override repeats complete command route; typed repair removes the redundant override |
|
|
91
|
+
| PLAY0665 | E | Invalid/duplicate/child-bearing/unresolved source/stream filter or filtered reaction with a non-event trigger |
|
|
92
|
+
| PLAY0666 | W | Filter excludes all statically known effective producer routes; C# only, handlers/foreign origins suppress it |
|
|
93
|
+
|
|
94
|
+
Queries and trigger reads have no PLAY0661 repair. Composite view keys, query
|
|
95
|
+
blocks and their fixtures remain PLAY0268 (#599), while one explicit key binds
|
|
96
|
+
byte-identically to inference. Fixtures missing any part report PLAY0351.
|
|
97
|
+
Overrides/filters select released ESM v10; malformed routes also use PLAY0504.
|
|
98
|
+
Read read-surface `references/named-keys.md` and
|
|
99
|
+
[production routes and filters](production-routes-and-filters.md).
|
|
100
|
+
|
|
52
101
|
## Caller identity, compliance and routes
|
|
53
102
|
|
|
54
103
|
Source authority: v4.127.0 `diagnostics.md`, `identity.md`, `concepts.md`,
|
|
@@ -263,9 +312,12 @@ Report each as `code file:line one-line meaning`; never paste more than about 30
|
|
|
263
312
|
|
|
264
313
|
## Render admission (V5): `STAGE-*`, `CLI-RENDER-*`, `STAGE-CRATIS-*`
|
|
265
314
|
Full table with causes: `renderable-subset.md`. The Stage 4.24.x rows below
|
|
266
|
-
retain historical source/probe evidence. Current CLI 3.
|
|
267
|
-
|
|
268
|
-
STAGE-ESM-
|
|
315
|
+
retain historical source/probe evidence. Current CLI 3.50.0/Stage 4.67.0 admits
|
|
316
|
+
through v10 to construct checks; above it is CLI-RENDER-004 (direct Stage:
|
|
317
|
+
STAGE-ESM-016). Publication STAGE-ESM-032, foreign facts/event captures 033,
|
|
318
|
+
reaction identity 034, reaction filters 035 and production overrides 036 remain
|
|
319
|
+
refused; reducer filters render. Previous CLI 3.46.1 admitted through v7; its
|
|
320
|
+
v7 corpus received STAGE-ESM-028/029, not the older v7 version gate.
|
|
269
321
|
Codes in the historical snapshot:
|
|
270
322
|
| Code | Meaning |
|
|
271
323
|
|---|---|
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
# Documentation contradictions and which side to trust
|
|
2
2
|
|
|
3
|
-
Current pins are Screenplay 4.
|
|
3
|
+
Current pins are Screenplay 4.135.0 / CLI 3.50.0 (`versions.md`). This is a
|
|
4
4
|
**historical** contradiction inventory, not a claim that all listed defects still
|
|
5
5
|
exist. Current grammar documents exact numbers and free description placement;
|
|
6
|
-
sources/routes bind as ESM v8; PLAY0515 is a source error; CLI
|
|
6
|
+
sources/routes bind as ESM v8; PLAY0515 is a source error; CLI admits through
|
|
7
|
+
v10 to Stage construct checks. At `v4.135.0:Documentation/screenplay/interoperability.md:133–137`
|
|
8
|
+
v11 is still labeled "claimed, unreleased"; Versions.cs admits it and decision
|
|
9
|
+
0066 freezes it on package publication. The corpus follows source and 0066.
|
|
7
10
|
|
|
8
11
|
At v4.127.0 `concepts.md` links the shipped purpose declarations/checks/record
|
|
9
12
|
but its final identifier section still calls them later phases. `purposes.md`,
|
|
@@ -40,11 +43,11 @@ read from source or documentation.
|
|
|
40
43
|
| 15 | literal keys | `key literal "global"` vs `key "global"` | both compile; prefer `literal` |
|
|
41
44
|
| 16 | query admission | `D/queries.md:74` now says live, filtered, scoped and performer queries are not admitted | the binder also rejects collection queries and a missing `by`, which stay undocumented [probed] |
|
|
42
45
|
| 17 | `@pii` | `D/concepts.md:3,33` "Chronicle applies `@pii` and `@sensitive` rules automatically" | the binder rejects any compliance attribute (PLAY0268); keep it, report V3 blocked. `@sensitive` means an operational secret (`[Encrypted]` + `[NotAudited]`; Screenplay decision 0034); the pinned tools (standalone 4.68.0, bundle 4.66.0) do **not** report `PLAY0515` (`@pii` from 4.69.1, `@sensitive` from 4.84.1): there only Chronicle catches either attribute on an event-source identifier, at build time of the generated code (CHR0034 for `@pii`, CHR0052 for `@sensitive`) |
|
|
43
|
-
| 18 | read-model identity | `D/readmodels.md:32` "from the keyed query" |
|
|
46
|
+
| 18 | read-model identity | `D/readmodels.md:32` "from the keyed query" | at 4.135.0 explicit `key` wins; else single-instance queries agree on one read-model `by` property; only with none and an admitted list query does conventional `*Id` inference run (collection-key exclusions: read-surface `references/named-keys.md`). Queryless views need explicit `key` |
|
|
44
47
|
| 19 | `$strings` constraint messages | `D/constraints.md:31` vs `D/internationalization.md:55` | the compiler keeps the key; realization localizes |
|
|
45
48
|
| 20 | composite key braces | optional in the EBNF; both forms in docs | both fine |
|
|
46
49
|
| 21 | counters list | `D/projections/index.md:54` lists only increment and decrement | `count` exists too [probed] |
|
|
47
|
-
| 22 | ESM version allocation | older text and decisions 0023 and 0024 give exact numbers, operations, streams and reads fixed numbers (v7 to v11) | use actual released binder selection: v7
|
|
50
|
+
| 22 | ESM version allocation | older text and decisions 0023 and 0024 give exact numbers, operations, streams and reads fixed numbers (v7 to v11) | use actual released binder selection: v7 responses, v8 routing, v9 public boundaries, v10 identity/routes/filters, v11 qualifying retained non-route Double literals at 4.135.0; operations and `numbers exact` source mode remain unadmitted. Never infer current admission from older proposed allocations |
|
|
48
51
|
| 23 | claim conditions | the condition grammar lists `==` | claims need `matches` (PLAY0120) [probed] |
|
|
49
52
|
| 24 | `numbers exact` | released in 4.64.0 as syntax only, but absent from `D/grammar.md`; documented only in `D/diagnostics.md` (PLAY0508 to PLAY0513) | the compiler: it parses, never binds (PLAY0268, "not admitted by any supported executable model (ESM) version yet"), PLAY0001 on older compilers [probed] |
|
|
50
53
|
| 25 | command `concurrency` | `D/commands.md:609` says the executable model "does not bind the `concurrency` block yet" | the binder reports PLAY0271 as an **error**, not a silent skip (`SemanticModelBinder.Commands.cs:32-38`) |
|
|
@@ -6,15 +6,17 @@
|
|
|
6
6
|
- Admitted on both compilers
|
|
7
7
|
- Admitted from Screenplay 4.61 (ESM v6): standalone tool and cratis 3.28.2 or later
|
|
8
8
|
- Generated values and responses (ESM v7): standalone 4.68.0 or later only
|
|
9
|
+
- Released public boundaries and observer routes
|
|
9
10
|
- Code attachments (what binds, what never does)
|
|
10
11
|
- Refused (code, reason): fix, or record as a mode gap
|
|
11
12
|
- Not refused, but do not rely on it
|
|
12
13
|
- Never do this to reach V3
|
|
13
14
|
|
|
14
|
-
Current pins are Screenplay 4.
|
|
15
|
+
Current pins are Screenplay 4.135.0 / CLI 3.50.0 (`versions.md`). Detailed
|
|
15
16
|
4.66.0/4.68.0 binder probes below retain their historical labels. Current source
|
|
16
|
-
admits
|
|
17
|
-
|
|
17
|
+
admits routes as ESM v8, public/direction constructs as v9, identity/overrides/filters
|
|
18
|
+
as v10 and qualifying non-route Double literals as v11. Operations,
|
|
19
|
+
`numbers exact` source mode and reaction refusals/redelivery remain unadmitted. Use the actual
|
|
18
20
|
binder before promoting an older probe to a current capability claim.
|
|
19
21
|
|
|
20
22
|
What the binder admits, and what it refuses with which code. The answer depends on the
|
|
@@ -66,10 +68,15 @@ Authority: v4.127.0 `context.md`, `identity.md`, `concepts.md`, `events.md`, `pu
|
|
|
66
68
|
<commandProperty>`.
|
|
67
69
|
- `constraint ... unique <prop> on <Event>`. Admission is separate from the open Chronicle
|
|
68
70
|
durability defects (`versions.md`): never treat admission as proof of uniqueness.
|
|
69
|
-
- A `readmodel` with one
|
|
70
|
-
in
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
- A `readmodel` with one explicit trailing `key`, or an unambiguous inferred key:
|
|
72
|
+
single-instance queries in the owning slice agreeing on `by xId XId`; only if
|
|
73
|
+
none supplies identity and an admitted list query exists does conventional
|
|
74
|
+
`*Id` inference run (collection-key exclusions: read-surface `references/named-keys.md`).
|
|
75
|
+
Queryless read models need an explicit `key`. Explicit single keys preserve
|
|
76
|
+
equivalent inferred ESM bytes. Composite read-model keys, query `by` blocks and
|
|
77
|
+
their fixtures remain PLAY0268 (#599), not the 4.129.0 authoring delivery's
|
|
78
|
+
executable admission. Collections and observable delivery bind; filters, scope,
|
|
79
|
+
performer and context-derived `by` remain separate blockers.
|
|
73
80
|
- One projection per read model: `from`, `every`, `all` (one block per level), `join`,
|
|
74
81
|
`children`, `nested`, `remove with`, `remove via join` (binds; blocks the execution plan at the projection level, see below), `clear with`, counters, `add`,
|
|
75
82
|
`subtract`, `set`, `clear`, variants, and the identifier mapped from the projection's key (`xId = $eventSourceId` only for an event-source key).
|
|
@@ -87,7 +94,7 @@ Authority: v4.127.0 `context.md`, `identity.md`, `concepts.md`, `events.md`, `pu
|
|
|
87
94
|
...` with an explicit `for`. Without a declared actor, a gated invocation denies.
|
|
88
95
|
On 4.125.0 reaction `runs as system role "<Role>"` supplies the actor and
|
|
89
96
|
selects ESM v10; keep the gate. CLI 3.41.0's older compiler rejected this syntax;
|
|
90
|
-
|
|
97
|
+
CLI 3.50.0's bundle supports it, but Stage refuses reaction identity with STAGE-ESM-034.
|
|
91
98
|
Standalone reference execution admits it.
|
|
92
99
|
- Application `trigger` declarations and `when trigger` specifications.
|
|
93
100
|
- `slice Translate` with `capture` (`key`, `map ... translate`, `append ... when x from "a"
|
|
@@ -133,6 +140,19 @@ Stage#201), so they bind and run but are not rendered: gap-fill with the model a
|
|
|
133
140
|
- A reaction-invoked command that reaches generation is `Unsupported(IdentityAllocation)`; response-only commands run
|
|
134
141
|
and discard the response. Generated values give no idempotency, retry or deduplication guarantee.
|
|
135
142
|
|
|
143
|
+
## Released public boundaries and observer routes
|
|
144
|
+
|
|
145
|
+
Public/origin events, explicit Translate direction, event-target builders and
|
|
146
|
+
`source events` captures bind as ESM v9 from 4.117.0. Publication folds execute;
|
|
147
|
+
source-event captures and reached opaque event-target reducers return typed
|
|
148
|
+
Unsupported. Public/foreign imports still lack a local shape and refuse PLAY0268.
|
|
149
|
+
See automations-and-translations `references/public-events-and-direction.md`.
|
|
150
|
+
Production overrides and reaction/reducer filters bind and select released v10;
|
|
151
|
+
filters match routed source/stream names only. Read
|
|
152
|
+
[production routes and filters](production-routes-and-filters.md).
|
|
153
|
+
Qualifying retained non-route Double literals bind/reference-execute as v11 on
|
|
154
|
+
4.135.0, unlike `numbers exact`; see `versions.md`.
|
|
155
|
+
|
|
136
156
|
## Code attachments (what binds, what never does)
|
|
137
157
|
|
|
138
158
|
Inline fences (`csharp`, `typescript`, `react`, `html`, `sql`) and `file <path>` attach
|
|
@@ -176,7 +196,7 @@ bodies still leave their owner non-executable.
|
|
|
176
196
|
| `Automation` or `Translate` slice, `reaction`, `capture`, `trigger`; `given clock`, `when clock`, `when trigger`, `when capture` | PLAY0268 | **cratis before 3.28.2 bundles only** (4.60.1); messages in `versions.md` |
|
|
177
197
|
| Unquoted `import Other.Contract` | PLAY0268 | external contract import is not bound |
|
|
178
198
|
| `pii` or `secret` on any concept (also alias/legacy markers) | PLAY0268 | Compliance requires portable data-subject semantics; scopes/qualifiers do not admit it. Secret provider mapping is `[Encrypted]` + `[NotAudited]`, not a bind/render claim |
|
|
179
|
-
| `query` returning a collection (`RM[]`), or without exactly one caller-supplied `by` | PLAY0268 |
|
|
199
|
+
| `query` returning a collection (`RM[]`), or without exactly one caller-supplied scalar `by` | PLAY0268 | Current 4.135.0 boundary: composite `by` blocks remain unadmitted (#599); optional scalar snapshot lookup binds |
|
|
180
200
|
| `observable`, `filter`, `scoped to`, `performer` queries | PLAY0268 | "uses delivery, filtering, scope, or implementation behavior outside the first ESM v1 vertical." `observable` goes in the return position (`=> observable RM optional`); as a body line it is PLAY0048 |
|
|
181
201
|
| `contains` or `starts with` in conditions | PLAY0268 | equality and numeric ordering only |
|
|
182
202
|
| Date or DateTime comparison, `today` | PLAY0268 | no runtime date value |
|
|
@@ -198,7 +218,7 @@ bodies still leave their owner non-executable.
|
|
|
198
218
|
| `generated` or `returns` on a compiler before 4.68.0 (4.66.0 and 4.67.0 refuse; 4.66.0 is bundled in cratis 3.28.x) | PLAY0268 | admitted from standalone 4.68.0 (ESM v7), see above |
|
|
199
219
|
| Operations or systems, `numbers exact`, reaction refusals/redelivery | 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`) |
|
|
200
220
|
| Spec of a gated command or query without `given caller` | PLAY0389 | module and feature gates count |
|
|
201
|
-
| `given` or `then readmodel` missing
|
|
221
|
+
| `given` or `then readmodel` missing key parts | PLAY0351 | explicit `key` marks replace inference; composite fixtures need every part but remain unadmitted (#599) |
|
|
202
222
|
| When-less spec asserting events or errors | PLAY0352 | |
|
|
203
223
|
| `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) |
|
|
204
224
|
| `for` with no unambiguous destination type | PLAY0273 | |
|