@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
|
@@ -105,7 +105,7 @@ Checked at Screenplay 4.127.0: `$identity.<property>` is the same caller value a
|
|
|
105
105
|
is supported, not deprecated. Historical `cratis` CLI 3.41.0 bundled Screenplay 4.114.0, which predated both:
|
|
106
106
|
its parser rejected a top-level `identity` block (`PLAY0001`), and with `--executable` it read a
|
|
107
107
|
`$identity.<property>` mapping as a raw expression (`PLAY0268`). Those checks used standalone 4.127.0;
|
|
108
|
-
they are not current CLI 3.
|
|
108
|
+
they are not current CLI 3.50.0/Screenplay 4.131.0 parser claims. Check current renderer
|
|
109
109
|
admission separately before choosing caller mappings. Built-ins are `id`, `name`, `userName`,
|
|
110
110
|
`isAuthenticated`, `roles`, `claims.<name>` (everything after `claims.` is opaque).
|
|
111
111
|
Bare `$identity` reports PLAY0152; unknown properties report PLAY0155. Only
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
## Generated values and responses (ESM v7)
|
|
2
2
|
|
|
3
3
|
A `generated` command property and `returns` response bind and reference-execute
|
|
4
|
-
as ESM v7 (checked at 4.68.0). Current pins are standalone Screenplay 4.
|
|
5
|
-
and CLI 3.
|
|
4
|
+
as ESM v7 (checked at 4.68.0). Current pins are standalone Screenplay 4.135.0
|
|
5
|
+
and CLI 3.50.0 (bundled Screenplay 4.131.0/Stage 4.67.0); `cratis-screenplay-toolchain`
|
|
6
6
|
`references/versions.md` owns the table. CLI#261 is closed: CLI now admits v7
|
|
7
7
|
to Stage planning. The historical CLI 3.41.0 v7 canonical corpus received Stage
|
|
8
8
|
generated-value and response refusals STAGE-ESM-028/029. Do not turn this into a blanket compiler
|
|
@@ -45,8 +45,8 @@ Rules (all read at `v4.68.0`):
|
|
|
45
45
|
|
|
46
46
|
Operations remain authorable/unadmitted (PLAY0268). Named event sources,
|
|
47
47
|
streams and command/specification routes instead bind and reference-execute as
|
|
48
|
-
ESM v8 at 4.125.0; CLI 3.
|
|
49
|
-
|
|
48
|
+
ESM v8 at 4.125.0; CLI 3.50.0 reaches Stage construct admission through v10,
|
|
49
|
+
not blanket target support. Syntax/MCP acceptance alone is not execution. Source/stream
|
|
50
50
|
forms and realization boundary: `cratis-screenplay-toolchain`
|
|
51
51
|
`references/sources-and-streams.md`. Do not infer further syntax or provider
|
|
52
52
|
admission from decision numbers.
|
|
@@ -139,8 +139,8 @@ What binds depends on **which tool** you ask, so name the tool and its version:
|
|
|
139
139
|
standalone 4.125.0. Use `screenplay test` or MCP `run-specifications` for V4.
|
|
140
140
|
Operations/systems, exact numbers and refusal/redelivery remain unadmitted.
|
|
141
141
|
Historical CLI 3.41.0 rejected `runs as` syntax and its Stage 4.51.3 check
|
|
142
|
-
refused generated values/responses with STAGE-ESM-028/029.
|
|
143
|
-
|
|
142
|
+
refused generated values/responses with STAGE-ESM-028/029. CLI 3.50.0 bundles
|
|
143
|
+
Screenplay 4.131.0/Stage 4.67.0; v10 reaches construct admission, not full support.
|
|
144
144
|
Source/binding admission and target realization are separate gates.
|
|
145
145
|
|
|
146
146
|
The ESM versions, the full disposition table and the Step 7 clock example's binding
|
package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md
CHANGED
|
@@ -28,7 +28,7 @@ Pins and consumer boundaries: toolchain `references/versions.md`.
|
|
|
28
28
|
| Command reads/concurrency | Legacy unprotected decisions, PLAY0271 |
|
|
29
29
|
| Invokes-only trigger reads | Report-only, not protected state; direct production with reads refuses |
|
|
30
30
|
| Generated values/responses | v7 binding/reference execution; historical Stage 4.51.3 check: member refusals STAGE-ESM-028/029 |
|
|
31
|
-
| Sources/streams and command/specification routes | v8 binding/reference execution;
|
|
31
|
+
| Sources/streams and command/specification routes | v8 binding/reference execution; CLI 3.50.0 reaches Stage construct checks through v10 |
|
|
32
32
|
| Declared reaction invocation actor | v10 binding/reference execution; older CLI parser PLAY0137; Stage planner refuses v10 |
|
|
33
33
|
| Operations/systems, exact numbers, refusal/redelivery | Source accepted; whole binding refuses PLAY0268 |
|
|
34
34
|
| UI | Authoring/deferred metadata; runtime support is a separate consumer contract |
|
package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md
CHANGED
|
@@ -17,9 +17,9 @@ cratis-screenplay-toolchain `references/versions.md`; behaviour from the cratis
|
|
|
17
17
|
Screenplay.CritterStack `v0.24.0`. Version-specific capability facts belong in cratis-screenplay-toolchain
|
|
18
18
|
`references/versions.md`.
|
|
19
19
|
|
|
20
|
-
Current CLI is 3.
|
|
20
|
+
Current CLI is 3.50.0, with Screenplay 4.131.0 / Stage 4.67.0 /
|
|
21
21
|
Arc.Screenplay 22.54.0 / Chronicle 19.32.0 / Fundamentals 7.22.8
|
|
22
|
-
(`references/versions.md` in the toolchain; standalone Screenplay is 4.
|
|
22
|
+
(`references/versions.md` in the toolchain; standalone Screenplay is 4.135.0).
|
|
23
23
|
Option/admission evidence checked at CLI 3.41.0: released
|
|
24
24
|
`GenerateScreenplaySettings.cs`, `ArcScreenplayGeneration.cs`, v7 planning specs
|
|
25
25
|
and `Documentation/reference/screenplay.md`; older diagnostic probes below keep
|
|
@@ -23,7 +23,7 @@ contract is in `cratis-screenplay-ui-composition`.
|
|
|
23
23
|
|
|
24
24
|
## Verified product sources
|
|
25
25
|
|
|
26
|
-
Current authoring/MCP guidance follows Screenplay v4.
|
|
26
|
+
Current authoring/MCP guidance follows Screenplay v4.135.0
|
|
27
27
|
`Documentation/screenplay/mcp/`, `ast-authoring.md`, `folders.md`, `vscode.md`.
|
|
28
28
|
Discover installed tools and schemas; CLI bundles can differ from the standalone
|
|
29
29
|
tool. Pins are in `cratis-screenplay-toolchain` `references/versions.md`.
|
|
@@ -291,9 +291,9 @@ that the code compiles or behaves. Read `references/mcp-tools.md#code-attachment
|
|
|
291
291
|
it defines them and maps them onto V1 to V5. `screenplay --warnaserror` checks
|
|
292
292
|
syntax plus the consistency rules (`PLAY0282`-`PLAY0294`) but never binds, so a
|
|
293
293
|
clean run is not a bound or executable result.
|
|
294
|
-
- Operations
|
|
295
|
-
|
|
296
|
-
|
|
294
|
+
- Operations/`numbers exact` remain unadmitted; routes bind as v8, public
|
|
295
|
+
boundaries v9, identity/overrides/filters v10, qualifying non-route Double
|
|
296
|
+
literals v11. CLI 3.50.0 reaches Stage checks through v10. Never drop or stub source contracts to bind.
|
|
297
297
|
- Distinguish authoring acceptance from `executableReady`; unsupported backend
|
|
298
298
|
capabilities are not a reason to drop source constructs or invent stubs.
|
|
299
299
|
- If execution is intended, validate with the owning downstream runtime as well.
|
package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md
CHANGED
|
@@ -243,6 +243,12 @@ v4.31.0 table, re-read against v4.66.0 and v4.68.0 documentation and probed thro
|
|
|
243
243
|
the standalone 4.66.0 tool for the rows marked "probed"; Cratis CLI 3.28.2 and 3.28.3 bundle
|
|
244
244
|
Screenplay 4.66.0 (before 3.28.2, Screenplay 4.60.1, differ where stated).
|
|
245
245
|
|
|
246
|
+
Read-model identity and query admission below are corrected to 4.135.0:
|
|
247
|
+
explicit trailing `key` wins; otherwise single-instance queries in the owning slice
|
|
248
|
+
must agree on `by`. Only with no single-instance identifier and an admitted list
|
|
249
|
+
query does conventional `*Id` inference run. Queryless views need explicit `key`.
|
|
250
|
+
See read-surface `references/named-keys.md` for the collection-key exclusion algorithm.
|
|
251
|
+
|
|
246
252
|
| Disposition | Constructs |
|
|
247
253
|
| --- | --- |
|
|
248
254
|
| Binds and runs in the reference runner | `StateChange`/`StateView` slices; `produces` including `when` conditions over command properties and literal tags; the portable validation rules, `matches email`, quoted `matches` patterns and `require` over command properties; declarative policies and `authorize` on modules, features, commands and keyed queries; `unique` constraints; projections as Chronicle lowers them, including variants, except the projection constructs in the next row; specifications, including `given caller`, `then denied` and `when append` |
|
|
@@ -254,7 +260,7 @@ Screenplay 4.66.0 (before 3.28.2, Screenplay 4.60.1, differ where stated).
|
|
|
254
260
|
| Binds as ESM v7 on standalone Screenplay 4.68.0 (source and release notes; `PLAY0268` on the 4.66.0 in Cratis CLI 3.28.x, probed) | `generated` properties and `returns` responses, generated fixtures and `then returns`: bound and executed by the reference runner; a policy, rule or requirement that references a generated value is `PLAY0273`, and a generated property on a concept with validation rules is `PLAY0268`. Stage 4.24.2 does not render them (`STAGE-ESM-016`, tracked in Stage#201): gap-fill |
|
|
255
261
|
| Authorable, not executable (PLAY0268) | Systems/operations, exact numbers and refusal/redelivery remain unadmitted |
|
|
256
262
|
| Current routing and actor admission | Sources/streams and command/specification routes bind and reference-execute as v8; reaction `runs as system role` supplies the invocation actor as v10 on 4.125.0. Whole-workspace binding determines executable availability; CLI/Stage realization remains separate |
|
|
257
|
-
| Blocks binding (`PLAY0268`) | `pii`/`secret` concepts (also legacy spellings; historical probe: "compliance attributes require portable data-subject semantics"), command `handler` (never binds; a command cannot declare both `produces` and `handler`, `PLAY0035`), bare `rule <Name>`, `require` or conditions over read-model paths, dates and `today` in comparisons, `$context.tenant`/claims/roles/causation in `produces`, `$env` conditions, `file` constraints, unquoted `import` of an external contract, a read model
|
|
263
|
+
| Blocks binding (`PLAY0268`) | `pii`/`secret` concepts (also legacy spellings; historical probe: "compliance attributes require portable data-subject semantics"), command `handler` (never binds; a command cannot declare both `produces` and `handler`, `PLAY0035`), bare `rule <Name>`, `require` or conditions over read-model paths, dates and `today` in comparisons, `$context.tenant`/claims/roles/causation in `produces`, `$env` conditions, `file` constraints, unquoted `import` of an external contract, a read model with neither explicit `key` nor unambiguous query-based identity as described above (composite keys remain unadmitted), queries with filters, scope, performer, context-derived `by` or composite `by` blocks (optional keyed and collection queries, including observable delivery, bind at 4.135.0), `$causedBy` and templates in projections |
|
|
258
264
|
| Blocks binding (`PLAY0271`, legacy meaning) | Command `reads` and `concurrency` |
|
|
259
265
|
| Deferred (`PLAY0269`, information) | Screens, layouts, templates, forms, contributions, UI profiles, themes, behaviors and `on`/`uses` |
|
|
260
266
|
| Metadata only (`PLAY0270`, information) | `domain`, `seed`, `persona`, trigger and other descriptions, and `file` provenance on declarations |
|
|
@@ -98,6 +98,9 @@ with `view: "diagnostics"`, then `view: "repairs"` at the current revision.
|
|
|
98
98
|
| `PLAY0469` | Remove an inline same-source identifier property and mapping, retiring its semantic address. This changes the contract; `canFixAll` is false. Refuse other consumers, opaque impact, changed routing or comment loss. Plain contracts get guidance only. |
|
|
99
99
|
| `PLAY0479` | Migrate one optional type spelling, or all in a document, preserving syntax and trivia. Exclude `query Q => observable?`. |
|
|
100
100
|
| `PLAY0563/0564` | Expand a one-line interaction alternative / turn a strict item `where` into one block-form `when`. Individual review, canonical formatting, no pinned evidence; refuse comment loss. Opaque non-item-condition text has no PLAY0564 repair. |
|
|
101
|
+
| `PLAY0614` | Declare Translate direction only when exactly one inbound/outbound interpretation fits public metadata; never change event visibility to make a repair fit. |
|
|
102
|
+
| `PLAY0661` | Complete command reads only when each missing part has one same-named compatible source; preserve authored parts and refuse ambiguity. Queries and trigger reads have no repair. |
|
|
103
|
+
| `PLAY0664` | Remove an override identical to the command's complete source/stream/id route. |
|
|
101
104
|
| `PLAY0516` | Move a producing sibling declaration/import before its consumer, or pin an already placed file before a retained glob. Preserve catalogs, comments, placement and executable readiness; introduce no timeline findings. Own-sub-feature edges, cycles, unranked members and mixed/different-parent boundaries have no repair. Rediscover after each move; pinned evidence is unsupported. |
|
|
102
105
|
|
|
103
106
|
These discoveries verify acceptance before listing a repair. Only compact
|
|
@@ -188,7 +191,8 @@ persona/policy and table/case/caseParameter provenance. Neither view executes.
|
|
|
188
191
|
|
|
189
192
|
Screenplay v4.127.0 `mcp/reference.md` and `authoring-tools.md` describe these
|
|
190
193
|
additions (checked at 4.127.0); discover installed schemas because current
|
|
191
|
-
CLI 3.46.1
|
|
194
|
+
Previous CLI 3.46.1 bundled Screenplay 4.130.0; CLI 3.50.0 bundles
|
|
195
|
+
4.131.0, so these source objects are available there too.
|
|
192
196
|
|
|
193
197
|
- Identity/detail summaries expose declared sources; `$identity` has its own
|
|
194
198
|
expression node. The block alone stays executable-ready, but executable reads
|
|
@@ -322,7 +326,8 @@ the open model as candidate:
|
|
|
322
326
|
}
|
|
323
327
|
```
|
|
324
328
|
|
|
325
|
-
These source objects require Screenplay 4.131.0; CLI 3.
|
|
329
|
+
These source objects require Screenplay 4.131.0; CLI 3.50.0 bundles it
|
|
330
|
+
(previous CLI 3.46.1 bundled 4.130.0).
|
|
326
331
|
Discover installed schemas rather than assuming bundle parity.
|
|
327
332
|
Check that the registered worktree is checked out at the intended commit and
|
|
328
333
|
contains the baseline model; Git refs are not resolved. An admitted missing
|
|
@@ -146,10 +146,12 @@ Historical verified public vector and executable checks:
|
|
|
146
146
|
|
|
147
147
|
- executed toolchain: public CLI 3.43.0 (`23e5a24`), whose default runtime was
|
|
148
148
|
`cratis/stage:4.52.0` and which bundled Screenplay 4.127.0. Published since,
|
|
149
|
-
and not verified by this vector: Scene 4.17.0, Screenplay 4.133.1, Stage 4.64.0,
|
|
150
|
-
3.46.1 (bundling Screenplay 4.130.0, default Stage
|
|
149
|
+
and not verified by this vector: Scene 4.17.0, Screenplay 4.133.1, Stage 4.64.0,
|
|
150
|
+
previous CLI 3.46.1 (bundling Screenplay 4.130.0, then-default Stage 4.52.0) and
|
|
151
|
+
Studio 0.152.2. Current pins are CLI 3.50.0 (Screenplay 4.131.0 / Stage 4.67.0)
|
|
152
|
+
and standalone Screenplay 4.135.0; see toolchain `references/versions.md`.
|
|
151
153
|
Compiler claims from this `cratis` probe are 4.127.0 claims, not current CLI
|
|
152
|
-
3.
|
|
154
|
+
3.50.0/Screenplay 4.131.0 claims;
|
|
153
155
|
- fixture root: `Source/DotNET/Screenplay.CanonicalCorpus/Corpus/ScreenComposition/v1/source/folder`
|
|
154
156
|
in the Screenplay repository;
|
|
155
157
|
- Screenplay repo tool (available checkout): `dotnet run --project Source/DotNET/Tool
|
|
@@ -31,7 +31,7 @@ adapted to `.play` declarations (`references/provenance.md`).
|
|
|
31
31
|
|---|---|---|
|
|
32
32
|
| Screenplay | `v4.66.0` (`c89198b`) | MCP catalog (29 tools: `describe-application`, `search-declarations`, `dependencies`, `find-assertion-gaps`, `read-workspace`, `declaration-details`) in `Source/DotNET/Screenplay.Mcp/McpToolCatalog.cs`; diagnostics PLAY0029, PLAY0191, PLAY0268, PLAY0271, PLAY0350, PLAY0381, PLAY0469 in `Source/DotNET/Screenplay/Diagnostics/DiagnosticCodes.cs`; decision 0008 (one data subject per event) |
|
|
33
33
|
| Screenplay | `v4.127.0` | `find-specification-obligations` (SPEC001–SPEC008 authored presence), `find-modeling-smells` (SMELL001–SMELL005 advisory questions); neither proves executed behavior or complete lineage |
|
|
34
|
-
| Screenplay | `v4.131.0` | `semantic-diff` source objects and revision-pinned pages: `Source/DotNET/Screenplay.Mcp/{McpRevisionDiff,McpWorkspaces.Comparison,McpToolCatalog}.cs`, `Documentation/screenplay/mcp/reference.md`; CLI 3.46.1
|
|
34
|
+
| Screenplay | `v4.131.0` | `semantic-diff` source objects and revision-pinned pages: `Source/DotNET/Screenplay.Mcp/{McpRevisionDiff,McpWorkspaces.Comparison,McpToolCatalog}.cs`, `Documentation/screenplay/mcp/reference.md`; previous CLI 3.46.1 predates these; CLI 3.50.0 bundles them |
|
|
35
35
|
| cratis CLI | `v3.28.3` | bundles Screenplay 4.66.0 and Stage 4.24.2; see the toolchain skill |
|
|
36
36
|
|
|
37
37
|
The full pin table lives in `cratis-screenplay-toolchain` `references/versions.md`; do not copy
|
|
@@ -243,18 +243,17 @@ verdict follows the rules in `references/report-template.md`.
|
|
|
243
243
|
- Complete examples in this skill compile: `references/worked-example.md`.
|
|
244
244
|
|
|
245
245
|
## Route near misses
|
|
246
|
-
-
|
|
247
|
-
`cratis-screenplay-
|
|
248
|
-
`cratis-screenplay-
|
|
249
|
-
|
|
250
|
-
-
|
|
251
|
-
diagnostics: `cratis-screenplay-toolchain`. Construct mechanics: `cratis-screenplay-specifications`,
|
|
246
|
+
- Specs: `cratis-screenplay-scenario-coverage`; slices: `cratis-screenplay-slice-design`;
|
|
247
|
+
streams/invariants: `cratis-screenplay-streams-and-consistency`;
|
|
248
|
+
reactions/translations: `cratis-screenplay-automations-and-translations`.
|
|
249
|
+
- Modes/verdicts: `cratis-screenplay-modeling-lifecycle`; tools/diagnostics:
|
|
250
|
+
`cratis-screenplay-toolchain`; syntax: `cratis-screenplay-specifications`,
|
|
252
251
|
`cratis-screenplay-command-surface`, `cratis-screenplay-projections`.
|
|
253
|
-
-
|
|
254
|
-
|
|
255
|
-
`cratis-application-slice-conformance`.
|
|
252
|
+
- Compliance: `cratis-chronicle-event-modeling`; rendered/gap-filled code:
|
|
253
|
+
`cratis-screenplay-render-and-gap-fill`, `cratis-code-review`, `cratis-application-slice-conformance`.
|
|
256
254
|
|
|
257
255
|
## References (load on demand)
|
|
256
|
+
- Review public leaks, direction, complete keys and effective routes with [public/key/route checks](references/public-keys-and-routes.md).
|
|
258
257
|
- Read `references/checklist.md` when performing the element sweep and phased audit; it contains eleven phases, 89 checks, tiers and evidence sources.
|
|
259
258
|
- Read `references/anti-patterns.md` when investigating an anti-pattern signal; it gives the signal, why it matters, tier and Screenplay fix.
|
|
260
259
|
- Read `references/report-template.md` when classifying findings, deciding the verdict, writing the report or conducting a re-review; it defines report, severity and verdict rules.
|
|
@@ -263,4 +262,4 @@ verdict follows the rules in `references/report-template.md`.
|
|
|
263
262
|
- Read `references/business-questions.md` when conducting the business-question pass; it contains the explainer journey method, prompts and word translation.
|
|
264
263
|
|
|
265
264
|
## Lineage
|
|
266
|
-
|
|
265
|
+
Method lineage, attribution and adaptation permissions: `references/provenance.md`.
|
|
@@ -62,7 +62,7 @@ the problem, the checks it violates, the fix, all pinned to one declaration.
|
|
|
62
62
|
| Missing `for` | an event production (`produces <Event>` or `produces event`) without `for`. Not operation productions: they are authorable design intent, belong to commands, and take no event `for`, tags or routing | runtimes disagree on the destination | C (executable) / D | `for <identifier>` |
|
|
63
63
|
| Unbuilt read-model field | field no projection maps and AutoMap cannot fill | always empty; not reported by the compiler | D | map it or remove it |
|
|
64
64
|
| Undeclared removal/append event | `remove with` or capture `append` names an undeclared event | passes V1, fails binding (V2/V3, PLAY0273) | C (executable) / D | declare or fix the name; run V3 |
|
|
65
|
-
| Gated command invoked by a reaction without a declared actor | reaction `invokes` a command under a caller policy and has no `runs as system role "<Role>"` that satisfies the gate | the invocation carries no caller: rejected at run time | D (major) | declare `runs as system role "<Role>"` with the least-privilege role the gate admits (ESM v10, Screenplay 4.125.0;
|
|
65
|
+
| Gated command invoked by a reaction without a declared actor | reaction `invokes` a command under a caller policy and has no `runs as system role "<Role>"` that satisfies the gate | the invocation carries no caller: rejected at run time | D (major) | declare `runs as system role "<Role>"` with the least-privilege role the gate admits (ESM v10, Screenplay 4.125.0; previous CLI 3.46.1 refused v10 with CLI-RENDER-004, so gap-fill) or record another trusted-path decision - never just delete the gate. A matching `runs as system role` is the admitted trusted path, not a defect |
|
|
66
66
|
| `reads` + `produces` reaction | reaction both reads a view and produces | fails binding | C (executable) | invoke a command, or produce without reads |
|
|
67
67
|
| `reads` treated as protection | rule "checked" because the command or reaction `reads` a view | `reads` enforces nothing | D (major) | keep or introduce `reads <View>` + `require ... message` as stated intent, mark it NOT enforced in the slice `description`, name the target (`[ProtectedDecision]` + `DecisionRead<T>`, Chronicle DCB, or a constraint where it fits); checklist E3 |
|
|
68
68
|
| Caller-supplied state rule | `require currentStatus == "open"` where the caller sends `currentStatus` | the caller decides its own permission | D (major) | read the stored state with `reads`; keep or introduce `reads <View>` + `require ... message` as stated intent, mark it NOT enforced in the slice `description`, name the target (`[ProtectedDecision]` + `DecisionRead<T>`, Chronicle DCB, or a constraint where it fits); checklist E3 |
|
package/package/corpus/skills/cratis-screenplay-model-review/references/public-keys-and-routes.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
# Public contracts, lookup keys and observer routes
|
|
5
|
+
|
|
6
|
+
Add these to the element sweep, with evidence pinned to the declaration:
|
|
7
|
+
|
|
8
|
+
- Does a command publish a public event, a foreign event get produced locally,
|
|
9
|
+
or a local public event get produced outside an explicit outbound Translate?
|
|
10
|
+
Check for unintended personal/secret fields in the exported contract. An outbound
|
|
11
|
+
slice owns exactly one local public event type and consumes private local facts.
|
|
12
|
+
- Is direction explicit when public metadata is used? Does an inbound translation
|
|
13
|
+
accept public foreign events and emit private local facts? A quoted origin is
|
|
14
|
+
an opaque store name with an unverified local shape, not proof of interoperability.
|
|
15
|
+
Read automations-and-translations `references/public-events-and-direction.md`.
|
|
16
|
+
- Is the view identity explicitly marked `key` or unambiguously inferred? Does each
|
|
17
|
+
single-instance query/read supply every part exactly once, with compatible types,
|
|
18
|
+
and do state fixtures contain all parts? Do PDL keys align with the view's key?
|
|
19
|
+
Composite view keys still refuse binding at 4.135.0 (PLAY0268, #599); compilation
|
|
20
|
+
is not executable evidence. Read read-surface `references/named-keys.md`.
|
|
21
|
+
- Does a production override replace the whole source/stream/id route, rather than
|
|
22
|
+
assume partial inheritance? Is its `for` destination still explicit and compatible?
|
|
23
|
+
Are skipped production routes valid, so eager resolution cannot fail unexpectedly?
|
|
24
|
+
- Does a reaction/reducer `from Source[.Stream]` include the intended producers'
|
|
25
|
+
effective routes? Unrouted facts never match, including capture, reaction-direct
|
|
26
|
+
facts and public publication. PLAY0666 is a C# warning about all *known* producers,
|
|
27
|
+
not proof that a handler/foreign source will deliver. Filters have no stream-id
|
|
28
|
+
predicate and are not projection filters. Read toolchain
|
|
29
|
+
`references/production-routes-and-filters.md`.
|
|
30
|
+
|
|
31
|
+
Report binding, reference execution and Stage admission separately. Never remove
|
|
32
|
+
public metadata, key parts or filters to make a review's mode gate pass.
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"input": "Review the marina berth .play model before we accept it: check the model and report findings, do not change anything.",
|
|
4
4
|
"fixtures": [],
|
|
5
5
|
"assertions": [
|
|
6
|
+
{ "kind": "skill-contains", "value": "all *known* producers", "file": "references/public-keys-and-routes.md" },
|
|
6
7
|
{ "kind": "play-compiles" },
|
|
7
8
|
{ "kind": "skill-contains", "value": "PASS WITH WARNINGS" },
|
|
8
9
|
{ "kind": "skill-contains", "value": "Every finding is pinned to one declaration" },
|
|
@@ -75,6 +75,17 @@ build a read model** — two builders is error `PLAY0191`: *a projection or a
|
|
|
75
75
|
reducer builds it, and only one of them*. A slice may still declare several
|
|
76
76
|
projections, each building a **different** read model.
|
|
77
77
|
|
|
78
|
+
## Public-event targets and observer filters
|
|
79
|
+
|
|
80
|
+
In an explicitly outbound Translate slice, `projection P => PublicEvent` or
|
|
81
|
+
`reducer P => PublicEvent` targets the slice's one local public event (ESM v9).
|
|
82
|
+
The projection folds one instance per event source id; opaque reducers remain
|
|
83
|
+
Unsupported in reference execution. Read
|
|
84
|
+
[public-event folds](../cratis-screenplay-automations-and-translations/references/public-events-and-direction.md)
|
|
85
|
+
for publication rules and the `when append`/`then PublicEvent` specification.
|
|
86
|
+
A reducer can filter `from Source[.Stream]` (ESM v10); a projection cannot.
|
|
87
|
+
Read [observer filters](../cratis-screenplay-toolchain/references/production-routes-and-filters.md).
|
|
88
|
+
|
|
78
89
|
## Projection-level directives
|
|
79
90
|
|
|
80
91
|
`no automap`, `sequence <name>`, `file <path>`. `sequence` is a realization
|
|
@@ -55,16 +55,19 @@ A read model declares what it **is** — nothing about what builds it. Whatever
|
|
|
55
55
|
builds it points at it with `=>`, and **exactly one thing may**: two builders is
|
|
56
56
|
error `PLAY0191`. See `cratis-screenplay-projections` for the builder side.
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
58
|
+
Use trailing `key` on top-level read-model properties, never `identifier`.
|
|
59
|
+
Explicit marks replace inference; otherwise a single-instance query's `by` supplies
|
|
60
|
+
identity (all such queries must agree). Only with no single-instance identifier
|
|
61
|
+
and an admitted list query does the binder infer an unambiguous `*Id`; queryless
|
|
62
|
+
read models need an explicit `key`. See named keys below for collection-key exclusions.
|
|
63
|
+
One explicit key binds byte-identically to equivalent inference. Several marks
|
|
64
|
+
form a composite key, supplied by name in query/read
|
|
65
|
+
`by` blocks. At Screenplay 4.135.0 composite keys and block queries remain
|
|
66
|
+
**authoring-only** (PLAY0268, #599); the scalar optional snapshot shape binds.
|
|
67
|
+
Read [named keys](references/named-keys.md) for complete examples, trigger/command
|
|
68
|
+
reads, all-parts fixtures, PLAY0660–0662 and command-read-only PLAY0661 repair.
|
|
69
|
+
A `=>` target resolving to an event is an event-target builder, not a read model;
|
|
70
|
+
keep event and read-model names distinct (see projections' public-event targets).
|
|
68
71
|
|
|
69
72
|
## `query`
|
|
70
73
|
|
|
@@ -79,12 +82,12 @@ query ListInvoices => InvoiceListReadModel[]
|
|
|
79
82
|
authorize IsAuthenticated
|
|
80
83
|
```
|
|
81
84
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
**Name the compiler and renderer.** At Screenplay 4.135.0, optional keyed queries
|
|
86
|
+
and collection queries bind, including `observable`, with caller-supplied `by`
|
|
87
|
+
or no `by` on a collection. Filters, scope, performer and context-derived `by`
|
|
88
|
+
remain PLAY0268. The old Stage 4.24.0 list refusal is not a current compiler
|
|
89
|
+
limitation; check the target renderer's admission separately. Keep a list the
|
|
90
|
+
domain needs rather than inventing a keyed query solely to infer identity.
|
|
88
91
|
|
|
89
92
|
Return-type forms after `=>`: `ReadModel`, `ReadModel optional`, `ReadModel[]`,
|
|
90
93
|
each optionally prefixed `observable`. `ReadModel[] optional` permits an absent
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
# Named read-model keys and complete lookups
|
|
5
|
+
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- Declare identity
|
|
9
|
+
- Supply every part
|
|
10
|
+
- Specifications and executable boundary
|
|
11
|
+
- Repairs and evidence
|
|
12
|
+
|
|
13
|
+
## Declare identity
|
|
14
|
+
|
|
15
|
+
A trailing `key` on a top-level read-model property declares instance identity.
|
|
16
|
+
One explicit mark replaces inference and binds byte-identically to the equivalent
|
|
17
|
+
inferred identifier. Several marks declare a composite key. At 4.135.0, identity
|
|
18
|
+
selection is:
|
|
19
|
+
|
|
20
|
+
1. Explicit `key` marks take precedence over inference.
|
|
21
|
+
2. Without marks, single-instance queries in the owning slice supply identity from
|
|
22
|
+
their `by` property; their distinct `by` names must identify one property.
|
|
23
|
+
3. Only when no single-instance query supplies an identifier **and** an admitted
|
|
24
|
+
collection/list query exists does the binder consider conventional `*Id` names
|
|
25
|
+
(case-sensitive). It first excludes collection-query `by` properties: if exactly
|
|
26
|
+
one candidate remains, that is the identifier; otherwise it uses all `*Id`
|
|
27
|
+
candidates and requires exactly one. An admitted list query here is a collection
|
|
28
|
+
query without context-derived `by`, filters, scope or performer.
|
|
29
|
+
|
|
30
|
+
A projection-only/queryless read model needs an explicit `key`: a lone `*Id`
|
|
31
|
+
property alone does not infer identity. Never use the command's `identifier`
|
|
32
|
+
modifier on a read model.
|
|
33
|
+
|
|
34
|
+
A key part is required and noncollection; it cannot also be `optional`, `generated`,
|
|
35
|
+
`identifier` or `subject`. A single key may have a composite type, but parts of a
|
|
36
|
+
multipart key must be scalar. Declaration order is display order, not identity:
|
|
37
|
+
Chronicle's object keys are not ordered, encoded event stream ids.
|
|
38
|
+
|
|
39
|
+
Choose a composite key when independent coordinates identify the business view,
|
|
40
|
+
such as resource and reporting period. Prefer the natural single id when the view
|
|
41
|
+
is one entity's state. Do not concatenate parts into an invented string id merely
|
|
42
|
+
to pass binding; keep the truthful model and report the capability gap. Read-model
|
|
43
|
+
keys do not supply projection routes: align each PDL `from ... key` mapping with
|
|
44
|
+
the declared view identity (projection keys are a separate contract).
|
|
45
|
+
|
|
46
|
+
## Supply every part
|
|
47
|
+
|
|
48
|
+
A scalar query keeps `by name Type` on its own body line. A composite query has a
|
|
49
|
+
bare `by` header and at least two distinct `name Type [from source]` children.
|
|
50
|
+
Do not combine scalar and block forms. A single-instance lookup must supply every
|
|
51
|
+
key part exactly once, with the declared types; collection queries may narrow by
|
|
52
|
+
a subset but still have their separate executable-query limitations.
|
|
53
|
+
|
|
54
|
+
A command or reaction trigger read uses a child `by` block of `part = source`.
|
|
55
|
+
Sources are required, noncollection property paths with compatible nominal types,
|
|
56
|
+
not literals. Trigger reads map from the trigger's declared values. The historical
|
|
57
|
+
single `reads View by value` form remains available for a single key.
|
|
58
|
+
|
|
59
|
+
This complete authoring-only example declares all lookup parts:
|
|
60
|
+
|
|
61
|
+
```screenplay
|
|
62
|
+
concept ResourceId : Uuid
|
|
63
|
+
concept Period : String
|
|
64
|
+
module Reporting
|
|
65
|
+
feature Months
|
|
66
|
+
slice StateView Totals
|
|
67
|
+
readmodel ResourceMonth
|
|
68
|
+
resourceId ResourceId key
|
|
69
|
+
period Period key
|
|
70
|
+
hours Decimal
|
|
71
|
+
query FindMonth => ResourceMonth optional
|
|
72
|
+
by
|
|
73
|
+
resourceId ResourceId
|
|
74
|
+
period Period
|
|
75
|
+
slice StateChange CloseMonth
|
|
76
|
+
command CloseMonth
|
|
77
|
+
resourceId ResourceId identifier
|
|
78
|
+
period Period
|
|
79
|
+
reads ResourceMonth as totals
|
|
80
|
+
by
|
|
81
|
+
resourceId = resourceId
|
|
82
|
+
period = period
|
|
83
|
+
produces event MonthClosed
|
|
84
|
+
for resourceId
|
|
85
|
+
period Period = period
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Screen `data ... via query ... by value`, forms and navigation remain scalar
|
|
89
|
+
lookups: they cannot supply a composite single-instance key (PLAY0661). Do not
|
|
90
|
+
invent UI tuple syntax. Context-derived query parts do not become caller inputs;
|
|
91
|
+
keep tenant/subject ownership at the runtime boundary, not in editable UI filters.
|
|
92
|
+
|
|
93
|
+
## Specifications and executable boundary
|
|
94
|
+
|
|
95
|
+
`given readmodel` and `then readmodel` state every key part (PLAY0351 if missing).
|
|
96
|
+
A composite absence fixture uses an object with every named part. Query result
|
|
97
|
+
assertions may omit keys when arguments already select the instance.
|
|
98
|
+
|
|
99
|
+
At Screenplay 4.135.0, composite read-model keys, query `by` blocks and fixtures
|
|
100
|
+
over those views remain authoring-only: binding reports PLAY0268 citing
|
|
101
|
+
Screenplay#599 (still open). They do not reference-execute or render. This is not
|
|
102
|
+
ESM v10 admission; v10 covers reaction identity, production routes and observer
|
|
103
|
+
filters. Command reads independently remain unprotected/unadmitted (PLAY0271).
|
|
104
|
+
A single explicit key does bind; Stage admission still depends on the complete
|
|
105
|
+
model and projection/query shape, not just the key modifier.
|
|
106
|
+
|
|
107
|
+
## Repairs and evidence
|
|
108
|
+
|
|
109
|
+
- PLAY0660: fix key owner, modifier or type; no automatic repair.
|
|
110
|
+
- PLAY0661: supply missing parts. The typed repair covers **command reads only**
|
|
111
|
+
when each missing part has one same-named compatible source. It preserves
|
|
112
|
+
authored mappings and refuses ambiguity; queries/trigger reads are not repaired.
|
|
113
|
+
- PLAY0662: fix shape, duplicate/unknown parts or incompatible sources; no repair.
|
|
114
|
+
- Read-model property rename remains unsupported until its mapping chain can be
|
|
115
|
+
preserved. Use the model-authoring proposal/preview/apply contract, not a text
|
|
116
|
+
shortcut around an identity-preserving refusal.
|
|
117
|
+
|
|
118
|
+
Source: Screenplay `v4.135.0:Documentation/screenplay/{readmodels,queries,commands,reactions,specifications}.md`,
|
|
119
|
+
`fixtures/named-read-model-keys.play`, decision 0060, and
|
|
120
|
+
`Source/DotNET/Screenplay/Semantics/SemanticModelBinder.ReadModels.cs` (identity inference).
|
|
121
|
+
Its authoring delivery shipped
|
|
122
|
+
in 4.129.0; that release did not deliver #599's executable composite-key contract.
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
"input": "Declare a Screenplay query and the screen that binds to it.",
|
|
4
4
|
"fixtures": [],
|
|
5
5
|
"assertions": [
|
|
6
|
+
{ "kind": "skill-contains", "value": "query FindMonth", "file": "references/named-keys.md" },
|
|
7
|
+
{ "kind": "skill-contains", "value": "command reads only", "file": "references/named-keys.md" },
|
|
8
|
+
{ "kind": "skill-contains", "value": "remain authoring-only", "file": "references/named-keys.md" },
|
|
6
9
|
{ "kind": "play-compiles" },
|
|
7
10
|
{ "kind": "skill-contains", "value": "main `fd18129`" },
|
|
8
11
|
{ "kind": "skill-contains", "value": "filter status InvoiceStatus optional" },
|
|
@@ -25,9 +25,9 @@ Version pins live once in `cratis-screenplay-toolchain` `references/versions.md`
|
|
|
25
25
|
|
|
26
26
|
| Source | Pin | Used for |
|
|
27
27
|
| --- | --- | --- |
|
|
28
|
-
| cratis CLI | `3.
|
|
29
|
-
| Stage | `4.
|
|
30
|
-
| Screenplay | bundled `4.
|
|
28
|
+
| cratis CLI | `3.50.0` (`v3.50.0`) | Source-checked `Directory.Packages.props`: Stage 4.67.0, Screenplay 4.131.0, `Cratis.Arc.Screenplay` 22.54.0, Chronicle 19.32.0, Fundamentals 7.22.8; default runtime image `cratis/stage:4.67.0`. Previous CLI 3.46.1 used Stage 4.52.0/Screenplay 4.130.0. No new render/browser probe. UI-profile rejection (`CLI-RENDER-007` to `CLI-RENDER-010`) and render-then-recover shipped in 3.41.0 (Cratis/cli#301). Historical screens release vector: 3.40.7 (`af9f18e`) with `cratis/stage:4.51.1`. Reading baselines: 3.40.3, 3.39.0 and 3.28.3 (`8b43fef`) |
|
|
29
|
+
| Stage | `4.67.0` (CLI 3.50.0 default) | Source-checked, not executed as a new vector. Previous Stage 4.52.0 was executed on CLI 3.43.0. Admission (`STAGE-ESM-*`, and `PLAY0268` render refusals surfaced by the CLI), ownership manifest, `Customizations/` seams, Debug-only specifications, guarded actions (`STAGE-SCENE-ACTION-001`) and interactions (`STAGE-SCENE-INTERACTION-001`) were source-checked at 4.51.3. Older baselines: 4.49.5, 4.43.0 and `v4.24.2` (`32dcac4`) |
|
|
30
|
+
| Screenplay | bundled `4.131.0`; standalone `4.135.0` | Standalone compiler for V1 to V3; binding codes `PLAY0268` and code-attachment rules were read at `v4.66.0`. Historical CLI 3.41.0 probes used bundled 4.114.0; current `cratis` compiler claims require checking 4.131.0 |
|
|
31
31
|
| Rendered apps (historical check) | Arc `22.50.5`, Chronicle `19.32.0`, Scene packages | Stage 4.51.3 scaffold; `[ProtectedDecision]` / `DecisionRead<T>` available to gap-fill, not emitted enforcement. Embedded reverse extraction disabled; verify generated packages before claiming exact Scene runtime parity |
|
|
32
32
|
|
|
33
33
|
Historical facts retain their checked tags; current pins are source-checked, not new runtime probes.
|
|
@@ -77,9 +77,12 @@ the model, hand-write the command and its response with the model (and its fixtu
|
|
|
77
77
|
specifications) as the contract, and report V3 from the standalone tool and V5 as `not run: no render`.
|
|
78
78
|
|
|
79
79
|
Models with event sources, streams or command routes bind and reference-execute as ESM v8 on standalone
|
|
80
|
-
Screenplay 4.125.0, so report V3 and V4 from that tool.
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
Screenplay 4.125.0, so report V3 and V4 from that tool. Previous CLI 3.46.1 refused above v7 with CLI-RENDER-004. Current CLI 3.50.0/Stage
|
|
81
|
+
4.67.0 reaches v8 route checks and construct admission through v10. Public publication,
|
|
82
|
+
foreign events/event captures and v10 reaction identity/filters/production overrides
|
|
83
|
+
still receive typed refusals; reducer filters render. Keep refused scope as case A/C,
|
|
84
|
+
never infer target support from binding. Read Stage's `references/admission.md` and
|
|
85
|
+
toolchain `references/sources-and-streams.md`.
|
|
83
86
|
|
|
84
87
|
Two rules hold in every case: a customization never makes a rejected model renderable, and
|
|
85
88
|
a whole-application V5 is never claimed from a subset. The CLI renders whole applications
|
package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md
CHANGED
|
@@ -77,9 +77,9 @@ not bind a modeled reaction or capture. Case C (no generated application): there
|
|
|
77
77
|
composition conventions (`rules/vertical-slices.md`, `cratis-chronicle-reactor`).
|
|
78
78
|
Declare the trusted actor with reaction `runs as system role "<Role>"`
|
|
79
79
|
(standalone 4.125.0, ESM v10); `given caller` is not an invocation actor.
|
|
80
|
-
Historical CLI 3.41.0's older compiler rejected the syntax.
|
|
81
|
-
|
|
82
|
-
(
|
|
80
|
+
Historical CLI 3.41.0's older compiler rejected the syntax. CLI 3.50.0/Stage 4.67.0
|
|
81
|
+
reaches v10 construct admission but still refuses reaction identity
|
|
82
|
+
(STAGE-ESM-034); previous CLI 3.46.1 admitted through v7 only. Gap-fill retains the declared role and uses Arc
|
|
83
83
|
`[ExecuteCommandsAsSystem]` for returned commands. Checked model and diagnostics:
|
|
84
84
|
captures-and-reactions `references/invocation-identity.md`.
|
|
85
85
|
|
|
@@ -175,6 +175,17 @@ target requirements.
|
|
|
175
175
|
- After a correction or backdated fact, does the view still say something true?
|
|
176
176
|
- Cross-context views: are the real source contracts resolved, or is missing evidence a gap?
|
|
177
177
|
|
|
178
|
+
## Public-event coverage (ESM v9)
|
|
179
|
+
|
|
180
|
+
Outbound publication needs `when append <private>` and `then <PublicEvent>`:
|
|
181
|
+
complete state, incomplete state, unchanged repeat, changed instance, separate
|
|
182
|
+
source ids and the exported field boundary. Reference publication is executable;
|
|
183
|
+
source-event captures and reached opaque event-target reducers are typed
|
|
184
|
+
Unsupported. Read automations-and-translations `references/public-events-and-direction.md`.
|
|
185
|
+
For routed producers/observers, cover override versus inherited route, skipped
|
|
186
|
+
production route failure, matching/wrong source/stream and unrouted facts;
|
|
187
|
+
see toolchain `references/production-routes-and-filters.md`.
|
|
188
|
+
|
|
178
189
|
## Version skew: reaction cascades and false PLAY0285
|
|
179
190
|
Under ESM v6 a command spec's `then` lists the events reactions cascade from it. The compiler
|
|
180
191
|
bundled in `cratis` before 3.28.2 (Screenplay 4.60.1) reported a **false PLAY0285** for such
|
package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md
CHANGED
|
@@ -5,7 +5,7 @@ The subsets themselves (what binds, what renders) are owned by `cratis-screenpla
|
|
|
5
5
|
says what that means for writing specs. A form outside the chosen mode is never deleted from a
|
|
6
6
|
design model: keep it and record the gap. The detailed Stage 4.24.x rows below
|
|
7
7
|
retain historical admission evidence; current pins are standalone Screenplay
|
|
8
|
-
4.
|
|
8
|
+
4.135.0 / CLI 3.50.0 (Screenplay 4.131.0 / Stage 4.67.0). Run actual target admission instead of assuming old restrictions carry over.
|
|
9
9
|
Typed example/override forms: `cratis-screenplay-specifications`
|
|
10
10
|
`references/examples-and-routes.md`.
|
|
11
11
|
|
|
@@ -23,7 +23,7 @@ Typed example/override forms: `cratis-screenplay-specifications`
|
|
|
23
23
|
| Command spec listing reaction cascade events | yes (v6 semantics) | false PLAY0285 on a cratis before 3.28.2 bundle only; see SKILL.md "Version skew" | no (no reactions) |
|
|
24
24
|
| `generated <name> = <value>` under `when`, `then returns` (ESM v7) | yes | yes on standalone Screenplay 4.68.0 or later; not on the 4.66.0 bundled in cratis 3.28.x (`PLAY0268`) | historically no at Stage 4.24.x; check current target admission |
|
|
25
25
|
| `then events in any order` | yes | yes | yes |
|
|
26
|
-
| Event `stream` / `no stream`, typed `for` and stream ids | yes | ESM v8 at 4.125.0 | CLI 3.
|
|
26
|
+
| Event `stream` / `no stream`, typed `for` and stream ids | yes | ESM v8 at 4.125.0 | CLI 3.50.0 reaches Stage route checks; routed read-model/query replay can still refuse STAGE-ESM-030 |
|
|
27
27
|
| Typed examples and overrides | yes | expanded and type-checked before binding; required fields remain required | depends on expanded contract, not fixture reuse |
|
|
28
28
|
| `given operation ... fails`, `then operation`, `then compensated` | yes | unadmitted PLAY0268 | gap-fill |
|
|
29
29
|
| Refusal branches, `when redelivered`, `then no events` | yes | unadmitted PLAY0268 | gap-fill |
|