@cratis/pi 7.22.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 +13 -4
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +4 -3
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +37 -36
- package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +154 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +48 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +1 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/verification.json +6 -0
- package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +10 -3
- package/package/corpus/skills/cratis-screenplay-discovery/references/interview-questions.md +1 -1
- package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +3 -3
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/naming-primitives.md +5 -3
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +3 -1
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +10 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +5 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +33 -6
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +15 -1
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +37 -1
- package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +8 -1
- package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +1 -1
- 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 +7 -0
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +3 -3
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +1 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +10 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/references/command-inventory.md +2 -1
- 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-specifications/SKILL.md +1 -1
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +8 -0
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +18 -4
- 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 +9 -0
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +3 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +12 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +12 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +75 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +8 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +19 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +7 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +16 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +21 -0
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +18 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +7 -6
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +10 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +6 -0
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +2 -2
- package/package.json +1 -1
|
@@ -22,7 +22,7 @@ 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
|
-
The standalone pin is Screenplay 4.
|
|
25
|
+
The standalone pin is Screenplay 4.127.0. CLI 3.41.0 bundles Screenplay 4.114.0,
|
|
26
26
|
Stage 4.51.3 and Cratis.Arc.Screenplay 22.54.0. The single version table records
|
|
27
27
|
released source evidence and historical probes separately; do not relabel an old
|
|
28
28
|
render/browser result as a probe of the current packages.
|
|
@@ -31,7 +31,7 @@ Historical screens-release evidence: CLI 3.40.7 / Stage 4.51.1 / bundled
|
|
|
31
31
|
Screenplay 4.114.0 opened the canonical corpus with `executableReady true`
|
|
32
32
|
and the stdio transcript exposed 37 tools; standalone language 4.122.0 was
|
|
33
33
|
recorded in that vector. These retained results are not a rerun on CLI 3.41.0
|
|
34
|
-
or Screenplay 4.
|
|
34
|
+
or Screenplay 4.127.0.
|
|
35
35
|
|
|
36
36
|
## Ground rules
|
|
37
37
|
|
|
@@ -49,7 +49,7 @@ or Screenplay 4.125.0.
|
|
|
49
49
|
5. **Capability is not correctness.** The tool you ran decides what is accepted today; the
|
|
50
50
|
domain and the documented semantics decide what is correct. On conflict keep the correct
|
|
51
51
|
model and record a tool gap; never reshape a model to silence a tool.
|
|
52
|
-
6. **Never remove
|
|
52
|
+
6. **Never remove `pii`, `secret`, authorization, list queries, automations or rules
|
|
53
53
|
to reach V3 or a render.** Report the verdict as blocked with the codes.
|
|
54
54
|
7. **A clean verdict proves only its own layer.** "Not run" with the reason is a valid
|
|
55
55
|
result. Specifications written or bound are never specifications passing.
|
|
@@ -90,7 +90,7 @@ server with a fixed root when the tool is older than 4.63.2 (the roots bug hit 4
|
|
|
90
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".
|
|
91
91
|
|
|
92
92
|
One line per verdict, tool first, for example `V1 pass (screenplay 4.68.0, 3 files)` and
|
|
93
|
-
`V3 blocked: PLAY0268 x3 (list query,
|
|
93
|
+
`V3 blocked: PLAY0268 x3 (list query, pii)`. Name the source identity (commit plus the digest from
|
|
94
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
|
|
95
95
|
`modelRevision`, which is semantic and, without `.screenplay/identities.json`,
|
|
96
96
|
changes with the root folder name.
|
|
@@ -101,7 +101,7 @@ changes with the root folder name.
|
|
|
101
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.
|
|
102
102
|
- **Executable** (binds, V3): `references/executable-subset.md`. Keyed optional queries
|
|
103
103
|
only; no handler (PLAY0268, with or without `implementation`/`hint`); `reads` and
|
|
104
|
-
`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
|
|
105
105
|
later (standalone, and cratis 3.28.2 or later); generated values and `returns` responses bind (ESM v7)
|
|
106
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
107
|
- **Renderable** (V5): `references/renderable-subset.md` retains explicitly labeled
|
|
@@ -112,6 +112,13 @@ changes with the root folder name.
|
|
|
112
112
|
render refuses versions above v7 (`CLI-RENDER-004`). Operations and exact numeric
|
|
113
113
|
mode remain authorable/unadmitted. Details: `references/sources-and-streams.md`.
|
|
114
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`.
|
|
121
|
+
|
|
115
122
|
## Edit strategy
|
|
116
123
|
|
|
117
124
|
- **Discover the capabilities available** (tool, version, `tools/list`, model root) once,
|
|
@@ -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"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
- PDL quick reference (most forms are compiled in `pdl-example.md` or `cheat-sheet-example.md`; `remove via join` and `$eventContext.occurred` are not)
|
|
13
13
|
- Specification forms
|
|
14
14
|
|
|
15
|
-
Current pins: standalone Screenplay 4.
|
|
15
|
+
Current pins: standalone Screenplay 4.127.0 / CLI 3.41.0; `versions.md` is the
|
|
16
16
|
single table. Compile evidence below keeps its historical tool labels.
|
|
17
17
|
|
|
18
18
|
The syntax lives in compiled example files next to this one (each is a Markdown file holding
|
|
@@ -105,6 +105,17 @@ a reference scenario that supplies only a clock carries no caller audit identity
|
|
|
105
105
|
reference runner before relying on identity paths in a specification. Renderable:
|
|
106
106
|
`$context.occurred` only.
|
|
107
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
|
+
|
|
108
119
|
## `$eventContext.` (projections)
|
|
109
120
|
`eventType{.id,.generation,.tombstone}`, `eventSourceType`, `eventSourceId`, `eventStreamType`,
|
|
110
121
|
`eventStreamId`, `sequenceNumber`, `occurred`, `occurred.Week`, `eventStore`, `namespace`,
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
- Warnings that hide defects (always validate with `--warnings-as-errors`)
|
|
6
6
|
- Source reference and identifier checks
|
|
7
|
+
- Caller identity, compliance and routes
|
|
7
8
|
- Structural completeness and timeline checks
|
|
8
9
|
- Editor versus C# verdicts
|
|
9
10
|
- Consistency errors (V1: the model contradicts itself)
|
|
@@ -36,7 +37,7 @@ then STAGE (V5 admission). Tool differences: `versions.md`.
|
|
|
36
37
|
|
|
37
38
|
## Source reference and identifier checks
|
|
38
39
|
|
|
39
|
-
At Screenplay 4.
|
|
40
|
+
At Screenplay 4.127.0 these are V1 source checks, not binding-only gaps:
|
|
40
41
|
|
|
41
42
|
| Code | Severity | Meaning |
|
|
42
43
|
| --- | --- | --- |
|
|
@@ -46,6 +47,70 @@ At Screenplay 4.125.0 these are V1 source checks, not binding-only gaps:
|
|
|
46
47
|
|
|
47
48
|
Legacy compliance spellings (`@pii`/`@sensitive`) do not evade PLAY0515.
|
|
48
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
|
+
|
|
49
114
|
## Structural completeness and timeline checks
|
|
50
115
|
|
|
51
116
|
Opt in with `--check <names>` or MCP diagnostics `checks`, then treat warnings
|
|
@@ -59,6 +124,8 @@ as errors if gating. Ordinary compile success does not imply these ran:
|
|
|
59
124
|
| query-keys | PLAY0535 | Query argument not representable by known identity/fields |
|
|
60
125
|
| event-consumers | PLAY0536 | Latest local event generation lacks an operational consumer; a terminal fact can legitimately be reported |
|
|
61
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 |
|
|
62
129
|
|
|
63
130
|
Whole-source errors skip completeness checks. Unknown/opaque coverage is not
|
|
64
131
|
invented: report skipped status/coverage and walk field lineage manually.
|
|
@@ -75,15 +142,18 @@ before a retained glob; cycles and own-sub-feature findings have no repair.
|
|
|
75
142
|
|
|
76
143
|
Monaco/VS Code use the TypeScript syntax/authoring compiler. They share projection
|
|
77
144
|
and protected-identifier checks (PLAY0514/0515), typed-example syntax (0518/0519),
|
|
78
|
-
guarded actions (0341–0348
|
|
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).
|
|
79
148
|
A shared catalog code is not proof that a check is implemented in both compilers.
|
|
80
149
|
|
|
81
150
|
C# CLI/MCP owns whole-application scoped diagnostics, opt-in completeness
|
|
82
|
-
(PLAY0530–0537
|
|
151
|
+
(including PLAY0530–0537, PLAY0602–0606 and PLAY0652), bound reaction gate
|
|
152
|
+
checks PLAY0650/0651, semantic binding and PLAY0546 (a negated claim targets optional,
|
|
83
153
|
unavailable-subject or non-text data). The VS Code repair bridge is not a general
|
|
84
154
|
C# validator. A clean editor is not V1 for the complete application, V3 binding
|
|
85
155
|
or V4 execution. Run the CLI or MCP for those verdicts. Authority:
|
|
86
|
-
`v4.
|
|
156
|
+
`v4.127.0:Documentation/screenplay/editor-diagnostics.md`, `diagnostics.md`.
|
|
87
157
|
|
|
88
158
|
## Consistency errors (V1: the model contradicts itself)
|
|
89
159
|
| Code | Meaning |
|
|
@@ -99,7 +169,7 @@ or V4 execution. Run the CLI or MCP for those verdicts. Authority:
|
|
|
99
169
|
## Binding (V2 and V3) - see `executable-subset.md` for the full table
|
|
100
170
|
| Code | Meaning | Fix |
|
|
101
171
|
|---|---|---|
|
|
102
|
-
| 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 |
|
|
103
173
|
| PLAY0269 / 0270 | UI deferred / authoring metadata (I) | none |
|
|
104
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 |
|
|
105
175
|
| PLAY0273 | incoherent: ambiguous `for`, property not on event revision, operand type mismatch, derived `$eventContext` path | fix the reference |
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
# Documentation contradictions and which side to trust
|
|
2
2
|
|
|
3
|
-
Current pins are Screenplay 4.
|
|
3
|
+
Current pins are Screenplay 4.127.0 / CLI 3.41.0 (`versions.md`). This is a
|
|
4
4
|
**historical** contradiction inventory, not a claim that all listed defects still
|
|
5
5
|
exist. Current grammar documents exact numbers and free description placement;
|
|
6
6
|
sources/routes bind as ESM v8; PLAY0515 is a source error; CLI v7 reaches Stage.
|
|
7
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
|
+
|
|
8
15
|
`D/` is Screenplay `Documentation/screenplay/` at **v4.66.0**; line numbers were re-read at
|
|
9
16
|
that tag. Rule: the compiler you ran decides what the tool accepts today; the documentation
|
|
10
17
|
and the domain decide what the model should mean. When they disagree, follow the compiler
|
|
@@ -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,7 +11,7 @@
|
|
|
10
11
|
- Not refused, but do not rely on it
|
|
11
12
|
- Never do this to reach V3
|
|
12
13
|
|
|
13
|
-
Current pins are Screenplay 4.
|
|
14
|
+
Current pins are Screenplay 4.127.0 / CLI 3.41.0 (`versions.md`). Detailed
|
|
14
15
|
4.66.0/4.68.0 binder probes below retain their historical labels. Current source
|
|
15
16
|
admits sources/streams/routes as ESM v8 and policy negation as ESM v7; operations,
|
|
16
17
|
exact numbers and reaction refusals/redelivery remain unadmitted. Use the actual
|
|
@@ -32,6 +33,20 @@ Complete examples that bind live in `executable-example.md` (both compilers),
|
|
|
32
33
|
(ESM v6; standalone tool and cratis 3.28.2 or later) and `generated-responses-example.md`
|
|
33
34
|
(ESM v7; standalone tool 4.68.0 or later only).
|
|
34
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
|
+
|
|
35
50
|
## Admitted on both compilers
|
|
36
51
|
|
|
37
52
|
- `StateChange` and `StateView` slices.
|
|
@@ -159,7 +174,7 @@ bodies still leave their owner non-executable.
|
|
|
159
174
|
| --- | --- | --- |
|
|
160
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` |
|
|
161
176
|
| Unquoted `import Other.Contract` | PLAY0268 | external contract import is not bound |
|
|
162
|
-
|
|
|
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 |
|
|
163
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" |
|
|
164
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 |
|
|
165
180
|
| `contains` or `starts with` in conditions | PLAY0268 | equality and numeric ordering only |
|
|
@@ -199,9 +214,9 @@ bodies still leave their owner non-executable.
|
|
|
199
214
|
|
|
200
215
|
## Never do this to reach V3
|
|
201
216
|
|
|
202
|
-
Do not remove
|
|
217
|
+
Do not remove `pii`, `secret`, `authorize` or policies, list queries, automations or
|
|
203
218
|
rules a domain needs just to make binding pass. Report `V3 blocked: <codes>` and record the
|
|
204
|
-
slice in the gap list. A
|
|
219
|
+
slice in the gap list. A `pii` or `secret` marker blocks V3 and rendering, and
|
|
205
220
|
either attribute on an identifier or typed destination is a source error
|
|
206
221
|
PLAY0515 on the current compiler (including stream-id parts and route mapping
|
|
207
222
|
sources). Chronicle also rejects `[PII]`/`[Encrypted]` on event-source identifiers
|
|
@@ -28,7 +28,13 @@ is adapted with the agreement of Martin Dilger and Nebulit GmbH.
|
|
|
28
28
|
|
|
29
29
|
## Sources read for facts
|
|
30
30
|
|
|
31
|
-
-
|
|
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.
|
|
32
38
|
- Screenplay `v4.66.0` (`c89198b`): `Documentation/screenplay/` (grammar, commands, queries,
|
|
33
39
|
specifications, reactions, diagnostics, mcp), `decisions/0017`, `0020`, `0022` to `0024`,
|
|
34
40
|
`Source/DotNET/Screenplay/Semantics/` (binder, versions, execution),
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# Renderable subset (V5): what `cratis render` admits
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Contents
|
|
4
|
+
|
|
5
|
+
- What Stage 4.24 admits
|
|
6
|
+
- Authoring consequences in renderable mode
|
|
7
|
+
- Ownership, publication and recovery
|
|
8
|
+
- Reading V5
|
|
9
|
+
|
|
10
|
+
Current pins: standalone Screenplay 4.127.0; CLI 3.41.0 bundles Screenplay
|
|
4
11
|
4.114.0 and Stage 4.51.3 (`versions.md`). CLI admits ESM v7 to Stage planning;
|
|
5
12
|
above v7 is CLI-RENDER-004. Its v7 canonical corpus gets STAGE-ESM-028/029 for
|
|
6
13
|
generated values/responses (`v3.41.0:Source/Cli.Specs/for_ScreenplayPlanning/when_planning_an_esm_v7_model.cs`).
|
|
@@ -48,6 +55,14 @@ whole automation is hand-written (gap-fill).
|
|
|
48
55
|
| Specifications | command-action scenarios: given events, `when <Command>`, `then` events (ordered or any order), `then readmodel`, `then query`, `then error` (naming a rendered constraint or message), `then denied`, `given caller`. Two narrow when-less routes: an unprotected single `then query` seeded by exactly one `given readmodel` whose key and values match (no given events, no caller), and a query-only denial (`given caller`, one `then query` with no results, `then denied`, a protected query, no role claims) | `then no readmodel`, `when append`, composite values, error codes not naming a rendered constraint: 011. Any other when-less specification (for example given events with `then query`) fails 011 |
|
|
49
56
|
| Compliance | none | any `@pii` or `@sensitive` already fails binding (PLAY0268). The C# provider mapping (Stage v4.29.0, Stage#197) is `@pii` to `[PII]`, `@sensitive` to `[Encrypted]` + `[NotAudited]`, both to `[PII]` only |
|
|
50
57
|
|
|
58
|
+
At standalone 4.127.0, compliance uses bare `pii`/`secret` (legacy markers are
|
|
59
|
+
accepted with PLAY0565 information); either still refuses binding. Identity blocks,
|
|
60
|
+
purposes and event `subject` are authoring metadata, not provider realization;
|
|
61
|
+
executing identity detail reads still refuses PLAY0268. Current source/stream
|
|
62
|
+
routes are admitted as v8, including composite ids, not the historical binding
|
|
63
|
+
refusal above; CLI 3.41.0 still refuses versions above v7. Never split hand-joined
|
|
64
|
+
legacy ids or drop protected ids into routing to fit a renderer (PLAY0515).
|
|
65
|
+
|
|
51
66
|
## Authoring consequences in renderable mode
|
|
52
67
|
|
|
53
68
|
- `produces when` is STAGE-ESM-006: split conditional outcomes into separate commands, or
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
- Admission
|
|
6
6
|
- Declare and route
|
|
7
7
|
- Specification routes
|
|
8
|
+
- Canonical keys and evolution
|
|
8
9
|
- Boundaries
|
|
9
10
|
|
|
10
11
|
## Admission
|
|
@@ -82,6 +83,26 @@ Typed event examples may supply a route, replaced as a whole by step overrides;
|
|
|
82
83
|
`for` is independent. No spelling restores a wildcard after an example supplies
|
|
83
84
|
a route. See `cratis-screenplay-specifications` for fixture provenance.
|
|
84
85
|
|
|
86
|
+
## Canonical keys and evolution
|
|
87
|
+
|
|
88
|
+
At Screenplay 4.127.0, stream-id literals on command routes (PLAY0504) and
|
|
89
|
+
specification routes (PLAY0549) must be nonempty, well-formed Unicode NFC text;
|
|
90
|
+
invalid text is refused, never normalized. In Double numeric mode integer ids
|
|
91
|
+
are within ±(2^53−1); Exact mode has no such bound but still refuses binding.
|
|
92
|
+
Known routed command identifiers and production destination types must equal
|
|
93
|
+
the source's nominal identifier type (PLAY0504 is an error, not a warning).
|
|
94
|
+
Allocation is typed by the generated identifier, or without one requires a
|
|
95
|
+
UUID-based source. Unrouted commands are unaffected.
|
|
96
|
+
|
|
97
|
+
Composite schemas declare `streamId` with at least two named scalar parts.
|
|
98
|
+
Command routes map every part once; specification parts are literals only.
|
|
99
|
+
Format each part by the portable scalar rules, escape `%` to `%25` and `|` to
|
|
100
|
+
`%7C`, then join with `|` in declaration order; decoding is strict. Specification
|
|
101
|
+
route contradictions compare canonical values part by part (UUID case variants
|
|
102
|
+
are equal). Changing a stored stream's key schema needs a new stream identity
|
|
103
|
+
or migration. Keep hand-joined legacy ids as scalar text: never split by guesswork.
|
|
104
|
+
Authority: v4.127.0 `event-sources.md`, `diagnostics.md`, decision 0033.
|
|
105
|
+
|
|
85
106
|
## Boundaries
|
|
86
107
|
|
|
87
108
|
Reference routing does not prove target deployment, concurrency or protected
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Traps (one line each, with the fix)
|
|
2
2
|
|
|
3
|
-
Current pins: Screenplay 4.
|
|
3
|
+
Current pins: Screenplay 4.127.0 / CLI 3.41.0 (`versions.md`). Unless explicitly
|
|
4
4
|
updated below, [probed]/[source] rows retain their historical v4.66.0/CLI 3.28.2
|
|
5
5
|
scope; negative capability claims there are not current verdicts. Current routes
|
|
6
6
|
bind as v8, v7 reaches Stage planning, reference tests have CLI/MCP routes, and
|
|
@@ -46,6 +46,23 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
|
|
|
46
46
|
37. Personas are not in the ESM (Screenplay#254); specs cannot reference them. Write `given caller` as the roles/claims that stand for the persona.
|
|
47
47
|
38. A rule that depends on stored state is `reads <View>` + `require <expr> message "..."` (stated intent; PLAY0268/0271 at binding are expected in design mode). The slice `description` must mark it NOT enforced in the model today (Screenplay#129/#209) and name the target: Arc `[ProtectedDecision]` + `DecisionRead<T>` (Arc v22.39.0 and later; not available in a Stage-rendered app on Arc 22.25.0), Chronicle DCB (`concurrency` scope), or a constraint where one fits. Forbidden: caller-supplied copies of state in `require`, boolean attestation inputs (`confirmsX == true`), rules hidden in `handler`/implementation-hint prose. An unguarded materialized read is unsafe for a protected decision.
|
|
48
48
|
|
|
49
|
+
Current identity/compliance traps (v4.127.0 `identity.md`, `concepts.md`, `events.md`,
|
|
50
|
+
`purposes.md`, `diagnostics.md`):
|
|
51
|
+
- `$identity` built-ins alias `$context.identity`; declared detail reads are PLAY0268,
|
|
52
|
+
while an identity block alone does not block readiness. `scoped to` is opaque,
|
|
53
|
+
not a detail reference. Query sources need keyed single compatible results and
|
|
54
|
+
token-only keys/gates that do not depend on details.
|
|
55
|
+
- `pii personal` repeats one marker (PLAY0653). Legacy markers are accepted but
|
|
56
|
+
deprecated (PLAY0565); repairs preserve notes, never invent legal content.
|
|
57
|
+
- Event `subject` is report-only (PLAY0270), not emitted C# `[Subject]` or runtime
|
|
58
|
+
lineage. Keep stream identity, data subject, encryption scope and policy subject apart.
|
|
59
|
+
- Purpose metadata/checks/records declare processing, not lawfulness or retention.
|
|
60
|
+
- PLAY0504 is an error; stream-id text is nonempty well-formed NFC (refuse, never
|
|
61
|
+
normalize), Double integer ids are within ±(2^53−1); canonical UUID comparison
|
|
62
|
+
ignores case. Protected concepts cannot be stream ids/parts/mapping sources (PLAY0515).
|
|
63
|
+
- Run `--check privilege` on elevated event-trigger paths; opaque producers are
|
|
64
|
+
unknown, not safe. Arc needs `[ExecuteCommandsAsSystem]` to supply a principal.
|
|
65
|
+
|
|
49
66
|
The SKILL.md top 12: 1, 4, 5, 6, 7, 10, 12, 13, 17, 18, 20, 21 (+ mode/version notes there). Traps 39 to 44 are tool traps added at the 4.66.0 pin.
|
|
50
67
|
39. A handler never binds: PLAY0268 "Command '<n>' handler requires a constrained implementation attachment", with a file, a fence, `implementation` or `hint` alike. `implementation` and `hint` are accepted on a command handler, an operation execute/compensate phase and (from 4.65.0) a command property named rule, and are rejected on concept rules, built-in property rules and whole-command `require`/`validate` bodies; on a handler they are authoring intent only (no execution, lock or confirmation). A handler slice is gap-fill, not a customization of a rendered slice. [source, probed]
|
|
51
68
|
40. `numbers exact` parses on 4.66.0 to 4.68.0 but never binds (PLAY0268; "not admitted by any supported executable model (ESM) version yet") and is PLAY0001 on older compilers; it is absent from `grammar.md`. Never use it in a model or example meant to execute. [probed]
|
|
@@ -28,7 +28,7 @@ V3 are read from the MCP server or from a render, V1 and V5 from the CLIs.
|
|
|
28
28
|
|
|
29
29
|
| Tool | Command | Pass | Fail |
|
|
30
30
|
| --- | --- | --- | --- |
|
|
31
|
-
| Standalone 4.
|
|
31
|
+
| Standalone 4.127.0 (preferred) | `screenplay <model-root> --warnaserror --no-color` | exit 0 and a nonzero compiled file count | exit 1 defects; exit 2 could not run/invalid arguments or input |
|
|
32
32
|
| cratis (fallback) | `cratis screenplay validate <model-folder> --warnings-as-errors -o json-compact` | exit 0 | exit 5; exit 1 means missing path or no files |
|
|
33
33
|
|
|
34
34
|
- Validate the complete application root, not an independently selected fragment.
|
|
@@ -40,7 +40,8 @@ V3 are read from the MCP server or from a render, V1 and V5 from the CLIs.
|
|
|
40
40
|
Exit/`--warnaserror` apply to that reported set; inspect the separate whole
|
|
41
41
|
application counts before a whole-model claim. Unknown/ambiguous scopes exit 2.
|
|
42
42
|
- `--check <names>` (repeatable) or `--check all` opts into completeness warnings
|
|
43
|
-
PLAY0530–PLAY0537
|
|
43
|
+
including PLAY0530–PLAY0537, purposes (PLAY0602–0606) and privilege (PLAY0652).
|
|
44
|
+
Whole-source errors skip them; a skipped check is not passed.
|
|
44
45
|
Names/codes, coverage limits and editor support: `diagnostics.md`.
|
|
45
46
|
- Warnings are failures here. PLAY0029 (a construct dropped silently) and the unresolved-name
|
|
46
47
|
warnings are the defects this verdict exists to catch.
|
|
@@ -62,7 +63,7 @@ MCP reports `V2 not run: no MCP in this agent` unless the brief supplies fresh o
|
|
|
62
63
|
source revision).
|
|
63
64
|
4. Report the codes with counts, blocking (error severity) apart from informational. A list
|
|
64
65
|
with blocking entries is a valid V2 result (`V2 read: 6 blocking, PLAY0268 x3 list query,
|
|
65
|
-
|
|
66
|
+
pii ...`); it is the evidence for a "V3 blocked" report. The view also lists
|
|
66
67
|
information-severity diagnostics (PLAY0269 deferred UI, PLAY0270 authoring metadata such as
|
|
67
68
|
descriptions, personas and screens) on models that bind; they do not block.
|
|
68
69
|
|
|
@@ -79,9 +80,9 @@ comparison needs it). Binding is what makes a model renderable at all. V3 means
|
|
|
79
80
|
never "specifications pass".
|
|
80
81
|
|
|
81
82
|
- Report the ESM version the model needs: `V3 ready (screenplay 4.68.0, ESM v6)`,
|
|
82
|
-
`V3 blocked: PLAY0268 x3 (list query,
|
|
83
|
-
- A blocked V3 is not repaired by deleting protection or domain rules. Never remove
|
|
84
|
-
|
|
83
|
+
`V3 blocked: PLAY0268 x3 (list query, pii) - design scope kept`.
|
|
84
|
+
- A blocked V3 is not repaired by deleting protection or domain rules. Never remove `pii`,
|
|
85
|
+
`secret`, authorization, list queries, automations or rules to reach V3; record the
|
|
85
86
|
slice and the code in the gap list.
|
|
86
87
|
- A model is executable only on the compiler that bound it. V3 does not carry
|
|
87
88
|
to render admission: CLI 3.41.0 passes up to ESM v7 to Stage, refuses newer
|
|
@@ -17,7 +17,7 @@ probe; older probes retain their original labels in the other references.
|
|
|
17
17
|
|
|
18
18
|
| Source | Pin | Evidence |
|
|
19
19
|
| --- | --- | --- |
|
|
20
|
-
| Screenplay language, standalone tool and MCP | **4.
|
|
20
|
+
| Screenplay language, standalone tool and MCP | **4.127.0** (`e70435a4`) | Released tag `v4.127.0`; installed `screenplay --version`; changed identity/compliance examples compiled |
|
|
21
21
|
| cratis CLI | **3.41.0** | Released tag `v3.41.0`; installed `cratis --version` |
|
|
22
22
|
| Screenplay bundled by CLI | **4.114.0** | CLI `v3.41.0:Directory.Packages.props` |
|
|
23
23
|
| Stage bundled by CLI | **4.51.3** | Same file; the CLI's runtime image follows its Stage package version |
|
|
@@ -30,7 +30,7 @@ on PATH can shadow a newer install; inspect `which -a cratis`.
|
|
|
30
30
|
|
|
31
31
|
## Two compilers, one rule
|
|
32
32
|
|
|
33
|
-
Standalone Screenplay 4.
|
|
33
|
+
Standalone Screenplay 4.127.0 and the CLI's 4.114.0 bundle are different releases.
|
|
34
34
|
Prefer standalone for the current language checks; CLI owns generation, Prologue
|
|
35
35
|
and rendering. Name the tool/version with every verdict. No verdict transfers
|
|
36
36
|
between differing compilers without checking the same inputs there.
|
|
@@ -62,7 +62,7 @@ for identity-stable selection.
|
|
|
62
62
|
|
|
63
63
|
## Admission boundaries
|
|
64
64
|
|
|
65
|
-
Screenplay `v4.
|
|
65
|
+
Screenplay `v4.127.0:Source/DotNET/Screenplay/Semantics/Versions.cs` supports schema
|
|
66
66
|
pairs through v10. Generated values/responses and policy negation select v7;
|
|
67
67
|
sources/streams and command/specification routes select v8; reaction
|
|
68
68
|
`runs as system [role "<Role>"]` selects v10 and reference-executes on 4.125.0.
|
|
@@ -86,6 +86,13 @@ The renderable-subset and Stage references retain older probes explicitly;
|
|
|
86
86
|
read them as tested snapshots, not as a claim that Stage 4.51.3 shares every
|
|
87
87
|
4.24.2 limitation. Query the actual bundled renderer before a V5 claim.
|
|
88
88
|
|
|
89
|
+
At 4.127.0, `$identity` aliases built-in caller paths; declared identity details
|
|
90
|
+
remain metadata and their executable reads report PLAY0268. Bare `pii`/`secret`
|
|
91
|
+
still block binding; `personal` aliases `pii`. Legacy markers are accepted with
|
|
92
|
+
PLAY0565 information, duplicates warn PLAY0653. Event `subject` and processing
|
|
93
|
+
purposes are report-only metadata (PLAY0270); purpose checks/reports do not prove
|
|
94
|
+
lawfulness or enforce retention. See command-surface context/compliance references.
|
|
95
|
+
|
|
89
96
|
## Historical probes
|
|
90
97
|
|
|
91
98
|
- Screenplay 4.68.0 admitted v7; CLI 3.28.2/3.28.3 bundled 4.66.0 (v6 at most),
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
"input": "Check a Screenplay model folder: which compiler should I run, what do V1 to V3 mean, and what does the cratis CLI do with my Automation slice?",
|
|
4
4
|
"fixtures": [],
|
|
5
5
|
"assertions": [
|
|
6
|
+
{ "kind": "skill-contains", "value": "4.127.0" },
|
|
7
|
+
{ "kind": "skill-contains", "value": "PLAY0653", "file": "references/diagnostics.md" },
|
|
8
|
+
{ "kind": "skill-contains", "value": "PLAY0646", "file": "references/diagnostics.md" },
|
|
9
|
+
{ "kind": "skill-contains", "value": "PLAY0595", "file": "references/diagnostics.md" },
|
|
10
|
+
{ "kind": "skill-contains", "value": "PLAY0652", "file": "references/diagnostics.md" },
|
|
11
|
+
{ "kind": "skill-contains", "value": "PLAY0504 | E", "file": "references/diagnostics.md" },
|
|
6
12
|
{ "kind": "skill-contains", "value": "references/versions.md" },
|
|
7
13
|
{ "kind": "skill-contains", "value": "PLAY0029" },
|
|
8
14
|
{ "kind": "skill-contains", "value": "--warnaserror" },
|
|
@@ -68,7 +68,7 @@ The `.play` model is the source of truth; Stage-managed output is derived from i
|
|
|
68
68
|
- Hand-written code goes in `Customizations/` (unmanaged), in a separate project, or in
|
|
69
69
|
an explicitly authorized gap-fill for scope Stage cannot render (`cratis-screenplay-render-and-gap-fill`).
|
|
70
70
|
- A customization never makes a rejected model renderable, and never weakens modeled
|
|
71
|
-
authorization, validation or
|
|
71
|
+
authorization, validation or personal-data and secret markers to get past a refusal.
|
|
72
72
|
- Never claim a whole-application result from a subset of the model.
|
|
73
73
|
|
|
74
74
|
## Publication and recovery
|
|
@@ -135,7 +135,7 @@ Facts that surprise:
|
|
|
135
135
|
|
|
136
136
|
## Historical Stage 4.24 admission
|
|
137
137
|
|
|
138
|
-
Current pins are standalone Screenplay 4.
|
|
138
|
+
Current pins are standalone Screenplay 4.127.0 / CLI 3.41.0 / Stage 4.51.3.
|
|
139
139
|
Routes bind/reference-execute as v8; reaction `runs as` identity as v10.
|
|
140
140
|
CLI renders through v7 only (CLI-RENDER-004 for newer model versions) and its
|
|
141
141
|
older 4.114.0 parser rejects `runs as` (PLAY0137). Stage 4.51.3's direct planner
|