@cratis/pi 7.21.0 → 7.23.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-screenplay-automations-and-translations/SKILL.md +31 -15
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/audit-format.md +4 -3
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +13 -15
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/cases-to-specify.md +4 -4
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/effects-and-idempotency.md +21 -0
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +4 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/todo-list-example.md +7 -4
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/verification.json +4 -4
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +41 -38
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/complete-examples.md +1 -1
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +84 -0
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/refusals-and-redelivery.md +102 -0
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/specifying-triggers-and-clock.md +4 -2
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +57 -44
- package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +154 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +57 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +15 -13
- package/package/corpus/skills/cratis-screenplay-command-surface/references/operations.md +80 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/policy-persona-seed.md +23 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/verification.json +8 -2
- package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +19 -9
- package/package/corpus/skills/cratis-screenplay-discovery/references/interview-questions.md +1 -1
- package/package/corpus/skills/cratis-screenplay-discovery/references/storming-loop.md +6 -5
- package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +10 -8
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/naming-primitives.md +5 -3
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/nine-steps.md +6 -5
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +41 -49
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +15 -5
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +48 -8
- package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +47 -42
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +79 -15
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +49 -11
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +155 -14
- package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +3 -3
- package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +19 -7
- package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +11 -2
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/SKILL.md +3 -3
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/completeness-self-check.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/verdicts-and-modes.md +1 -1
- package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +17 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/references/guarded-actions.md +79 -0
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +11 -9
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +6 -3
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +1 -1
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/verification.json +2 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +3 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +13 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +13 -3
- package/package/corpus/skills/cratis-screenplay-slice-design/references/command-inventory.md +5 -3
- package/package/corpus/skills/cratis-screenplay-slice-design/references/review-questions.md +2 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/references/rule-layers.md +4 -3
- package/package/corpus/skills/cratis-screenplay-slice-design/references/slicing.md +40 -0
- package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +24 -16
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +111 -0
- package/package/corpus/skills/cratis-screenplay-specifications/references/reactions-and-cascades.md +5 -6
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +22 -8
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/chronicle-boundaries.md +8 -4
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/consistency-and-concurrency.md +10 -0
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +13 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +3 -3
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/verification.json +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +44 -35
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +3 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +58 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +128 -10
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +13 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +37 -13
- package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +10 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +23 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +111 -27
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +27 -6
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +34 -16
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +98 -136
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +13 -5
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +20 -0
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +10 -6
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +8 -1
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +2 -2
- package/package.json +1 -1
|
@@ -22,17 +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.
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
| Screenplay | bundled `4.114.0`; latest language package `4.122.0` | CLI 3.40.7 bundles 4.114.0 and reports `sourceSuccess true`, `semanticSuccess true`, `executableReady true` for the canonical corpus; the repo tool compiles it with `10 file(s) compiled - 0 error(s), 0 warning(s)`. Language features newer than 4.114.0 need the standalone 4.122.0 tool until a CLI bundles them |
|
|
30
|
-
| Stage | `4.51.1` (CLI default; latest package 4.51.3) | Docker image `cratis/stage:4.51.1`; renders the canonical screen corpus with Arc `CommandForm` shells and query bindings, and refuses guarded Close and double-click with `STAGE-SCENE-ACTION-001` / `STAGE-SCENE-INTERACTION-001`. Check generated package sets before claiming exact Scene 4.14 runtime parity |
|
|
31
|
-
| Arc / Chronicle | `22.50.5` / `19.32.0` | code-level facts cited here |
|
|
25
|
+
The standalone pin is Screenplay 4.127.0. CLI 3.41.0 bundles Screenplay 4.114.0,
|
|
26
|
+
Stage 4.51.3 and Cratis.Arc.Screenplay 22.54.0. The single version table records
|
|
27
|
+
released source evidence and historical probes separately; do not relabel an old
|
|
28
|
+
render/browser result as a probe of the current packages.
|
|
32
29
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
Historical screens-release evidence: CLI 3.40.7 / Stage 4.51.1 / bundled
|
|
31
|
+
Screenplay 4.114.0 opened the canonical corpus with `executableReady true`
|
|
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.41.0
|
|
34
|
+
or Screenplay 4.127.0.
|
|
36
35
|
|
|
37
36
|
## Ground rules
|
|
38
37
|
|
|
@@ -42,15 +41,15 @@ Re-verify before claiming another version behaves the same.
|
|
|
42
41
|
2. **Check the folder, warnings as errors.** `screenplay <folder> --warnaserror` or
|
|
43
42
|
`cratis screenplay validate <folder> --warnings-as-errors`. Warnings hide defects:
|
|
44
43
|
PLAY0029 (a misspelt keyword or a `type` inside a slice) drops a construct silently.
|
|
45
|
-
3. **Pick the compiler deliberately and name it.** Standalone `screenplay` for
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
3. **Pick the compiler deliberately and name it.** Standalone `screenplay` for
|
|
45
|
+
current language checks and reference specifications; `cratis` for rendering
|
|
46
|
+
and generation. Bundled and standalone versions differ. Report both tool and
|
|
47
|
+
version, rather than transferring a verdict across releases.
|
|
49
48
|
4. **Know the mode** (design, executable, renderable) and write from its subset.
|
|
50
49
|
5. **Capability is not correctness.** The tool you ran decides what is accepted today; the
|
|
51
50
|
domain and the documented semantics decide what is correct. On conflict keep the correct
|
|
52
51
|
model and record a tool gap; never reshape a model to silence a tool.
|
|
53
|
-
6. **Never remove
|
|
52
|
+
6. **Never remove `pii`, `secret`, authorization, list queries, automations or rules
|
|
54
53
|
to reach V3 or a render.** Report the verdict as blocked with the codes.
|
|
55
54
|
7. **A clean verdict proves only its own layer.** "Not run" with the reason is a valid
|
|
56
55
|
result. Specifications written or bound are never specifications passing.
|
|
@@ -62,14 +61,13 @@ Re-verify before claiming another version behaves the same.
|
|
|
62
61
|
|
|
63
62
|
## The two compilers
|
|
64
63
|
|
|
65
|
-
| | Standalone `screenplay`
|
|
64
|
+
| | Standalone `screenplay` | `cratis screenplay ...` |
|
|
66
65
|
| --- | --- | --- |
|
|
67
|
-
| Check
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
| MCP | `screenplay mcp <folder>`; 29 tools | `cratis screenplay mcp [root]`; 29 tools; registered by `cratis ai install` |
|
|
66
|
+
| Check root | `screenplay <root> --warnaserror --no-color` | `cratis screenplay validate <root> --warnings-as-errors -o json-compact` |
|
|
67
|
+
| Scope/checks | `--scope <address>`, `--check <names>`; a scoped pass is not whole-application success | Discover installed validation options |
|
|
68
|
+
| Reference execution | `screenplay test <root>` or MCP `run-specifications` | Discover bundled MCP capability; target tests are not V4 |
|
|
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.41.0 passes up to ESM v7 to Stage; newer versions: `CLI-RENDER-004` |
|
|
73
71
|
|
|
74
72
|
Read `references/versions.md` when you need the exact messages, exit codes or the MCP roots bug.
|
|
75
73
|
|
|
@@ -84,7 +82,7 @@ Independent results, not a ladder. Read `references/verdicts.md` for the command
|
|
|
84
82
|
| V1 | authorable (compiles, warnings as errors) | the folder command above |
|
|
85
83
|
| V2 | executable diagnostics read | MCP `open-workspace`, then `read-workspace view=executable-diagnostics` |
|
|
86
84
|
| V3 | binding-ready (binds, no blocking executable diagnostics) | `executableReady` true and no error-severity diagnostic in V2; informational PLAY0269/0270 are reported separately |
|
|
87
|
-
| V4 | reference specifications run |
|
|
85
|
+
| V4 | reference specifications run | `screenplay test` or MCP `run-specifications`; unsupported/unbound is not a pass; rendered Debug tests are V5.tests, never V4 |
|
|
88
86
|
| V5 | rendered and target-verified | `cratis render`, then Debug build and tests; report admission, publication, build and tests separately |
|
|
89
87
|
|
|
90
88
|
V2 and V3 need MCP: send `initialize`, then `notifications/initialized`, and start the
|
|
@@ -92,7 +90,7 @@ server with a fixed root when the tool is older than 4.63.2 (the roots bug hit 4
|
|
|
92
90
|
4.60.1 bundled by cratis before 3.28.2; 4.66.0 and later and cratis 3.28.2 are fine). A subagent without MCP reports "V2 not run: no MCP in this agent".
|
|
93
91
|
|
|
94
92
|
One line per verdict, tool first, for example `V1 pass (screenplay 4.68.0, 3 files)` and
|
|
95
|
-
`V3 blocked: PLAY0268 x3 (list query,
|
|
93
|
+
`V3 blocked: PLAY0268 x3 (list query, pii)`. Name the source identity (commit plus the digest from
|
|
96
94
|
the source-identity helper (`cratis-screenplay-modeling-lifecycle` `references/verdicts-and-modes.md` "Source identity")) the verdict ran on; keep it apart from the MCP
|
|
97
95
|
`modelRevision`, which is semantic and, without `.screenplay/identities.json`,
|
|
98
96
|
changes with the root folder name.
|
|
@@ -103,14 +101,23 @@ changes with the root folder name.
|
|
|
103
101
|
`references/cheat-sheet.md`. Read [references/cheat-sheet-example.md](references/cheat-sheet-example.md) when you need one complete design-mode document with every construct family.
|
|
104
102
|
- **Executable** (binds, V3): `references/executable-subset.md`. Keyed optional queries
|
|
105
103
|
only; no handler (PLAY0268, with or without `implementation`/`hint`); `reads` and
|
|
106
|
-
`concurrency` do not bind (PLAY0271); no
|
|
104
|
+
`concurrency` do not bind (PLAY0271); no compliance markers (`pii`/`secret`); v6 constructs bind on Screenplay 4.61 or
|
|
107
105
|
later (standalone, and cratis 3.28.2 or later); generated values and `returns` responses bind (ESM v7)
|
|
108
|
-
|
|
109
|
-
- **Renderable** (V5): `references/renderable-subset.md
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
|
|
113
|
-
|
|
106
|
+
from Screenplay 4.68.0 (also in the current CLI bundle) (`references/generated-responses-example.md`). Read [references/executable-example.md](references/executable-example.md) when you need a small StateChange and StateView model that binds executable, [references/pdl-example.md](references/pdl-example.md) when writing projection forms that bind and run, and [references/automation-translate-example.md](references/automation-translate-example.md) when writing Automation and Translate slices (ESM v6).
|
|
107
|
+
- **Renderable** (V5): `references/renderable-subset.md` retains explicitly labeled
|
|
108
|
+
older Stage probes. Current CLI admits v7 to planning, but its v7 corpus gets
|
|
109
|
+
Stage generated-value/response refusals `STAGE-ESM-028`/`029`, not a blanket
|
|
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; CLI 3.41.0
|
|
112
|
+
render refuses versions above v7 (`CLI-RENDER-004`). Operations and exact numeric
|
|
113
|
+
mode remain authorable/unadmitted. Details: `references/sources-and-streams.md`.
|
|
114
|
+
|
|
115
|
+
- **Caller/compliance metadata** at 4.127.0: `$identity` aliases caller built-ins;
|
|
116
|
+
additional identity details are metadata and executable reads still refuse.
|
|
117
|
+
Bare `pii`/`secret` replace legacy spellings; `pii personal` repeats one marker
|
|
118
|
+
(PLAY0653). Purposes/checks/processing records and event `subject` are report-only,
|
|
119
|
+
not legal compliance, retention or runtime subject realization. See
|
|
120
|
+
command-surface `references/context.md` and `references/compliance.md`.
|
|
114
121
|
|
|
115
122
|
## Edit strategy
|
|
116
123
|
|
|
@@ -144,10 +151,12 @@ Read [references/diagnostics.md](references/diagnostics.md) when a PLAY, STAGE o
|
|
|
144
151
|
2. Write `for <identifier>` on every `produces`.
|
|
145
152
|
3. PLAY0029 is a warning: validate with warnings as errors.
|
|
146
153
|
4. Validate the folder; name the compiler (cli#244, cli#242).
|
|
147
|
-
5.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
154
|
+
5. V1 warns on undeclared projection targets (`PLAY0514`) and removal/capture
|
|
155
|
+
event references (`PLAY0166`). Unmapped declared fields can be reported by
|
|
156
|
+
opt-in `--check field-origins` (`PLAY0534`); unknown coverage is skipped, so
|
|
157
|
+
still walk lineage. See diagnostics for editor versus C#-only checks.
|
|
158
|
+
6. Without reaction `runs as` an invoke is caller-less. Declare its trusted role
|
|
159
|
+
(ESM v10), keep the gate, and reference-test; CLI/Stage support is separate.
|
|
151
160
|
7. Read-model identity is one `query XById => RM optional` with `by xId XId`, and the identifier equal to the
|
|
152
161
|
projection's key (see trap 12); never `identifier` on a read model.
|
|
153
162
|
8. Projection `key` routes only on `from`; joins never create; `all` is per source.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
One complete document with every construct family. Design mode, not executable. Prose rules: [cheat-sheet.md](cheat-sheet.md); tool versions: [versions.md](versions.md); what binds: [executable-subset.md](executable-subset.md).
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Binding blockers: unquoted import, `pii`, `reads` (PLAY0271), `starts with`, observable/list/filter query. Executable shapes are in the sibling examples. The bare-marker fence compiles warning-free on standalone 4.127.0; the earlier legacy-marker version compiled on 4.66.0 and CLI 3.28.2. `RecordingAPayment` lists the `InvoiceClosed` cascade, which the cratis 3.27.1 bundle (4.60.1) rejected with a false PLAY0285 ("outcome cannot be produced by 'RecordPayment'"); 3.28.2 accepts it.
|
|
6
6
|
|
|
7
7
|
```screenplay
|
|
8
8
|
// Design-mode cheat-sheet: every construct family; compiles warning-free on the standalone tool.
|
|
@@ -12,7 +12,7 @@ import Customers.CustomerRegistered // unquoted = another bounded context
|
|
|
12
12
|
|
|
13
13
|
concept InvoiceId : Uuid // primitives: Uuid String Int Decimal Bool Date DateTime Enum
|
|
14
14
|
concept PaymentId : Uuid
|
|
15
|
-
concept Email : String
|
|
15
|
+
concept Email : String pii // pii / secret (blocks executability)
|
|
16
16
|
pii reason "Identifies a person"
|
|
17
17
|
validate
|
|
18
18
|
not empty message "An email is required"
|
|
@@ -230,7 +230,7 @@ module Billing
|
|
|
230
230
|
then InvoiceClosed // ESM v6: the Reconciler cascade (amount > 0)
|
|
231
231
|
for "9c858901-8a57-4791-81fe-4c455b099bc9"
|
|
232
232
|
|
|
233
|
-
module Housekeeping // no gates:
|
|
233
|
+
module Housekeeping // no gates: this reaction declares no `runs as`, so its `invokes` has no caller
|
|
234
234
|
description "Background follow-up"
|
|
235
235
|
feature FollowUp
|
|
236
236
|
slice StateChange CloseInvoice
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Screenplay cheat-sheet (tool versions: versions.md)
|
|
2
2
|
|
|
3
|
+
## Contents
|
|
4
|
+
|
|
5
|
+
- Samples and preview fixtures
|
|
6
|
+
- Lexical and structural rules
|
|
7
|
+
- Exact numeric source mode
|
|
8
|
+
- Clause order inside a command (canonical)
|
|
9
|
+
- Slice contents (typical)
|
|
10
|
+
- `$context.` paths (command `produces`)
|
|
11
|
+
- `$eventContext.` (projections)
|
|
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
|
+
- Specification forms
|
|
14
|
+
|
|
15
|
+
Current pins: standalone Screenplay 4.127.0 / CLI 3.41.0; `versions.md` is the
|
|
16
|
+
single table. Compile evidence below keeps its historical tool labels.
|
|
17
|
+
|
|
3
18
|
The syntax lives in compiled example files next to this one (each is a Markdown file holding
|
|
4
19
|
one complete `screenplay` fence). Copy shapes from them; do not write a form that none of
|
|
5
20
|
them (or a compiled documentation example) shows. This file holds the prose rules; the
|
|
@@ -18,11 +33,31 @@ by `for_Documentation/when_comparing_the_grammar_against_the_parsers.cs`),
|
|
|
18
33
|
Screenplay CI (`when_compiling_every_example.cs`) against repository main: the standalone
|
|
19
34
|
compiler (4.68.0; `cratis` 3.28.2 or later bundles 4.66.0, which lacks ESM v7); older cratis bundles differ (`versions.md`).
|
|
20
35
|
|
|
36
|
+
## Samples and preview fixtures
|
|
37
|
+
|
|
38
|
+
Invoicing is a warning-free syntax showcase, not a runnable whole-language proof.
|
|
39
|
+
The released samples policy excepts these preview families and points to dedicated
|
|
40
|
+
fixtures; do not infer binder admission from the sample's coverage list:
|
|
41
|
+
|
|
42
|
+
| Family | Screenplay v4.125.0 fixture |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| Exact numbers | `Source/Screenplay/Compiler/Conformance/exact-named-rule-intent.play` |
|
|
45
|
+
| Sources/streams/command routes | `Documentation/screenplay/fixtures/source-streams.play` |
|
|
46
|
+
| Specification routes | `Source/Screenplay/Compiler/Conformance/specification-streams.play` |
|
|
47
|
+
| Systems/operations/specification steps | `Documentation/screenplay/fixtures/operations.play` |
|
|
48
|
+
| Refusals/redelivery/no-events | `Source/Screenplay/Compiler/Conformance/reaction-refusals-redelivery.play`, `no-events.play` in that directory |
|
|
49
|
+
|
|
50
|
+
Source: `v4.125.0:.cratis/ai/rules/project/samples.md`. Its preview list retains
|
|
51
|
+
sources/specification routes, but the released binder/runner admits them as v8;
|
|
52
|
+
its old blanket PLAY0268 wording is not the current route verdict. Other rows
|
|
53
|
+
remain unadmitted. Compile and test each relevant fixture with the chosen tool.
|
|
54
|
+
|
|
21
55
|
## Lexical and structural rules
|
|
22
56
|
- Spaces only, 2 per level (tabs: PLAY0006 W). Offside rule.
|
|
23
57
|
- Comments: `//` only. `#` is not a comment (PLAY0058 E in a projection) despite doc examples.
|
|
24
|
-
-
|
|
25
|
-
first
|
|
58
|
+
- Body directives can appear in any order; singleton `description` still appears
|
|
59
|
+
at most once. Canonical printing may place it first, but the parser does not
|
|
60
|
+
require that position. Source preambles precede declarations.
|
|
26
61
|
- Strings: `"..."`, escapes `\" \\ \n \r \t`; other backslashes kept (regex `"^INV-\d{6}$"` works).
|
|
27
62
|
- Structured values: single-line JSON, quoted keys (`[{"sku": "A-1", "quantity": 2}]`).
|
|
28
63
|
- One condition grammar (policy `require`, `produces when`, `require`, reaction `where`): `and`
|
|
@@ -40,6 +75,16 @@ compiler (4.68.0; `cratis` 3.28.2 or later bundles 4.66.0, which lacks ESM v7);
|
|
|
40
75
|
or keyed query argument) or `matches <commandProperty>`; executable; renderable only for
|
|
41
76
|
text-backed targets (Uuid-backed: STAGE-ESM-015).
|
|
42
77
|
|
|
78
|
+
## Exact numeric source mode
|
|
79
|
+
|
|
80
|
+
Start each file/import barrel with `numbers exact` to retain bounded decimal
|
|
81
|
+
literals without Double rounding. All assembled files must agree on mode;
|
|
82
|
+
PLAY0508–PLAY0513 diagnose malformed directives, range errors and disagreement.
|
|
83
|
+
Exact mode is authoring-only (`PLAY0268` on binding), not ESM v7 generated values.
|
|
84
|
+
Typed JSON needs consistent `sourceOptions.numericMode: "exact"` on every root
|
|
85
|
+
and `ExactNumber` literal envelopes with canonical fixed-point string values,
|
|
86
|
+
never JSON numbers. Details: model-authoring `references/language-reference.md`.
|
|
87
|
+
|
|
43
88
|
## Clause order inside a command (canonical)
|
|
44
89
|
description, properties, `reads`, `authorize`, `validate`, `produces`/`handler`, `concurrency`.
|
|
45
90
|
|
|
@@ -60,6 +105,17 @@ a reference scenario that supplies only a clock carries no caller audit identity
|
|
|
60
105
|
reference runner before relying on identity paths in a specification. Renderable:
|
|
61
106
|
`$context.occurred` only.
|
|
62
107
|
|
|
108
|
+
At 4.127.0, `$identity.id`/`.name`/`.userName` map to the same ESM kinds as
|
|
109
|
+
`$context.identity`; prefer the shorter root, but the older one stays supported.
|
|
110
|
+
Other built-ins parse but roles/claims/authentication status do not bind in
|
|
111
|
+
produces mappings. Identity details are metadata: executable detail reads report
|
|
112
|
+
PLAY0268. See command-surface `references/context.md`.
|
|
113
|
+
|
|
114
|
+
Use bare `pii`/`secret` on concepts (`personal` aliases `pii`); legacy markers
|
|
115
|
+
are PLAY0565 information and repeated markers are PLAY0653 warning. Event `subject`
|
|
116
|
+
is report-only lineage; processing purposes/checks/reports declare use, not lawful
|
|
117
|
+
processing or runtime retention. See command-surface `references/compliance.md`.
|
|
118
|
+
|
|
63
119
|
## `$eventContext.` (projections)
|
|
64
120
|
`eventType{.id,.generation,.tombstone}`, `eventSourceType`, `eventSourceId`, `eventStreamType`,
|
|
65
121
|
`eventStreamId`, `sequenceNumber`, `occurred`, `occurred.Week`, `eventStore`, `namespace`,
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
## Contents
|
|
4
4
|
|
|
5
5
|
- Warnings that hide defects (always validate with `--warnings-as-errors`)
|
|
6
|
-
-
|
|
7
|
-
-
|
|
6
|
+
- Source reference and identifier checks
|
|
7
|
+
- Caller identity, compliance and routes
|
|
8
|
+
- Structural completeness and timeline checks
|
|
9
|
+
- Editor versus C# verdicts
|
|
8
10
|
- Consistency errors (V1: the model contradicts itself)
|
|
9
11
|
- Binding (V2 and V3) - see `executable-subset.md` for the full table
|
|
10
12
|
- Frequent errors
|
|
@@ -33,13 +35,125 @@ then STAGE (V5 admission). Tool differences: `versions.md`.
|
|
|
33
35
|
| PLAY0455 | quoted import glob matches no file | fix the glob |
|
|
34
36
|
| PLAY0196/0197/0198 | unknown query/screen; ambiguous bare name | declare or qualify `Slice.Name` |
|
|
35
37
|
|
|
36
|
-
##
|
|
37
|
-
- Projection mapping to a property the read model does not declare.
|
|
38
|
-
- Undeclared event in `remove with` or in a capture `append`.
|
|
39
|
-
(Screenplay v4.66.0 `SemanticModelBinder` `BindMapping`, `LevelEvent`, `BindCaptureAppends`.)
|
|
38
|
+
## Source reference and identifier checks
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
At Screenplay 4.127.0 these are V1 source checks, not binding-only gaps:
|
|
41
|
+
|
|
42
|
+
| Code | Severity | Meaning |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| PLAY0514 | W | Projection mapping, children or nested target absent from the declared read-model/element shape; unknown/imported shapes are not guessed |
|
|
45
|
+
| PLAY0166 | W | Unknown event, including `remove with`, `remove via join on` and capture `append` |
|
|
46
|
+
| PLAY0515 | E | Personal/secret concept in a command identifier, typed `for` destination, event-source identity, stream-id type/part or route mapping source (including nested paths); keep a surrogate identity and protected data in payload |
|
|
47
|
+
|
|
48
|
+
Legacy compliance spellings (`@pii`/`@sensitive`) do not evade PLAY0515.
|
|
49
|
+
|
|
50
|
+
## Caller identity, compliance and routes
|
|
51
|
+
|
|
52
|
+
Source authority: v4.127.0 `diagnostics.md`, `identity.md`, `concepts.md`,
|
|
53
|
+
`purposes.md`, `events.md`, `event-sources.md`, `reactions.md`.
|
|
54
|
+
|
|
55
|
+
| Code | Severity | Meaning / fix |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| PLAY0152 | E | Bare `$identity` needs a property path |
|
|
58
|
+
| PLAY0155 | W | A `$identity` or `$context.identity` path names a property the caller does not carry; correct the built-in/detail name (claims suffixes are opaque) |
|
|
59
|
+
| PLAY0633 | E | Invalid identity header; write bare `identity` |
|
|
60
|
+
| PLAY0634 | E | Second identity block in one document; a second file uses the folder singular-declaration diagnostic |
|
|
61
|
+
| PLAY0635 | E | Invalid typed detail or escape source; exactly one source per detail |
|
|
62
|
+
| PLAY0636 | E | Unknown source kind; use claim, query, inline code or file |
|
|
63
|
+
| PLAY0637 | E | Detail has no source/implementation |
|
|
64
|
+
| PLAY0638 | E | Claim/query source has a body; refresh/cache belongs to runtime |
|
|
65
|
+
| PLAY0639 | E | Duplicate detail name |
|
|
66
|
+
| PLAY0640 | E | Detail redeclares a token built-in |
|
|
67
|
+
| PLAY0641 | E | Unknown/ambiguous source query |
|
|
68
|
+
| PLAY0642 | E | Source query is unkeyed or returns a list |
|
|
69
|
+
| PLAY0643 | E | Query source lacks `by <expression>` |
|
|
70
|
+
| PLAY0644 | E | Query key reads more than built-ins, claims or literals |
|
|
71
|
+
| PLAY0645 | E | Source query's effective gate depends on details |
|
|
72
|
+
| PLAY0646 | E | Result type/optionality differs from detail; optional result needs optional detail |
|
|
73
|
+
| PLAY0565 | I | Deprecated `@pii`, `sensitive`, `@sensitive`; repair to bare `pii`/`secret`, preserving notes/trivia |
|
|
74
|
+
| PLAY0566 | E | Unknown concept marker |
|
|
75
|
+
| PLAY0567/0568 | E | Invalid secret scope / repeated scope |
|
|
76
|
+
| PLAY0569 | W | Explicit secret scope ignored on `pii secret` because only `[PII]` renders |
|
|
77
|
+
| PLAY0570/0571 | E | Invalid personal-data qualifier/category / repeated special category |
|
|
78
|
+
| PLAY0653 | W | Repeated concept-header compliance marker; `pii personal` is one marker repeated. Keep the first; body settings stay attached; canonical printing writes one marker |
|
|
79
|
+
| PLAY0590 | E | More than one event subject; choose one, no safe automatic repair |
|
|
80
|
+
| PLAY0591 | E | Subject not required scalar String/Uuid or a String/Uuid/Int-backed concept |
|
|
81
|
+
| PLAY0592 | E | Protected subject concept; EventContext.Subject is plaintext, use a surrogate |
|
|
82
|
+
| PLAY0593 | E | Subject modifier outside event properties |
|
|
83
|
+
| PLAY0594 | E | Read-model subject mark is unsupported |
|
|
84
|
+
| PLAY0595 | E | Repeated/out-of-order subject modifier; write it last |
|
|
85
|
+
| PLAY0596/0597/0598/0599 | E | Malformed purpose declaration/reference/field; unknown closed value; repeated singleton; duplicate purpose name, respectively |
|
|
86
|
+
| PLAY0600/0601 | W | Unknown purpose reference / inconsistent legitimate-interest declaration |
|
|
87
|
+
| PLAY0602–0606 | W | Opt-in purposes coverage: uncovered pii, missing Art. 9 condition, Art. 10 authorization, basis, or unused purpose |
|
|
88
|
+
| PLAY0647 | E | Malformed/repeated/misplaced `runs as`, empty/duplicate role; one reaction-level line with quoted roles (zero allowed) |
|
|
89
|
+
| PLAY0648 | W | Gated invocation without declared identity; an authorization refusal branch gets PLAY0557 instead, once per invocation |
|
|
90
|
+
| PLAY0649 | W | Identity declared without invokes or inline/file implementation |
|
|
91
|
+
| PLAY0650 | W | C# bound-gate check: role needed by no invocation; opaque gates/implementation bodies suppress it |
|
|
92
|
+
| PLAY0651 | W | C# bound-gate check: declared actor definitely cannot satisfy gate; unknown is not denial |
|
|
93
|
+
| PLAY0652 | W/I | Opt-in `privilege`: trigger producer lacks every declared actor role (W), or has opaque gates that cannot be compared (I); clock/application triggers are silent |
|
|
94
|
+
| PLAY0504 | E | Missing/ambiguous stream, invalid/mismatched route parts, nominal source identifier/destination type mismatch or invalid stream-id literal; never a warning |
|
|
95
|
+
| PLAY0549 | E | Invalid specification route/mapping, including invalid stream-id literals |
|
|
96
|
+
|
|
97
|
+
Stream-id text must be nonempty, well-formed Unicode NFC: refuse, never normalize.
|
|
98
|
+
Integer ids in Double mode are within ±9007199254740991; Exact mode has no such
|
|
99
|
+
bound but remains unadmitted. Specification contradictions compare canonical ids,
|
|
100
|
+
so UUID casing does not distinguish routes. Composite encoding is ordered and
|
|
101
|
+
escapes `%`/`|`, not an inferred split of legacy text.
|
|
102
|
+
|
|
103
|
+
Identity declarations and event `subject` are metadata; reading a declared
|
|
104
|
+
`$identity` detail in executable clauses is PLAY0268. `runs as` is admitted as
|
|
105
|
+
ESM v10 in the current standalone, not a current PLAY0268 gap. Compliance markers
|
|
106
|
+
still block binding; purpose metadata is PLAY0270. See command-surface
|
|
107
|
+
`references/compliance.md` and `references/context.md` for syntax and limits.
|
|
108
|
+
|
|
109
|
+
`screenplay_repair_capabilities` and `propose-repair` advertise PLAY0653: a
|
|
110
|
+
concept-subject, line-only `PreserveTrivia` repair, no document-root or pinned
|
|
111
|
+
repair evidence. PLAY0565 supports one discovered `line` or a document-root
|
|
112
|
+
migration. Preview every repair; legal notes never move automatically.
|
|
113
|
+
|
|
114
|
+
## Structural completeness and timeline checks
|
|
115
|
+
|
|
116
|
+
Opt in with `--check <names>` or MCP diagnostics `checks`, then treat warnings
|
|
117
|
+
as errors if gating. Ordinary compile success does not imply these ran:
|
|
118
|
+
|
|
119
|
+
| Family | Codes | Checks |
|
|
120
|
+
| --- | --- | --- |
|
|
121
|
+
| data-bindings | PLAY0530/0531 | Conflicting visible bindings; binding/query read-model or cardinality mismatch |
|
|
122
|
+
| input-surfaces | PLAY0532/0533 | Missing command input form/issuing screen; missing reachable issuer |
|
|
123
|
+
| field-origins | PLAY0534 | Missing read-model builder or top-level field origin (AutoMap, identity and variants considered) |
|
|
124
|
+
| query-keys | PLAY0535 | Query argument not representable by known identity/fields |
|
|
125
|
+
| event-consumers | PLAY0536 | Latest local event generation lacks an operational consumer; a terminal fact can legitimately be reported |
|
|
126
|
+
| navigation | PLAY0537 | Unreachable screens; unreachable cycles do not establish an entry point |
|
|
127
|
+
| privilege | PLAY0652 | Elevated event-trigger producers must require every actor role; opaque gates are information, clock/application triggers exempt |
|
|
128
|
+
| purposes | PLAY0602–0606 | Personal-data coverage, special/criminal safeguards, basis and unused-purpose prompts; union of ancestor/direct references |
|
|
129
|
+
|
|
130
|
+
Whole-source errors skip completeness checks. Unknown/opaque coverage is not
|
|
131
|
+
invented: report skipped status/coverage and walk field lineage manually.
|
|
132
|
+
|
|
133
|
+
PLAY0516/0517 are **information**, so never fail `--warnaserror`. They review
|
|
134
|
+
presentation order, not execution: a backward event/read-model dependency or a
|
|
135
|
+
mutually dependent sibling group. A cycle group replaces internal individual
|
|
136
|
+
backward findings. Ordering roots are the sole source document, an importing
|
|
137
|
+
`application.play`, or a unique importing root; without one, folder timeline
|
|
138
|
+
checking is skipped. Safe PLAY0516 repairs move siblings/imports or pin files
|
|
139
|
+
before a retained glob; cycles and own-sub-feature findings have no repair.
|
|
140
|
+
|
|
141
|
+
## Editor versus C# verdicts
|
|
142
|
+
|
|
143
|
+
Monaco/VS Code use the TypeScript syntax/authoring compiler. They share projection
|
|
144
|
+
and protected-identifier checks (PLAY0514/0515), typed-example syntax (0518/0519),
|
|
145
|
+
guarded actions (0341–0348, including item paths/input bindings 0345–0348),
|
|
146
|
+
identity details (0633–0646), compliance/subject checks, reaction identity
|
|
147
|
+
(0647–0649), and reaction-refusal syntax/checks (0538–0545).
|
|
148
|
+
A shared catalog code is not proof that a check is implemented in both compilers.
|
|
149
|
+
|
|
150
|
+
C# CLI/MCP owns whole-application scoped diagnostics, opt-in completeness
|
|
151
|
+
(including PLAY0530–0537, PLAY0602–0606 and PLAY0652), bound reaction gate
|
|
152
|
+
checks PLAY0650/0651, semantic binding and PLAY0546 (a negated claim targets optional,
|
|
153
|
+
unavailable-subject or non-text data). The VS Code repair bridge is not a general
|
|
154
|
+
C# validator. A clean editor is not V1 for the complete application, V3 binding
|
|
155
|
+
or V4 execution. Run the CLI or MCP for those verdicts. Authority:
|
|
156
|
+
`v4.127.0:Documentation/screenplay/editor-diagnostics.md`, `diagnostics.md`.
|
|
43
157
|
|
|
44
158
|
## Consistency errors (V1: the model contradicts itself)
|
|
45
159
|
| Code | Meaning |
|
|
@@ -55,7 +169,7 @@ then STAGE (V5 admission). Tool differences: `versions.md`.
|
|
|
55
169
|
## Binding (V2 and V3) - see `executable-subset.md` for the full table
|
|
56
170
|
| Code | Meaning | Fix |
|
|
57
171
|
|---|---|---|
|
|
58
|
-
| PLAY0268 | construct the ESM cannot represent; read the message for the construct (`executable-subset.md` lists the common ones: handler, list or observable query,
|
|
172
|
+
| PLAY0268 | construct the ESM cannot represent; read the message for the construct (`executable-subset.md` lists the common ones: handler, list or observable query, `pii`, `produces when` over read models, v6 constructs on cratis before 3.28.2) | stay in design mode, or change the construct if the domain allows; never strip `pii`/authorization |
|
|
59
173
|
| PLAY0269 / 0270 | UI deferred / authoring metadata (I) | none |
|
|
60
174
|
| PLAY0271 | legacy `reads` or a `concurrency` block keeps its legacy meaning and cannot bind (error) | design gap; a constraint for uniqueness; protected decisions are a target requirement |
|
|
61
175
|
| PLAY0273 | incoherent: ambiguous `for`, property not on event revision, operand type mismatch, derived `$eventContext` path | fix the reference |
|
|
@@ -99,7 +213,11 @@ Fix order: E at V1 -> W at V1 -> silent-gap check -> V2 codes (if the mode needs
|
|
|
99
213
|
Report each as `code file:line one-line meaning`; never paste more than about 30 lines.
|
|
100
214
|
|
|
101
215
|
## Render admission (V5): `STAGE-*`, `CLI-RENDER-*`, `STAGE-CRATIS-*`
|
|
102
|
-
Full table with causes: `renderable-subset.md`.
|
|
216
|
+
Full table with causes: `renderable-subset.md`. The Stage 4.24.x rows below
|
|
217
|
+
retain historical source/probe evidence. Current CLI 3.41.0 admits up to ESM v7
|
|
218
|
+
for Stage planning; above that is CLI-RENDER-004. Its v7 corpus is refused by
|
|
219
|
+
STAGE-ESM-028 (generated values) and -029 (responses), not the old v7 version gate.
|
|
220
|
+
Codes in the historical snapshot:
|
|
103
221
|
| Code | Meaning |
|
|
104
222
|
|---|---|
|
|
105
223
|
| STAGE-ESM-016 | model above the admitted ESM schema (v4 on Stage 4.24.2: v5 absence and v6 constructs; 4.24.1 admitted v3, so a v4 model with generations was refused): whole model refused |
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Documentation contradictions and which side to trust
|
|
2
2
|
|
|
3
|
+
Current pins are Screenplay 4.127.0 / CLI 3.41.0 (`versions.md`). This is a
|
|
4
|
+
**historical** contradiction inventory, not a claim that all listed defects still
|
|
5
|
+
exist. Current grammar documents exact numbers and free description placement;
|
|
6
|
+
sources/routes bind as ESM v8; PLAY0515 is a source error; CLI v7 reaches Stage.
|
|
7
|
+
|
|
8
|
+
At v4.127.0 `concepts.md` links the shipped purpose declarations/checks/record
|
|
9
|
+
but its final identifier section still calls them later phases. `purposes.md`,
|
|
10
|
+
the released grammar/tool and successful purpose probes take precedence. The same
|
|
11
|
+
page's legacy `@pii` mentions do not change bare `pii`/`secret` canonical syntax;
|
|
12
|
+
legacy forms compile with PLAY0565 information, duplicates with PLAY0653 warning.
|
|
13
|
+
Event `subject` remains report-only, despite accepted future lineage work.
|
|
14
|
+
|
|
3
15
|
`D/` is Screenplay `Documentation/screenplay/` at **v4.66.0**; line numbers were re-read at
|
|
4
16
|
that tag. Rule: the compiler you ran decides what the tool accepts today; the documentation
|
|
5
17
|
and the domain decide what the model should mean. When they disagree, follow the compiler
|
|
@@ -32,7 +44,7 @@ read from source or documentation.
|
|
|
32
44
|
| 19 | `$strings` constraint messages | `D/constraints.md:31` vs `D/internationalization.md:55` | the compiler keeps the key; realization localizes |
|
|
33
45
|
| 20 | composite key braces | optional in the EBNF; both forms in docs | both fine |
|
|
34
46
|
| 21 | counters list | `D/projections/index.md:54` lists only increment and decrement | `count` exists too [probed] |
|
|
35
|
-
| 22 | ESM version allocation | older text and decisions 0023 and 0024 give exact numbers, operations, streams and reads fixed numbers (v7 to v11) |
|
|
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 generated values/responses, v8 routing, v10 reaction identity at 4.125.0; operations and exact numbers remain unadmitted. Never infer current admission from older proposed allocations |
|
|
36
48
|
| 23 | claim conditions | the condition grammar lists `==` | claims need `matches` (PLAY0120) [probed] |
|
|
37
49
|
| 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] |
|
|
38
50
|
| 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`) |
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Contents
|
|
4
4
|
|
|
5
|
+
- Caller and compliance boundary (4.127.0)
|
|
5
6
|
- Admitted on both compilers
|
|
6
7
|
- Admitted from Screenplay 4.61 (ESM v6): standalone tool and cratis 3.28.2 or later
|
|
7
8
|
- Generated values and responses (ESM v7): standalone 4.68.0 or later only
|
|
@@ -10,6 +11,12 @@
|
|
|
10
11
|
- Not refused, but do not rely on it
|
|
11
12
|
- Never do this to reach V3
|
|
12
13
|
|
|
14
|
+
Current pins are Screenplay 4.127.0 / CLI 3.41.0 (`versions.md`). Detailed
|
|
15
|
+
4.66.0/4.68.0 binder probes below retain their historical labels. Current source
|
|
16
|
+
admits sources/streams/routes as ESM v8 and policy negation as ESM v7; operations,
|
|
17
|
+
exact numbers and reaction refusals/redelivery remain unadmitted. Use the actual
|
|
18
|
+
binder before promoting an older probe to a current capability claim.
|
|
19
|
+
|
|
13
20
|
What the binder admits, and what it refuses with which code. The answer depends on the
|
|
14
21
|
compiler version: standalone Screenplay 4.68.0 admits ESM v1 to v7; the 4.66.0 compiler bundled in
|
|
15
22
|
cratis 3.28.2 and 3.28.3 admits v1 to v6; the 4.60.1 compiler bundled in cratis before 3.28.2 admits v1 to v5.
|
|
@@ -26,6 +33,20 @@ Complete examples that bind live in `executable-example.md` (both compilers),
|
|
|
26
33
|
(ESM v6; standalone tool and cratis 3.28.2 or later) and `generated-responses-example.md`
|
|
27
34
|
(ESM v7; standalone tool 4.68.0 or later only).
|
|
28
35
|
|
|
36
|
+
## Caller and compliance boundary (4.127.0)
|
|
37
|
+
|
|
38
|
+
`$identity.id`/`.name`/`.userName` are aliases of the admitted
|
|
39
|
+
`$context.identity` produces-mapping values. Authentication status, roles and
|
|
40
|
+
claims still refuse there (PLAY0268); the older root is not deprecated.
|
|
41
|
+
A top-level `identity` block alone is authoring metadata and does not block
|
|
42
|
+
readiness. Executable reads of declared `$identity.<detail>` do (PLAY0268);
|
|
43
|
+
`$context.identity` remains built-ins only. Purposes and event `subject` marks
|
|
44
|
+
are metadata (PLAY0270), not source resolution, retention or subject propagation.
|
|
45
|
+
Bare `pii`/`personal` and `secret` concepts, scopes and qualifiers still block
|
|
46
|
+
binding. Legacy spellings compile with PLAY0565 information; duplicates warn
|
|
47
|
+
PLAY0653. Never remove protection; see command-surface `references/compliance.md`.
|
|
48
|
+
Authority: v4.127.0 `context.md`, `identity.md`, `concepts.md`, `events.md`, `purposes.md`.
|
|
49
|
+
|
|
29
50
|
## Admitted on both compilers
|
|
30
51
|
|
|
31
52
|
- `StateChange` and `StateView` slices.
|
|
@@ -63,9 +84,10 @@ Complete examples that bind live in `executable-example.md` (both compilers),
|
|
|
63
84
|
|
|
64
85
|
- `slice Automation` with `reaction`: `when <Event>` (with values) then `produces` (no
|
|
65
86
|
`for` means the trigger's event source) or `invokes <Command>`; `where`; clock `at ... on
|
|
66
|
-
...` with an explicit `for`.
|
|
67
|
-
|
|
68
|
-
|
|
87
|
+
...` with an explicit `for`. Without a declared actor, a gated invocation denies.
|
|
88
|
+
On 4.125.0 reaction `runs as system role "<Role>"` supplies the actor and
|
|
89
|
+
selects ESM v10; keep the gate. CLI 3.41.0's older compiler rejects this syntax,
|
|
90
|
+
while standalone reference execution admits it.
|
|
69
91
|
- Application `trigger` declarations and `when trigger` specifications.
|
|
70
92
|
- `slice Translate` with `capture` (`key`, `map ... translate`, `append ... when x from "a"
|
|
71
93
|
to "b"`), and `given capture` / `when capture` specifications.
|
|
@@ -152,7 +174,7 @@ bodies still leave their owner non-executable.
|
|
|
152
174
|
| --- | --- | --- |
|
|
153
175
|
| `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` |
|
|
154
176
|
| Unquoted `import Other.Contract` | PLAY0268 | external contract import is not bound |
|
|
155
|
-
|
|
|
177
|
+
| `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 |
|
|
156
178
|
| `query` returning a collection (`RM[]`), or without exactly one caller-supplied `by` | PLAY0268 | "must declare one caller-supplied 'by' argument" or "must return one optional read model" |
|
|
157
179
|
| `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 |
|
|
158
180
|
| `contains` or `starts with` in conditions | PLAY0268 | equality and numeric ordering only |
|
|
@@ -173,7 +195,7 @@ bodies still leave their owner non-executable.
|
|
|
173
195
|
| `$eventContext.occurred.Week` | PLAY0273 | derived value |
|
|
174
196
|
| Projection `parent p` where `p` is not on the child event | PLAY0273 | "Event property not found" |
|
|
175
197
|
| `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 |
|
|
176
|
-
| Operations or systems, `numbers exact`,
|
|
198
|
+
| 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`) |
|
|
177
199
|
| Spec of a gated command or query without `given caller` | PLAY0389 | module and feature gates count |
|
|
178
200
|
| `given` or `then readmodel` missing the key property | PLAY0351 | key is the keyed query's `by` |
|
|
179
201
|
| When-less spec asserting events or errors | PLAY0352 | |
|
|
@@ -185,15 +207,17 @@ bodies still leave their owner non-executable.
|
|
|
185
207
|
- Plain `produces` without `for` binds (PLAY0478, information) but means allocation in the
|
|
186
208
|
ESM and "the identifier" in rendered Arc code. Always write `for`.
|
|
187
209
|
- A projection-level (root) `remove via join` binds, but the reference execution plan refuses it (`UnsupportedProjectionBlock`), so no specification in the application runs; Chronicle wires it as a child pull. See the blocked-plan rows above.
|
|
188
|
-
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
field lineage by hand.
|
|
210
|
+
- At Screenplay 4.125.0, V1 reports absent projection/children/nested targets
|
|
211
|
+
with PLAY0514 and unknown removal/capture events with PLAY0166. An unmapped
|
|
212
|
+
declared field can be found by opt-in `--check field-origins` (PLAY0534);
|
|
213
|
+
unknown or opaque coverage is skipped, so still check lineage by hand.
|
|
193
214
|
|
|
194
215
|
## Never do this to reach V3
|
|
195
216
|
|
|
196
|
-
Do not remove
|
|
217
|
+
Do not remove `pii`, `secret`, `authorize` or policies, list queries, automations or
|
|
197
218
|
rules a domain needs just to make binding pass. Report `V3 blocked: <codes>` and record the
|
|
198
|
-
slice in the gap list. A
|
|
199
|
-
either attribute on an
|
|
219
|
+
slice in the gap list. A `pii` or `secret` marker blocks V3 and rendering, and
|
|
220
|
+
either attribute on an identifier or typed destination is a source error
|
|
221
|
+
PLAY0515 on the current compiler (including stream-id parts and route mapping
|
|
222
|
+
sources). Chronicle also rejects `[PII]`/`[Encrypted]` on event-source identifiers
|
|
223
|
+
(CHR0034/CHR0052). Keep surrogate identity and protected payload separate.
|
|
@@ -28,6 +28,13 @@ is adapted with the agreement of Martin Dilger and Nebulit GmbH.
|
|
|
28
28
|
|
|
29
29
|
## Sources read for facts
|
|
30
30
|
|
|
31
|
+
- Identity/compliance/route-literal guidance: Screenplay `v4.127.0` (`e70435a4`)
|
|
32
|
+
`identity.md`, `context.md`, `concepts.md`, `purposes.md`, `events.md`,
|
|
33
|
+
`event-sources.md`, `reactions.md`, `completeness.md`, `diagnostics.md`,
|
|
34
|
+
`editor-diagnostics.md`, MCP reference/authoring tools and `Semantics/Versions.cs`.
|
|
35
|
+
Installed 4.127.0 version and changed examples were checked separately. Historical
|
|
36
|
+
execution and renderer probes retain their labels; CLI stays 3.41.0.
|
|
37
|
+
- Earlier baseline: Screenplay `v4.125.0` `Documentation/screenplay/{tool,diagnostics,editor-diagnostics,grammar,event-sources,specifications,policies}.md`, MCP reference/authoring guides and `Semantics/Versions.cs`; CLI `v3.41.0` dependency pins, `RenderedSemanticVersions.cs` and its v7 planning specification. Installed versions/CLI help and changed examples were checked separately. Pins are in `versions.md`; the older probes below retain their original labels.
|
|
31
38
|
- Screenplay `v4.66.0` (`c89198b`): `Documentation/screenplay/` (grammar, commands, queries,
|
|
32
39
|
specifications, reactions, diagnostics, mcp), `decisions/0017`, `0020`, `0022` to `0024`,
|
|
33
40
|
`Source/DotNET/Screenplay/Semantics/` (binder, versions, execution),
|
|
@@ -39,8 +46,9 @@ is adapted with the agreement of Martin Dilger and Nebulit GmbH.
|
|
|
39
46
|
- cratis `v3.28.2` (`141c499`; `Render/`, `Run/`, `Prologue/` and `Screenplay/Generate*` are unchanged since `v3.27.1`, `a327e89`): `Source/Cli/Commands/Render/`, `ScreenplayMcpRoot.cs`,
|
|
40
47
|
`Documentation/reference/screenplay.md`.
|
|
41
48
|
- Arc `v22.50.5` and Chronicle `v19.32.0` for the code-level facts cited in `versions.md`.
|
|
42
|
-
-
|
|
43
|
-
|
|
49
|
+
- Historical issue inventory at the old probes: cli#242, #243, #244, #245;
|
|
50
|
+
Stage#79, #165, #178; Chronicle#3744, #4123, #4131. Current invocation actor and
|
|
51
|
+
reference-execution availability are verified against v4.125.0, not old open-issue status.
|
|
44
52
|
|
|
45
53
|
## Changes from the earlier toolkit
|
|
46
54
|
|