@cratis/pi 7.35.0 → 7.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/corpus/product-sync.json +2 -2
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +5 -8
- package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +10 -8
- package/package/corpus/skills/cratis-screenplay-command-surface/verification.json +7 -1
- package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +1 -1
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +5 -1
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +14 -23
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +19 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +10 -4
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/property-links.md +57 -10
- package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +17 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +1 -1
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +5 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +7 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +7 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +16 -8
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +8 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +115 -0
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +8 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +4 -4
- package/package.json +1 -1
|
@@ -32,7 +32,7 @@ Pins: toolchain `references/versions.md`; sources below. Compilation is not exec
|
|
|
32
32
|
- `4.66.0` (`c89198b`): `handler`, code attachments, `persona` and compliance binding (`Semantics/SemanticModelBinder*.cs`, `Diagnostics/DiagnosticCodes.cs`).
|
|
33
33
|
- `4.68.0` (`79801bf`): generated-value/response rule probes (ESM v7).
|
|
34
34
|
- `4.127.0`: identity and compliance syntax (`identity.md`, `context.md`, `concepts.md`, `purposes.md`, `events.md`, `diagnostics.md`).
|
|
35
|
-
- `4.141.0`: v13 compliance admission
|
|
35
|
+
- `4.141.0`: v13 compliance admission; rechecked at `4.142.0`: `references/compliance.md`.
|
|
36
36
|
|
|
37
37
|
"Parses" and "runs" are different claims. The executable profile, and what
|
|
38
38
|
each construct binds to, is in the `cratis-screenplay-model-authoring` language
|
|
@@ -57,13 +57,10 @@ concept InvoiceStatus : Enum
|
|
|
57
57
|
The seven primitives are `Uuid`, `String`, `Int`, `Decimal`, `Bool`, `Date` and
|
|
58
58
|
`DateTime`. `Enum` is **not** one of them — it is a separate concept kind, which
|
|
59
59
|
is why the compiler says *expected … or Enum* rather than listing it among them.
|
|
60
|
-
Use bare `pii`
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
`sensitive` and `@sensitive` remain accepted with PLAY0565 information and a repair.
|
|
65
|
-
Read [compliance and purposes](references/compliance.md) for reasons, special/criminal
|
|
66
|
-
qualifiers, secret scopes, provider mappings, purpose declarations and coverage checks.
|
|
60
|
+
Use bare `pii` (`personal` alias) and `secret` on concepts; **Compliance is inherited**.
|
|
61
|
+
Keep protection even when a compiler or renderer refuses it. Read
|
|
62
|
+
[compliance and purposes](references/compliance.md) for ESM v13, binder-only refusals,
|
|
63
|
+
consumer ceilings, marker repairs, reasons, scopes and provider limits.
|
|
67
64
|
|
|
68
65
|
**Identifiers cannot be personal data or secrets.** PLAY0515 is a source error
|
|
69
66
|
for command identifiers, typed `for` destinations, event-source identities,
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
- Declare the use separately
|
|
11
11
|
- Identify the person, not the stream
|
|
12
12
|
|
|
13
|
-
Authority: Screenplay v4.
|
|
13
|
+
Authority: Screenplay v4.142.0 `concepts.md`, `events.md`,
|
|
14
14
|
`Semantics/SemanticModelBinder.Compliance.cs` and `SemanticModelValidator.Compliance.cs`;
|
|
15
15
|
processing-purpose guidance retains v4.127.0 evidence; decisions 0041 and 0068. These declarations do not establish lawful
|
|
16
16
|
processing or enforce retention. Check provider support separately.
|
|
@@ -61,19 +61,21 @@ new event generation.
|
|
|
61
61
|
|
|
62
62
|
C# provider mapping: `pii` → `[PII]`; `secret` → `[Encrypted]` + `[NotAudited]`;
|
|
63
63
|
`pii secret` → `[PII]` only (Chronicle refuses `[PII]` with `[Encrypted]`, CHR0053).
|
|
64
|
-
Standalone Screenplay 4.
|
|
65
|
-
|
|
64
|
+
Standalone Screenplay 4.142.0 binds optional concept `compliance` as ESM v13
|
|
65
|
+
(first released in 4.141.0), carrying markers, qualifiers and scopes. It applies
|
|
66
|
+
through command, event, read-model,
|
|
66
67
|
composite and response type references, including collection elements. Bare `pii`
|
|
67
68
|
writes `{"personal":{}}`; `secret scope namespace` writes
|
|
68
69
|
`{"secret":{"scope":"namespace"}}`. With both markers, personal protection
|
|
69
|
-
wins and no secret scope is stored
|
|
70
|
+
wins and no secret scope is stored; reasons stay report-only PLAY0270.
|
|
70
71
|
Unmarked models keep their exact executable bytes and revision. The reference
|
|
71
72
|
evaluator runs marked models with unchanged outcomes but tests neither encryption
|
|
72
73
|
nor erasure. Consumers must explicitly admit v13 and realize the protection;
|
|
73
|
-
CLI 3.53.1
|
|
74
|
-
through v12. Never remove protection to fit either tool.
|
|
74
|
+
CLI 3.53.1 bundles Screenplay 4.137.0, which refuses markers; standalone Stage
|
|
75
|
+
4.76.0 admits only through v12 (Stage#345 tracks v13 admission). Never remove protection to fit either tool.
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
Enum and identity concepts still refuse PLAY0268 at binding only (identity means
|
|
78
|
+
event-source/stream identity); source validation alone cannot report this binder diagnostic.
|
|
77
79
|
It also refuses an event combining personal values or explicitly
|
|
78
80
|
`secret scope subject` values with an explicit event-property `subject` mark,
|
|
79
81
|
including nested composite and collection uses: subject lineage is not admitted.
|
|
@@ -99,7 +101,7 @@ none of SP0061 to SP0063, so the CLI shows none of them; check the generator pac
|
|
|
99
101
|
Set `ScreenplayOptions.AuthoringOnlyConstructs = true` (CLI adapter flag
|
|
100
102
|
`--authoring-only-constructs`) to state `secret scope namespace` or
|
|
101
103
|
`secret scope global` in the concept body. Subject stays implicit. Scope
|
|
102
|
-
was syntax-only on this generator's compiler. With standalone 4.
|
|
104
|
+
was syntax-only on this generator's compiler. With standalone 4.142.0,
|
|
103
105
|
protected concepts instead select ESM v13; this does not upgrade the generator
|
|
104
106
|
or the CLI bundle.
|
|
105
107
|
`pii secret` gets no scope because the providers ignore it.
|
|
@@ -4,7 +4,13 @@
|
|
|
4
4
|
"fixtures": [],
|
|
5
5
|
"assertions": [
|
|
6
6
|
{ "kind": "play-compiles" },
|
|
7
|
-
{ "kind": "skill-contains", "value": "
|
|
7
|
+
{ "kind": "skill-contains", "value": "optional concept `compliance` as ESM v13", "file": "references/compliance.md" },
|
|
8
|
+
{ "kind": "skill-contains", "value": "PLAY0268 at binding only", "file": "references/compliance.md" },
|
|
9
|
+
{ "kind": "skill-contains", "value": "reasons stay report-only PLAY0270", "file": "references/compliance.md" },
|
|
10
|
+
{ "kind": "skill-contains", "value": "Stage#345", "file": "references/compliance.md" },
|
|
11
|
+
{ "kind": "skill-contains", "value": "CLI 3.53.1 bundles Screenplay 4.137.0", "file": "references/compliance.md" },
|
|
12
|
+
{ "kind": "skill-contains", "value": "Enum and identity", "file": "references/compliance.md" },
|
|
13
|
+
{ "kind": "skill-contains", "value": "PLAY0653", "file": "references/compliance.md" },
|
|
8
14
|
{ "kind": "skill-contains", "value": "personal` is an alias of `pii", "file": "references/compliance.md" },
|
|
9
15
|
{ "kind": "skill-contains", "value": "report-only (PLAY0270)", "file": "references/compliance.md" },
|
|
10
16
|
{ "kind": "skill-contains", "value": "--check purposes", "file": "references/compliance.md" },
|
|
@@ -135,7 +135,7 @@ What binds depends on **which tool** you ask, so name the tool and its version:
|
|
|
135
135
|
protected against stale state. A reaction trigger's `reads` that only `invokes` is
|
|
136
136
|
report-only intent (`PLAY0270`); one that `produces` directly fails binding (`PLAY0268`).
|
|
137
137
|
- `persona` declarations are report-only and never block; bare `pii` and `secret`
|
|
138
|
-
concepts bind as ESM v13 on standalone 4.141.0, but still block the pinned CLI.
|
|
138
|
+
concepts bind as ESM v13 on standalone 4.142.0 (since 4.141.0), but still block the pinned CLI.
|
|
139
139
|
Enum/identity compliance and protected events with explicit subject marks remain
|
|
140
140
|
refused (PLAY0268); see command-surface `references/compliance.md`. Keep protection.
|
|
141
141
|
- Generated values/responses bind and reference-execute as v7; sources, streams
|
package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md
CHANGED
|
@@ -4,6 +4,8 @@ Checked at Screenplay v4.139.0: `SemanticModelBinder.cs`, `Versions.cs`,
|
|
|
4
4
|
`Documentation/screenplay/{commands,operations,event-sources,reactions,tool,interoperability}.md`.
|
|
5
5
|
The binder selects v8 for event routes, v10 for declared reaction identity, v11 for retained
|
|
6
6
|
exact-lowered Double-mode literals and v12 for non-positional enum numbers.
|
|
7
|
+
Compliance checked against 4.142.0 `SemanticModelBinder.Compliance.cs` and
|
|
8
|
+
`SemanticModelValidator.Compliance.cs`; it selects v13 (first released in 4.141.0).
|
|
7
9
|
Pins and consumer boundaries: toolchain `references/versions.md`.
|
|
8
10
|
|
|
9
11
|
## Which ESM version a model needs
|
|
@@ -17,6 +19,8 @@ Pins and consumer boundaries: toolchain `references/versions.md`.
|
|
|
17
19
|
- v9 for public-event contracts; v10 for reaction `runs as system` identity.
|
|
18
20
|
- v11 for exact lowering of qualifying Double-mode number literals; v12 for non-positional
|
|
19
21
|
enum member numbers (`cratis-screenplay-command-surface` `references/enum-numbers.md`).
|
|
22
|
+
- v13 for concept `pii`/`personal` and `secret`, personal qualifiers and secret scopes.
|
|
23
|
+
Reasons remain report-only PLAY0270; binding proves neither encryption nor erasure.
|
|
20
24
|
- Operations/systems, the exact numeric **source mode** (`numbers exact`) and refusal/redelivery
|
|
21
25
|
remain unadmitted (PLAY0268). Version allocation is not inferred from an older planning decision.
|
|
22
26
|
|
|
@@ -25,7 +29,7 @@ Pins and consumer boundaries: toolchain `references/versions.md`.
|
|
|
25
29
|
| Construct | Standalone disposition (v4.125.0/v4.139.0 evidence; compliance updated at v4.141.0) |
|
|
26
30
|
| --- | --- |
|
|
27
31
|
| `persona`, domain/authentication metadata | Report-only; unknown named policies remain source defects |
|
|
28
|
-
| Compliance concepts | Bare `pii`/`secret`, qualifiers and scope bind as v13
|
|
32
|
+
| Compliance concepts | Bare `pii`/`personal` and `secret`, qualifiers and scope bind as v13 (4.142.0 checked); enum/identity compliance and events combining personal or explicitly subject-scoped secret values with an explicit `subject` mark refuse PLAY0268 at binding only. CLI 3.53.1's 4.137.0 bundle still refuses markers; Stage 4.76.0 admits only through v12 (Stage#345). Never remove protection |
|
|
29
33
|
| Identity details / processing purposes / event subject | Report-only metadata (4.127.0); executable detail reads refuse PLAY0268, not source declaration errors |
|
|
30
34
|
| Composite stream ids | v8 routing; complete named parts/canonical comparisons, PLAY0515 refuses protected keys/sources; not a legacy text split |
|
|
31
35
|
| Command reads/concurrency | Legacy unprotected decisions, PLAY0271 |
|
package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md
CHANGED
|
@@ -166,7 +166,7 @@ without adding `secret`; an existing `pii` classification remains.
|
|
|
166
166
|
the same way. Set `ScreenplayOptions.AuthoringOnlyConstructs = true` (CLI
|
|
167
167
|
adapter option `--authoring-only-constructs`) to emit `secret scope namespace`
|
|
168
168
|
or `secret scope global` in the concept body. This was syntax-only on that
|
|
169
|
-
compiler; standalone 4.
|
|
169
|
+
compiler; standalone 4.142.0 admits concept compliance as ESM v13 (since 4.141.0).
|
|
170
170
|
That upgrade does not change the older generator or CLI bundle.
|
|
171
171
|
- A concept also marked `[PII]` becomes `pii secret`, with no emitted scope:
|
|
172
172
|
the C# providers render only `[PII]`; Chronicle rejects `[PII]` combined with
|
|
@@ -21,7 +21,7 @@ same model root or workspace export to all checks. Workflow:
|
|
|
21
21
|
|
|
22
22
|
## Verified product sources
|
|
23
23
|
|
|
24
|
-
Screenplay v4.
|
|
24
|
+
Screenplay v4.142.0: add/rename/remove planner in `references/property-links.md`;
|
|
25
25
|
compliance in command-surface `references/compliance.md`. Other MCP evidence:
|
|
26
26
|
v4.139.0 `Documentation/screenplay/mcp/`.
|
|
27
27
|
Discover installed tools and schemas; CLI bundles can differ from the standalone
|
|
@@ -40,14 +40,10 @@ directory when it holds `.play` files). Only when it answers that no root was gi
|
|
|
40
40
|
or that several roots are offered, pass `path`: the folder holding the project's `.play` files, otherwise the
|
|
41
41
|
folder the user names. Without a project, the server works in `Documents/Screenplay`
|
|
42
42
|
in the user's home folder, so do not invent a location. A root fixed at launch
|
|
43
|
-
can switch only to the
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
Submodules and `--separate-git-dir` checkouts require another connection.
|
|
48
|
-
|
|
49
|
-
Prefer a fixed root; the historical dynamic-roots bug and connection procedure
|
|
50
|
-
are in [MCP loop](references/mcp-loop.md). Send `initialize` and
|
|
43
|
+
can switch only to the same model folder in a registered Git worktree of the
|
|
44
|
+
same repository; rules and refusals are in [MCP loop](references/mcp-loop.md).
|
|
45
|
+
|
|
46
|
+
Prefer a fixed root (dynamic-roots history: [MCP loop](references/mcp-loop.md)). Send `initialize` and
|
|
51
47
|
`notifications/initialized` before any tool call, then discover `tools/list`
|
|
52
48
|
schemas rather than relying on a remembered count.
|
|
53
49
|
|
|
@@ -83,7 +79,7 @@ can keep that entry point; use the project's supported installation channel.
|
|
|
83
79
|
of `.play` files is one application, not independent files.
|
|
84
80
|
2. Use `search-declarations`, `declaration-details`, `find-references` and
|
|
85
81
|
`dependencies` to locate the owning declaration and affected references.
|
|
86
|
-
Before a property
|
|
82
|
+
Before a property change, read [property links](references/property-links.md):
|
|
87
83
|
`kind: "Property"`, `Owner.member` / `Owner.generationN.member`, direct mappings.
|
|
88
84
|
`complete: false` is incomplete evidence, never a successful empty list.
|
|
89
85
|
3. Read diagnostics and coverage limitations. Use `dependency-graph` for container
|
|
@@ -135,9 +131,10 @@ and applies; others send an edit request ([MCP loop](references/mcp-loop.md)).
|
|
|
135
131
|
3. Prefer `propose-rename` for supported logical renames: it coordinates fragments,
|
|
136
132
|
repairs proven references and preserves assigned identities. Never substitute
|
|
137
133
|
global string replacement for an explicit refusal.
|
|
138
|
-
4.
|
|
139
|
-
|
|
140
|
-
|
|
134
|
+
4. Prefer `propose-property` for property add/rename/remove, not hand-composed
|
|
135
|
+
`propose-ast` batches. Inspect the chain and never guess past a refusal:
|
|
136
|
+
[property links](references/property-links.md). Otherwise use `propose-source`
|
|
137
|
+
(whole text) or `propose-ast` (typed edits); `propose` is executable-only.
|
|
141
138
|
5. Keep reference policy `Safe`. Use `Draft` only for deliberately requested
|
|
142
139
|
unresolved model debt and report that debt; it does not waive structural,
|
|
143
140
|
identity or binding-protection checks.
|
|
@@ -173,15 +170,9 @@ files, 8 MiB total, 2 MiB per file, 1 MiB structured result, 200 items or 192 Ki
|
|
|
173
170
|
per page. Excluded directories: `.git`, `.ai-work`, `.screenplay`, `bin`, `obj`,
|
|
174
171
|
`node_modules`.
|
|
175
172
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
and the authored member order within a document but normalizes whitespace and
|
|
180
|
-
blank lines. Before applying, check the proposal's `droppedCommentCount`; when it
|
|
181
|
-
is not zero, read `read-proposal` with `view: "dropped-comments"` and disclose
|
|
182
|
-
each lost comment (`PLAY0288` also reports their count and lines). Untouched
|
|
183
|
-
documents retain exact bytes. A printer that loses requested structural fields
|
|
184
|
-
rejects the plan.
|
|
173
|
+
Choose formatting explicitly and disclose dropped comments before applying;
|
|
174
|
+
read [formatting and limits](references/mcp-loop.md#formatting-and-limits) for
|
|
175
|
+
`PreserveTrivia`, canonical consent, comment review and byte preservation.
|
|
185
176
|
|
|
186
177
|
`identityMigrationIssues`: read the [MCP loop](references/mcp-loop.md).
|
|
187
178
|
|
|
@@ -296,7 +287,7 @@ that the code compiles or behaves. Read `references/mcp-tools.md#code-attachment
|
|
|
296
287
|
clean run is not a bound or executable result.
|
|
297
288
|
- Operations/`numbers exact` remain unadmitted; routes bind as v8, public
|
|
298
289
|
boundaries v9, identity/overrides/filters v10, qualifying non-route Double
|
|
299
|
-
literals v11, enum numbers v12, compliance v13 (4.141.0;
|
|
290
|
+
literals v11, enum numbers v12, compliance v13 (since 4.141.0;
|
|
300
291
|
limits: command-surface `references/compliance.md`).
|
|
301
292
|
CLI 3.53.1/Stage 4.73.1 bundle 4.137.0 and do not admit v12. Never drop or stub source contracts to bind.
|
|
302
293
|
- Distinguish authoring acceptance from `executableReady`; unsupported backend
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
- Identity state (`.screenplay/identities.json`)
|
|
14
14
|
- Read-only views worth knowing
|
|
15
15
|
- Failures (use `failureKind`, never message text)
|
|
16
|
+
- Formatting and limits
|
|
16
17
|
- Provenance
|
|
17
18
|
|
|
18
19
|
The working loop for the session that owns the model connection: connect, orient,
|
|
@@ -106,7 +107,7 @@ the server sends `roots/list` and serves `tools/list` after the reply).
|
|
|
106
107
|
`find-specification-obligations` (presence, not execution), use
|
|
107
108
|
`find-modeling-smells` as questions needing a domain consequence, and compare
|
|
108
109
|
generated/curated exported snapshots with `semantic-diff`.
|
|
109
|
-
Before
|
|
110
|
+
Before a property change, use `find-references`/`dependencies`
|
|
110
111
|
`kind: "Property"` (4.138.0+) and `Owner.member` or historical event
|
|
111
112
|
`Owner.generationN.member`. Follow direct mapping counterparts one query at a
|
|
112
113
|
time; inspect incomplete/ambiguous evidence and `reasons`. `complete: false`
|
|
@@ -117,7 +118,11 @@ the server sends `roots/list` and serves `tools/list` after the reply).
|
|
|
117
118
|
4. Choose the edit route (next section). For typed edits: `syntax-schema` for the
|
|
118
119
|
node kind, then `read-ast` with `includeContent` for revision-bound handles.
|
|
119
120
|
Never invent a handle.
|
|
120
|
-
5.
|
|
121
|
+
5. Prefer `propose-property` for supported property add/rename/remove chains,
|
|
122
|
+
not hand-composed `propose-ast` batches; inspect `incomplete`, `needsDecision`
|
|
123
|
+
and `chainCandidates` before choosing sources, fixtures or event evolution.
|
|
124
|
+
Exact arguments and decisions: [property links](property-links.md).
|
|
125
|
+
Otherwise propose one coherent change (a slice works best): `propose-source` for whole
|
|
121
126
|
`.play` text, `propose-ast` for focused typed edits, with
|
|
122
127
|
`validation: "Authoring"`, `referencePolicy: "Safe"` (`Draft` only for
|
|
123
128
|
deliberate, reported gaps), `formatting: "PreserveTrivia"` for value and mapping
|
|
@@ -251,6 +256,18 @@ or create a fallback folder to bypass the conflict.
|
|
|
251
256
|
|
|
252
257
|
See "Failures (use `failureKind`, never message text)" in SKILL.md.
|
|
253
258
|
|
|
259
|
+
## Formatting and limits
|
|
260
|
+
|
|
261
|
+
Formatting is explicit. Prefer `PreserveTrivia` for identifier, literal-value and
|
|
262
|
+
whole-mapping edits; it rewrites only the changed span. Structural edits (add,
|
|
263
|
+
remove, move) need `CanonicalizeTouchedDocuments`, which keeps attached comments
|
|
264
|
+
and the authored member order within a document but normalizes whitespace and
|
|
265
|
+
blank lines. Before applying, check the proposal's `droppedCommentCount`; when it
|
|
266
|
+
is not zero, read `read-proposal` with `view: "dropped-comments"` and disclose
|
|
267
|
+
each lost comment (`PLAY0288` also reports their count and lines). Untouched
|
|
268
|
+
documents retain exact bytes. A printer that loses requested structural fields
|
|
269
|
+
rejects the plan.
|
|
270
|
+
|
|
254
271
|
## Provenance
|
|
255
272
|
|
|
256
273
|
The structure of this loop (ownership, edit-request shape, failure handling) is
|
|
@@ -59,9 +59,15 @@ the [MCP loop](mcp-loop.md).
|
|
|
59
59
|
|
|
60
60
|
`propose` is the executable-only whole-document interface. Prefer `propose-source`
|
|
61
61
|
for whole `.play` text, `propose-ast` for focused typed edits, and `propose-rename`
|
|
62
|
-
for proved logical renames.
|
|
63
|
-
property rename/
|
|
64
|
-
|
|
62
|
+
for proved logical renames. Prefer `propose-property` over hand-composed AST
|
|
63
|
+
batches for property chains: rename/remove shipped in 4.140.0, add in 4.142.0.
|
|
64
|
+
Add takes `owner`, `expectedOwnerName`, `name`, `type`, `optional`,
|
|
65
|
+
`hops` (`{at, name}` or `{at, value}`) and `fixtureValue`, plus both revision guards.
|
|
66
|
+
Missing sources/required fixture values refuse `SourcesRequired`/`FixtureValueRequired`;
|
|
67
|
+
off-chain hops refuse `HopNotOnChain`, nested feeds `UnsupportedPropertySpan`.
|
|
68
|
+
Read `property.needsDecision` and `property.chainCandidates`, select an event
|
|
69
|
+
evolution mode even for optional additions, and review before applying.
|
|
70
|
+
Exact arguments, AutoMap and fixture rules: [property evidence and planning](property-links.md). A
|
|
65
71
|
source-only authoring proposal may be accepted while `executableReady` is false.
|
|
66
72
|
That is not permission to claim the application runs.
|
|
67
73
|
|
|
@@ -274,7 +280,7 @@ limits. Continue with `expectedSourceRevision`.
|
|
|
274
280
|
|
|
275
281
|
From 4.138.0, `find-references` and `dependencies` accept `kind: "Property"`
|
|
276
282
|
and `Owner.member`, or historical event `Owner.generationN.member`. Before a
|
|
277
|
-
|
|
283
|
+
property change, read [property links](property-links.md) for exact query/result
|
|
278
284
|
shapes, roles, direct counterpart traversal, revision paging and `complete: false`
|
|
279
285
|
with `reasons`. Incomplete evidence is never a successful empty list. These tools
|
|
280
286
|
inspect authored links, not code execution or a transitive runtime graph.
|
package/package/corpus/skills/cratis-screenplay-model-authoring/references/property-links.md
CHANGED
|
@@ -7,13 +7,14 @@
|
|
|
7
7
|
|
|
8
8
|
- Address and query
|
|
9
9
|
- Read evidence, not just a count
|
|
10
|
-
- Propose a property change (4.
|
|
10
|
+
- Propose a property change (4.142.0)
|
|
11
|
+
- Add with explicit sources and fixtures
|
|
11
12
|
|
|
12
13
|
Screenplay 4.138.0 released property-path evidence in `find-references` and
|
|
13
14
|
`dependencies`; this guidance was checked against 4.139.0. Discover installed
|
|
14
15
|
`tools/list`: CLI 3.53.1's 4.137.0 bundle predates it. These are read-only
|
|
15
|
-
inspection tools. Standalone 4.140.0 adds the separate `propose-property` planner
|
|
16
|
-
|
|
16
|
+
inspection tools. Standalone 4.140.0 adds the separate `propose-property` rename/remove planner;
|
|
17
|
+
4.142.0 adds `add`. The CLI bundle has neither capability.
|
|
17
18
|
|
|
18
19
|
## Address and query
|
|
19
20
|
|
|
@@ -116,7 +117,7 @@ same-named properties in unrelated declarations do not affect completeness.
|
|
|
116
117
|
External code contents and registrations remain outside coverage even with
|
|
117
118
|
`complete: true`; authored links do not prove executable admission.
|
|
118
119
|
|
|
119
|
-
Before a
|
|
120
|
+
Before a property change: pin the revision, inspect incoming readers and outgoing
|
|
120
121
|
counterparts, page to completion, resolve uncertainties, then choose the supported
|
|
121
122
|
identity-safe edit route with the connection owner. Never infer safe deletion from
|
|
122
123
|
zero resolved hits or edit every same-named field. An event-property change still
|
|
@@ -126,7 +127,12 @@ Source/output authority: `v4.139.0:Documentation/screenplay/mcp/reference.md`
|
|
|
126
127
|
(property links), `Source/DotNET/Screenplay.Mcp/McpPropertyDependencies.cs`,
|
|
127
128
|
`McpToolSchemas.cs`, and decision 0044's released prerequisite index. The planner's release evidence is separate below.
|
|
128
129
|
|
|
129
|
-
## Propose a property change (4.
|
|
130
|
+
## Propose a property change (4.142.0)
|
|
131
|
+
|
|
132
|
+
Use `propose-property`, not hand-composed `propose-ast` batches, for supported
|
|
133
|
+
add/rename/remove changes along a proven chain. For add, inspect existing
|
|
134
|
+
producer/consumer properties and mapping blocks first; the new property has no
|
|
135
|
+
reference address yet.
|
|
130
136
|
|
|
131
137
|
Read the target property handle with `read-ast`, then call `propose-property`
|
|
132
138
|
with `expectedRevision`, `expectedCatalogRevision`, `action: "rename"|"remove"`,
|
|
@@ -134,7 +140,7 @@ with `expectedRevision`, `expectedCatalogRevision`, `action: "rename"|"remove"`,
|
|
|
134
140
|
or `alsoRemove` entries are `{ "target": <handle>, "expectedName": <name> }`.
|
|
135
141
|
Select only intended command, current-event and non-key read-model properties:
|
|
136
142
|
chain membership establishes eligibility, not permission to edit every field.
|
|
137
|
-
Off-chain selections refuse atomically. Historical generations, inline events,
|
|
143
|
+
Off-chain selections refuse atomically (`HopNotOnChain`). Historical generations, inline events,
|
|
138
144
|
keys, opaque or incomplete links and unsupported spans refuse rather than guess.
|
|
139
145
|
|
|
140
146
|
Rename repairs proven references and fixtures. Renaming only a command input
|
|
@@ -144,7 +150,13 @@ Removal refuses while readers remain. Removed expected values disclose
|
|
|
144
150
|
refuses `AmbiguousPropertyReference`, not a false assertion-preservation verdict.
|
|
145
151
|
Unrelated same-named fields appear in `property.notChanged`.
|
|
146
152
|
|
|
147
|
-
|
|
153
|
+
Read `property.needsDecision` for refusal reasons and located candidates;
|
|
154
|
+
`property.chainCandidates` lists unselected chain members, not automatic edits.
|
|
155
|
+
A refusal returns `success: false` and no writable partial candidate. Missing an
|
|
156
|
+
event mode returns `EventContractChangeRequiresDecision`; do not bypass it by
|
|
157
|
+
text editing or claiming the catalog proves non-persistence.
|
|
158
|
+
|
|
159
|
+
For any selected event property (including optional additions), choose exactly one mode: `newGeneration: true`
|
|
148
160
|
appends N+1 and preserves history; `eventNeverPersisted: true` edits current N in
|
|
149
161
|
place and requires actual knowledge that it was never stored. Neither flag selects
|
|
150
162
|
additional events. New generations require transformations before Chronicle deployment.
|
|
@@ -159,7 +171,42 @@ have equal revisions. `[]` means no accepted planned event edits, not success;
|
|
|
159
171
|
there is no singular `property.generation`. `deployableWithoutTransformation`
|
|
160
172
|
and `esmVersionKnown` are independent of authoring acceptance.
|
|
161
173
|
|
|
162
|
-
|
|
174
|
+
## Add with explicit sources and fixtures
|
|
175
|
+
|
|
176
|
+
Read the declaration's original `read-ast` handle. Send `action: "add"`, both
|
|
177
|
+
revision guards, `owner`, `expectedOwnerName`, `name` (new unqualified member),
|
|
178
|
+
`type` (authored type text, not a concept declaration), and optional `optional`
|
|
179
|
+
(default false). Use the flag, not an optional suffix in `type`.
|
|
180
|
+
|
|
181
|
+
`hops` defaults to `[]`: each entry has an original `at` handle and exactly one
|
|
182
|
+
of `name` or `value`. `{at, name}` adds the same type at a connected declaration;
|
|
183
|
+
`{at, value}` supplies a value expression at a `produces`, `from` or capture
|
|
184
|
+
`append` block. Every selected event producer/read-model consumer needs an
|
|
185
|
+
explicit mapping decision or compatible same-named AutoMap source. Never infer
|
|
186
|
+
a business expression. Existing property names and off-chain hops refuse.
|
|
187
|
+
Add does not accept `target`, `expectedName`, `newName`, `alsoRename` or `alsoRemove`;
|
|
188
|
+
add-only fields are invalid for rename/remove.
|
|
189
|
+
|
|
190
|
+
For a required addition with existing fixtures/assertions, supply `fixtureValue`
|
|
191
|
+
as **literal source text**, for example `"\"normal\""` for a String value. The
|
|
192
|
+
planner adds it to existing specification steps, examples and query results;
|
|
193
|
+
`optional: true` adds no fixture values. A literal is not proof of behavior:
|
|
194
|
+
inspect the assertions and run `run-specifications` on the retained proposal.
|
|
195
|
+
|
|
196
|
+
| Refusal | Response |
|
|
197
|
+
| --- | --- |
|
|
198
|
+
| `SourcesRequired` | Select missing producer/consumer mappings from the located candidates; do not guess sources |
|
|
199
|
+
| `FixtureValueRequired` | Supply the intended required literal fixture value; do not weaken assertions |
|
|
200
|
+
| `HopNotOnChain` | Remove or correct the off-chain selection; never edit same-named unrelated fields |
|
|
201
|
+
| `UnsupportedPropertySpan` | Preserve source and report unsupported nested feeds/expressions or shared spans; do not flatten the model to bypass refusal |
|
|
202
|
+
|
|
203
|
+
Use `CanonicalizeTouchedDocuments` for additions. Review `property.changed`
|
|
204
|
+
(`added`, `fixtureAdded`), decisions, chain candidates and generations, exact
|
|
205
|
+
bytes, dropped comments, identities and semantic diff before ordinary `apply`.
|
|
206
|
+
Even an optional event addition needs the same explicit evolution mode above.
|
|
207
|
+
|
|
208
|
+
Authority: Screenplay `v4.142.0:Source/DotNET/Screenplay.Mcp/McpWorkspaces.Property.cs`,
|
|
163
209
|
`Screenplay/Workspaces/WorkspaceProperty{Request,Plan,Safety,Report}.cs`,
|
|
164
|
-
`
|
|
165
|
-
`Documentation/screenplay/mcp/authoring-tools.md`;
|
|
210
|
+
`WorkspacePropertyAdd{Plan,Edits}.cs`, `WorkspacePropertyAssertionProvenance.cs`,
|
|
211
|
+
`WorkspaceEventGenerations.cs`, and `Documentation/screenplay/mcp/{edit,reference,authoring-tools}.md`;
|
|
212
|
+
the published contract's `mcpTools` entry for `propose-property`; decisions 0067 and 0044.
|
|
@@ -4,11 +4,25 @@
|
|
|
4
4
|
"fixtures": [],
|
|
5
5
|
"assertions": [
|
|
6
6
|
{ "kind": "play-compiles" },
|
|
7
|
+
{ "kind": "skill-contains", "value": "propose-property" },
|
|
8
|
+
{ "kind": "skill-contains", "value": "not hand-composed `propose-ast` batches", "file": "references/property-links.md" },
|
|
9
|
+
{ "kind": "skill-contains", "value": "`incomplete`, `needsDecision`", "file": "references/mcp-loop.md" },
|
|
10
|
+
{ "kind": "skill-contains", "value": "`property.chainCandidates`", "file": "references/property-links.md" },
|
|
11
|
+
{ "kind": "skill-contains", "value": "EventContractChangeRequiresDecision", "file": "references/property-links.md" },
|
|
12
|
+
{ "kind": "skill-contains", "value": "action: \"add\"", "file": "references/property-links.md" },
|
|
13
|
+
{ "kind": "skill-contains", "value": "`expectedOwnerName`", "file": "references/property-links.md" },
|
|
14
|
+
{ "kind": "skill-contains", "value": "{at, name}", "file": "references/property-links.md" },
|
|
15
|
+
{ "kind": "skill-contains", "value": "{at, value}", "file": "references/property-links.md" },
|
|
16
|
+
{ "kind": "skill-contains", "value": "`fixtureValue`", "file": "references/property-links.md" },
|
|
17
|
+
{ "kind": "skill-contains", "value": "SourcesRequired", "file": "references/property-links.md" },
|
|
18
|
+
{ "kind": "skill-contains", "value": "FixtureValueRequired", "file": "references/property-links.md" },
|
|
19
|
+
{ "kind": "skill-contains", "value": "HopNotOnChain", "file": "references/property-links.md" },
|
|
20
|
+
{ "kind": "skill-contains", "value": "UnsupportedPropertySpan", "file": "references/property-links.md" },
|
|
7
21
|
{ "kind": "skill-contains", "value": "weakensAssertion: true", "file": "references/property-links.md" },
|
|
8
22
|
{ "kind": "skill-contains", "value": "property.generations", "file": "references/property-links.md" },
|
|
9
23
|
{
|
|
10
24
|
"kind": "skill-contains",
|
|
11
|
-
"value": "Screenplay v4.
|
|
25
|
+
"value": "Screenplay v4.142.0"
|
|
12
26
|
},
|
|
13
27
|
{
|
|
14
28
|
"kind": "skill-contains",
|
|
@@ -92,7 +106,8 @@
|
|
|
92
106
|
},
|
|
93
107
|
{
|
|
94
108
|
"kind": "skill-contains",
|
|
95
|
-
"value": "`view: \"dropped-comments\"`"
|
|
109
|
+
"value": "`view: \"dropped-comments\"`",
|
|
110
|
+
"file": "references/mcp-loop.md"
|
|
96
111
|
},
|
|
97
112
|
{
|
|
98
113
|
"kind": "skill-contains",
|
|
@@ -156,7 +156,7 @@ option, mark it `ASSUMED` in the slice or module `documentation` and in the sess
|
|
|
156
156
|
block compiles but is PLAY0271 at binding. Keep both when they state real intent; they are not
|
|
157
157
|
protection. `description` text never reaches rendered code: a rule that lives only in prose is
|
|
158
158
|
unenforced there.
|
|
159
|
-
- `pii` and `secret` bind as ESM v13 on standalone 4.141.0, not the pinned CLI;
|
|
159
|
+
- `pii` and `secret` bind as ESM v13 on standalone 4.142.0 (since 4.141.0), not the pinned CLI;
|
|
160
160
|
enum/identity compliance and protected events with explicit subject marks still
|
|
161
161
|
refuse PLAY0268 (command-surface `references/compliance.md`). Legacy markers are
|
|
162
162
|
deprecated (PLAY0565). Never remove protection to pass a tool. PLAY0515 also refuses
|
|
@@ -8,14 +8,14 @@ active-state view with removal. Read it with `consistency-and-concurrency.md` (s
|
|
|
8
8
|
The model compiles at 4.127.0 (V1, warnings as errors) but is not binding-ready by design:
|
|
9
9
|
`reads` and the `concurrency` block are PLAY0271, and `require` over a view is PLAY0268.
|
|
10
10
|
The `pii` concept failed binding on that compiler and still fails on the pinned CLI,
|
|
11
|
-
but binds as v13 on standalone 4.141.0. Keep those lines: they state real intent.
|
|
11
|
+
but binds as v13 on standalone 4.142.0 (since 4.141.0). Keep those lines: they state real intent.
|
|
12
12
|
|
|
13
13
|
```screenplay expect PLAY0516 test=unbound
|
|
14
14
|
// cratis-screenplay-streams-and-consistency: complete design-mode example (V1 with --warnings-as-errors).
|
|
15
15
|
// Shows: one business identity per stream, cross-stream references as payload, uniqueness
|
|
16
16
|
// constraints (single, composite with release, unique event), a recorded state-dependent rule
|
|
17
17
|
// that Screenplay cannot enforce, a declared concurrency scope, and an active-state view with removal.
|
|
18
|
-
// Historical/CLI binding probes refuse compliance; standalone 4.
|
|
18
|
+
// Historical/CLI binding probes refuse compliance; standalone 4.142.0 binds this pii concept as v13 (since 4.141.0), the
|
|
19
19
|
// concurrency block and `reads` are PLAY0271, `require` over a view is PLAY0268. Keep them: they state
|
|
20
20
|
// real intent. The capacity rule is NOT enforced in the model today (see the slice description).
|
|
21
21
|
|
|
@@ -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. For exact diagnostic codes, MCP names/parameters and standalone CLI options, search the large published [references/screenplay-contract.json](references/screenplay-contract.json), pinned by [references/screenplay-contract.version](references/screenplay-contract.version), rather than loading it in full. Locate a diagnostic by its exact `code` (for example `"code": "PLAY0029"`), a tool by its exact `name` (for example `"name": "read-workspace"`), or a command in `cliCommands`; read the matched object for retirement, parameters or options. [references/screenplay-contract-exceptions.json](references/screenplay-contract-exceptions.json) records reasoned exceptions for historical statements; it does not change the current contract.
|
|
24
24
|
|
|
25
|
-
The standalone pin is Screenplay 4.
|
|
25
|
+
The standalone pin is Screenplay 4.142.0.
|
|
26
26
|
CLI and bundled package pins: `references/versions.md`. 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.53.1
|
|
34
|
-
or Screenplay 4.
|
|
34
|
+
or Screenplay 4.142.0.
|
|
35
35
|
|
|
36
36
|
## Ground rules
|
|
37
37
|
|
|
@@ -44,7 +44,7 @@ or Screenplay 4.141.0.
|
|
|
44
44
|
3. **Pick the compiler deliberately and name it.** Standalone `screenplay` for
|
|
45
45
|
current language checks and reference specifications; `cratis` for rendering
|
|
46
46
|
and generation. Bundled and standalone versions differ (CLI 3.53.1 bundles 4.137.0;
|
|
47
|
-
the standalone pin is 4.
|
|
47
|
+
the standalone pin is 4.142.0). Report both tool and
|
|
48
48
|
version, rather than transferring a verdict across releases.
|
|
49
49
|
4. **Know the mode** (design, executable, renderable) and write from its subset.
|
|
50
50
|
5. **Capability is not correctness.** The tool you ran decides what is accepted today; the
|
|
@@ -90,7 +90,7 @@ V2 and V3 need MCP (V3 alone can also be read from `cratis screenplay validate -
|
|
|
90
90
|
server with a fixed root when the tool is older than 4.63.2 (the roots bug hit 4.63.1 and the
|
|
91
91
|
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".
|
|
92
92
|
|
|
93
|
-
One line per verdict, tool first, for example `V1 pass (screenplay 4.
|
|
93
|
+
One line per verdict, tool first, for example `V1 pass (screenplay 4.142.0, 3 files)` and
|
|
94
94
|
`V3 blocked: PLAY0268 x3 (filter query, enum compliance)`. Name the source identity (commit plus the digest from
|
|
95
95
|
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
|
|
96
96
|
`modelRevision`, which is semantic and, without `.screenplay/identities.json`,
|
|
@@ -103,7 +103,7 @@ changes with the root folder name.
|
|
|
103
103
|
- **Executable** (binds, V3): `references/executable-subset.md`. Optional keyed lookups, unfiltered
|
|
104
104
|
lists and lists narrowed by one `by` key (observable too); `filter`, `scoped to`, `performer` and composite `by` do not bind; no handler (PLAY0268, with or without `implementation`/`hint`); `reads` and
|
|
105
105
|
`concurrency` do not bind (PLAY0271); concept compliance binds as v13 on standalone
|
|
106
|
-
4.141.0, not the pinned CLI (precise refusals: command-surface `references/compliance.md`);
|
|
106
|
+
4.142.0 (since 4.141.0), not the pinned CLI (precise refusals: command-surface `references/compliance.md`);
|
|
107
107
|
v6 constructs bind on Screenplay 4.61 or
|
|
108
108
|
later (standalone, and cratis 3.28.2 or later); generated values and `returns` responses bind (ESM v7)
|
|
109
109
|
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).
|
|
@@ -4,6 +4,12 @@ One complete document with every construct family. Design mode, not executable.
|
|
|
4
4
|
|
|
5
5
|
Binding blockers: unquoted import, `reads` (PLAY0271), `starts with`, a `filter` query (lists and observable lists bind). 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
|
+
Concept compliance itself binds as ESM v13 on standalone 4.142.0 (first released
|
|
8
|
+
in 4.141.0); reasons remain report-only PLAY0270. CLI 3.53.1 bundles Screenplay
|
|
9
|
+
4.137.0, which refuses markers; standalone Stage 4.76.0 admits only through v12
|
|
10
|
+
(Stage#345). Binder-only PLAY0268
|
|
11
|
+
refusals and subject-lineage limits: command-surface `references/compliance.md`.
|
|
12
|
+
|
|
7
13
|
```screenplay test=unbound
|
|
8
14
|
// Design-mode cheat-sheet: every construct family; compiles warning-free on the standalone tool.
|
|
9
15
|
domain Acme.Invoicing // optional; first line when present
|
|
@@ -12,7 +18,7 @@ import Customers.CustomerRegistered // unquoted = another bounded context
|
|
|
12
18
|
|
|
13
19
|
concept InvoiceId : Uuid // primitives: Uuid String Int Decimal Bool Date DateTime Enum
|
|
14
20
|
concept PaymentId : Uuid
|
|
15
|
-
concept Email : String pii // v13
|
|
21
|
+
concept Email : String pii // v13 since 4.141.0; current standalone 4.142.0 binds; pinned CLI refuses
|
|
16
22
|
pii reason "Identifies a person"
|
|
17
23
|
validate
|
|
18
24
|
not empty message "An email is required"
|
|
@@ -173,7 +173,7 @@ escapes `%`/`|`, not an inferred split of legacy text.
|
|
|
173
173
|
Identity declarations and event `subject` are metadata; reading a declared
|
|
174
174
|
`$identity` detail in executable clauses is PLAY0268. `runs as` is admitted as
|
|
175
175
|
ESM v10 in the current standalone, not a current PLAY0268 gap. At standalone
|
|
176
|
-
4.
|
|
176
|
+
4.142.0, concept compliance binds as v13 (since 4.141.0); enum/identity compliance and protected
|
|
177
177
|
events with explicit subject marks still refuse PLAY0268. CLI 3.53.1's 4.137.0
|
|
178
178
|
bundle retains the blanket marker refusal; purpose metadata is PLAY0270. See command-surface
|
|
179
179
|
`references/compliance.md` and `references/context.md` for syntax and limits.
|
|
@@ -14,6 +14,12 @@ the released grammar/tool and successful purpose probes take precedence. The sam
|
|
|
14
14
|
page's legacy `@pii` mentions do not change bare `pii`/`secret` canonical syntax;
|
|
15
15
|
legacy forms compile with PLAY0565 information, duplicates with PLAY0653 warning.
|
|
16
16
|
Event `subject` remains report-only, despite accepted future lineage work.
|
|
17
|
+
Rechecked at 4.142.0: concept `pii`/`personal` and `secret` bind as v13, while
|
|
18
|
+
reasons stay PLAY0270 report-only. PLAY0268 at binding only rejects enum/identity
|
|
19
|
+
compliance and events mixing personal or explicitly subject-scoped secret values
|
|
20
|
+
with an explicit `subject` mark. CLI 3.53.1 bundles Screenplay 4.137.0, which
|
|
21
|
+
refuses markers; standalone Stage 4.76.0 admits only through v12 (Stage#345). These are distinct boundaries,
|
|
22
|
+
not a reason to remove protection.
|
|
17
23
|
|
|
18
24
|
`D/` is Screenplay `Documentation/screenplay/` at **v4.66.0**; line numbers were re-read at
|
|
19
25
|
that tag. Rule: the compiler you ran decides what the tool accepts today; the documentation
|
|
@@ -42,7 +48,7 @@ read from source or documentation.
|
|
|
42
48
|
| 14 | `$causedBy` | not evaluable (#4119), not ESM | showcase only |
|
|
43
49
|
| 15 | literal keys | `key literal "global"` vs `key "global"` | both compile; prefer `literal` |
|
|
44
50
|
| 16 | query admission | `D/queries.md:74` now says live, filtered, scoped and performer queries are not admitted | the binder also rejects collection queries and a missing `by`, which stay undocumented [probed] |
|
|
45
|
-
| 17 | `@pii` | `D/concepts.md:3,33` "Chronicle applies `@pii` and `@sensitive` rules automatically" | the historical binder rejected any compliance attribute (PLAY0268); standalone 4.
|
|
51
|
+
| 17 | `@pii` | `D/concepts.md:3,33` "Chronicle applies `@pii` and `@sensitive` rules automatically" | the historical binder rejected any compliance attribute (PLAY0268); standalone 4.142.0 admits concept compliance as v13 (since 4.141.0) with narrower enum/identity/subject-lineage refusals (command-surface `references/compliance.md`). Keep protection; the pinned CLI still reports V3 blocked. `@sensitive` means an operational secret (`[Encrypted]` + `[NotAudited]`; Screenplay decision 0034); the historically probed tools (standalone 4.68.0, bundle 4.66.0) do **not** report `PLAY0515` (`@pii` from 4.69.1, `@sensitive` from 4.84.1): there only Chronicle catches either attribute on an event-source identifier, at build time of the generated code (CHR0034 for `@pii`, CHR0052 for `@sensitive`) |
|
|
46
52
|
| 18 | read-model identity | `D/readmodels.md:32` "from the keyed query" | at 4.135.0 explicit `key` wins; else single-instance queries agree on one read-model `by` property; only with none and an admitted list query does conventional `*Id` inference run (collection-key exclusions: read-surface `references/named-keys.md`). Queryless views need explicit `key` |
|
|
47
53
|
| 19 | `$strings` constraint messages | `D/constraints.md:31` vs `D/internationalization.md:55` | the compiler keeps the key; realization localizes |
|
|
48
54
|
| 20 | composite key braces | optional in the EBNF; both forms in docs | both fine |
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Contents
|
|
4
4
|
|
|
5
|
-
- Caller and compliance boundary (4.
|
|
5
|
+
- Caller and compliance boundary (4.142.0)
|
|
6
6
|
- Admitted on both compilers
|
|
7
7
|
- Admitted from Screenplay 4.61 (ESM v6): standalone tool and cratis 3.28.2 or later
|
|
8
8
|
- Generated values and responses (ESM v7): standalone 4.68.0 or later; the cratis 3.53.1 bundle binds them too
|
|
@@ -21,7 +21,7 @@ reaction refusals/redelivery remain unadmitted. Use the actual
|
|
|
21
21
|
binder before promoting an older probe to a current capability claim.
|
|
22
22
|
|
|
23
23
|
What the binder admits, and what it refuses with which code. The answer depends on the
|
|
24
|
-
compiler version: the standalone tool (4.
|
|
24
|
+
compiler version: the standalone tool (4.142.0) binds through v13; the compiler bundled in cratis
|
|
25
25
|
3.53.1 (4.137.0) binds ESM through v10 for rendering and refuses non-positional enum numbers at
|
|
26
26
|
binding; older bundles (4.66.0 in cratis 3.28.x, admitting v1 to v6; 4.60.1 before 3.28.2, v1 to v5)
|
|
27
27
|
are history.
|
|
@@ -40,7 +40,7 @@ Complete examples that bind live in `executable-example.md` (both compilers),
|
|
|
40
40
|
(ESM v6; standalone tool and cratis 3.28.2 or later) and `generated-responses-example.md`
|
|
41
41
|
(ESM v7; standalone tool 4.68.0 or later, and the cratis 3.53.1 bundle).
|
|
42
42
|
|
|
43
|
-
## Caller and compliance boundary (4.
|
|
43
|
+
## Caller and compliance boundary (4.142.0)
|
|
44
44
|
|
|
45
45
|
`$identity.id`/`.name`/`.userName` are aliases of the admitted
|
|
46
46
|
`$context.identity` produces-mapping values. Authentication status, roles and
|
|
@@ -50,12 +50,12 @@ readiness. Executable reads of declared `$identity.<detail>` do (PLAY0268);
|
|
|
50
50
|
`$context.identity` remains built-ins only. Purposes and event `subject` marks
|
|
51
51
|
are metadata (PLAY0270), not source resolution, retention or subject propagation.
|
|
52
52
|
Bare `pii`/`personal` and `secret` concepts, scopes and qualifiers bind as v13
|
|
53
|
-
on standalone 4.
|
|
53
|
+
on standalone 4.142.0; CLI 3.53.1 bundles Screenplay 4.137.0, which refuses markers. Enum/identity
|
|
54
54
|
compliance and events mixing protected values with explicit subject marks remain
|
|
55
55
|
refused; see command-surface `references/compliance.md` for the precise boundary.
|
|
56
56
|
Legacy spellings compile with PLAY0565 information; duplicates warn PLAY0653.
|
|
57
57
|
Never remove protection. Reference execution proves neither encryption nor erasure.
|
|
58
|
-
Authority: v4.
|
|
58
|
+
Authority: v4.142.0 `SemanticModelBinder.Compliance.cs`, `concepts.md`, `events.md`;
|
|
59
59
|
caller and purpose guidance retains v4.127.0 `context.md`, `identity.md`, `purposes.md`.
|
|
60
60
|
|
|
61
61
|
## Admitted on both compilers
|
|
@@ -170,6 +170,14 @@ pins preserve the earlier executable version/bytes. The optional canonical last
|
|
|
170
170
|
Consumers must admit v12 explicitly; CLI 3.53.1/Stage 4.73.1 do not. Syntax:
|
|
171
171
|
command-surface `references/enum-numbers.md`; version contract: `versions.md`.
|
|
172
172
|
|
|
173
|
+
Concept `pii`/`personal` and `secret`, qualifiers and scopes bind as optional
|
|
174
|
+
`compliance` in ESM v13 from 4.141.0 (rechecked at 4.142.0). Reasons remain
|
|
175
|
+
report-only PLAY0270; reference execution proves neither encryption nor erasure.
|
|
176
|
+
Enum/identity concepts and an event combining personal or explicitly subject-scoped
|
|
177
|
+
secret values with an explicit `subject` mark refuse PLAY0268 at binding only.
|
|
178
|
+
CLI 3.53.1 bundles Screenplay 4.137.0, which refuses markers; standalone Stage
|
|
179
|
+
4.76.0 admits only through v12 (Stage#345). Preserve protection, not a falsely green bind.
|
|
180
|
+
|
|
173
181
|
## Code attachments (what binds, what never does)
|
|
174
182
|
|
|
175
183
|
Inline fences (`csharp`, `typescript`, `react`, `html`, `sql`) and `file <path>` attach
|
|
@@ -213,7 +221,7 @@ bodies still leave their owner non-executable.
|
|
|
213
221
|
| --- | --- | --- |
|
|
214
222
|
| `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` |
|
|
215
223
|
| Unquoted `import Other.Contract` | PLAY0268 | external contract import is not bound |
|
|
216
|
-
| `pii` or `secret` on a concept | PLAY0268 | Blanket refusal on CLI 3.53.1's 4.137.0 bundle only. Standalone 4.
|
|
224
|
+
| `pii` or `secret` on a concept | PLAY0268 | Blanket refusal on CLI 3.53.1's 4.137.0 bundle only. Standalone 4.142.0 admits v13 except enum/identity compliance and events mixing personal or explicitly subject-scoped secret values with explicit subject marks; see `compliance.md` in command-surface references |
|
|
217
225
|
| `query` with a composite `by` block, or `by ... from` context-derived arguments | PLAY0268 | composite `by` blocks remain unadmitted (#599). An optional scalar snapshot lookup, an unfiltered list (`RM[]`) and a list narrowed by one caller-supplied `by` key bind, in their `observable` form too (since 4.105.0) |
|
|
218
226
|
| `filter`, `scoped to`, `performer` queries | PLAY0268 | "uses delivery, filtering, scope, or implementation behavior outside the first ESM v1 vertical." `observable` is not the blocker: it goes in the return position (`=> observable RM[]`); as a body line it is PLAY0048 |
|
|
219
227
|
| `contains` or `starts with` in conditions | PLAY0268 | equality and numeric ordering only |
|
|
@@ -256,8 +264,8 @@ bodies still leave their owner non-executable.
|
|
|
256
264
|
Do not remove `pii`, `secret`, `authorize` or policies, list queries, automations or
|
|
257
265
|
rules a domain needs just to make binding pass. Report `V3 blocked: <codes>` and record the
|
|
258
266
|
slice in the gap list. A `pii` or `secret` marker selects v13 on standalone
|
|
259
|
-
4.
|
|
260
|
-
|
|
267
|
+
4.142.0 (since 4.141.0). CLI 3.53.1 bundles Screenplay 4.137.0, which refuses
|
|
268
|
+
markers; standalone Stage 4.76.0 admits only through v12 (Stage#345). Either attribute on an identifier or typed destination is a source error
|
|
261
269
|
PLAY0515 on the current compiler (including stream-id parts and route mapping
|
|
262
270
|
sources). Chronicle also rejects `[PII]`/`[Encrypted]` on event-source identifiers
|
|
263
271
|
(CHR0034/CHR0052). Keep surrogate identity and protected payload separate.
|
|
@@ -56,8 +56,10 @@ version; each construct it does not render refuses with its own code before any
|
|
|
56
56
|
| Evolved events | initial revisions only | `STAGE-ESM-026` (Stage#204) |
|
|
57
57
|
| Descriptions, documentation | XML `<summary>`/`<remarks>` doc comments only (Stage#178 closed) | characters invalid in XML: `CLI-RENDER-005`; never behavior |
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
CLI 3.53.1 bundles Screenplay 4.137.0. That compiler refuses `reads` and
|
|
60
|
+
`concurrency` (PLAY0271), command `handler`s and concept `pii`/`secret` markers
|
|
61
|
+
(PLAY0268) at binding, before Stage admission. Rows below naming Stage 4.24
|
|
62
|
+
behavior are historical.
|
|
61
63
|
|
|
62
64
|
## Historical: what Stage 4.24 admitted
|
|
63
65
|
|
|
@@ -89,9 +91,10 @@ whole automation is hand-written (gap-fill).
|
|
|
89
91
|
|
|
90
92
|
At standalone 4.127.0, compliance uses bare `pii`/`secret` (legacy markers are
|
|
91
93
|
accepted with PLAY0565 information); either still refuses binding on that compiler.
|
|
92
|
-
Standalone 4.
|
|
93
|
-
(command-surface `references/compliance.md`)
|
|
94
|
-
|
|
94
|
+
Standalone 4.142.0 admits concept compliance as v13 (from 4.141.0) with narrower refusals
|
|
95
|
+
(command-surface `references/compliance.md`). CLI 3.53.1 bundles Screenplay
|
|
96
|
+
4.137.0, which refuses markers; standalone Stage 4.76.0 admits only through v12
|
|
97
|
+
(Stage#345). Identity blocks,
|
|
95
98
|
purposes and event `subject` are authoring metadata, not provider realization;
|
|
96
99
|
executing identity detail reads still refuses PLAY0268. Current source/stream
|
|
97
100
|
routes are admitted as v8, including composite ids, not the historical binding
|
package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json
CHANGED
|
@@ -21491,11 +21491,18 @@
|
|
|
21491
21491
|
"alsoRename",
|
|
21492
21492
|
"eventNeverPersisted",
|
|
21493
21493
|
"expectedName",
|
|
21494
|
+
"expectedOwnerName",
|
|
21495
|
+
"fixtureValue",
|
|
21494
21496
|
"formatting",
|
|
21497
|
+
"hops",
|
|
21495
21498
|
"includeContent",
|
|
21499
|
+
"name",
|
|
21496
21500
|
"newGeneration",
|
|
21497
21501
|
"newName",
|
|
21502
|
+
"optional",
|
|
21503
|
+
"owner",
|
|
21498
21504
|
"target",
|
|
21505
|
+
"type",
|
|
21499
21506
|
"validation"
|
|
21500
21507
|
],
|
|
21501
21508
|
"inputSchema": {
|
|
@@ -21510,6 +21517,7 @@
|
|
|
21510
21517
|
"action": {
|
|
21511
21518
|
"type": "string",
|
|
21512
21519
|
"enum": [
|
|
21520
|
+
"add",
|
|
21513
21521
|
"rename",
|
|
21514
21522
|
"remove"
|
|
21515
21523
|
]
|
|
@@ -21614,6 +21622,93 @@
|
|
|
21614
21622
|
},
|
|
21615
21623
|
"maxItems": 256
|
|
21616
21624
|
},
|
|
21625
|
+
"owner": {
|
|
21626
|
+
"type": "object",
|
|
21627
|
+
"properties": {
|
|
21628
|
+
"revision": {
|
|
21629
|
+
"type": "string"
|
|
21630
|
+
},
|
|
21631
|
+
"documentId": {
|
|
21632
|
+
"type": "string"
|
|
21633
|
+
},
|
|
21634
|
+
"path": {
|
|
21635
|
+
"type": "string"
|
|
21636
|
+
}
|
|
21637
|
+
},
|
|
21638
|
+
"required": [
|
|
21639
|
+
"revision",
|
|
21640
|
+
"documentId",
|
|
21641
|
+
"path"
|
|
21642
|
+
],
|
|
21643
|
+
"additionalProperties": false
|
|
21644
|
+
},
|
|
21645
|
+
"expectedOwnerName": {
|
|
21646
|
+
"type": "string"
|
|
21647
|
+
},
|
|
21648
|
+
"name": {
|
|
21649
|
+
"type": "string"
|
|
21650
|
+
},
|
|
21651
|
+
"type": {
|
|
21652
|
+
"type": "string"
|
|
21653
|
+
},
|
|
21654
|
+
"optional": {
|
|
21655
|
+
"type": "boolean",
|
|
21656
|
+
"default": false
|
|
21657
|
+
},
|
|
21658
|
+
"hops": {
|
|
21659
|
+
"type": "array",
|
|
21660
|
+
"items": {
|
|
21661
|
+
"type": "object",
|
|
21662
|
+
"properties": {
|
|
21663
|
+
"at": {
|
|
21664
|
+
"type": "object",
|
|
21665
|
+
"properties": {
|
|
21666
|
+
"revision": {
|
|
21667
|
+
"type": "string"
|
|
21668
|
+
},
|
|
21669
|
+
"documentId": {
|
|
21670
|
+
"type": "string"
|
|
21671
|
+
},
|
|
21672
|
+
"path": {
|
|
21673
|
+
"type": "string"
|
|
21674
|
+
}
|
|
21675
|
+
},
|
|
21676
|
+
"required": [
|
|
21677
|
+
"revision",
|
|
21678
|
+
"documentId",
|
|
21679
|
+
"path"
|
|
21680
|
+
],
|
|
21681
|
+
"additionalProperties": false
|
|
21682
|
+
},
|
|
21683
|
+
"name": {
|
|
21684
|
+
"type": "string"
|
|
21685
|
+
},
|
|
21686
|
+
"value": {
|
|
21687
|
+
"type": "string"
|
|
21688
|
+
}
|
|
21689
|
+
},
|
|
21690
|
+
"required": [
|
|
21691
|
+
"at"
|
|
21692
|
+
],
|
|
21693
|
+
"additionalProperties": false,
|
|
21694
|
+
"oneOf": [
|
|
21695
|
+
{
|
|
21696
|
+
"required": [
|
|
21697
|
+
"name"
|
|
21698
|
+
]
|
|
21699
|
+
},
|
|
21700
|
+
{
|
|
21701
|
+
"required": [
|
|
21702
|
+
"value"
|
|
21703
|
+
]
|
|
21704
|
+
}
|
|
21705
|
+
]
|
|
21706
|
+
},
|
|
21707
|
+
"maxItems": 256
|
|
21708
|
+
},
|
|
21709
|
+
"fixtureValue": {
|
|
21710
|
+
"type": "string"
|
|
21711
|
+
},
|
|
21617
21712
|
"newGeneration": {
|
|
21618
21713
|
"type": "boolean",
|
|
21619
21714
|
"default": false
|
|
@@ -21685,6 +21780,26 @@
|
|
|
21685
21780
|
"expectedName"
|
|
21686
21781
|
]
|
|
21687
21782
|
}
|
|
21783
|
+
},
|
|
21784
|
+
{
|
|
21785
|
+
"if": {
|
|
21786
|
+
"properties": {
|
|
21787
|
+
"action": {
|
|
21788
|
+
"const": "add"
|
|
21789
|
+
}
|
|
21790
|
+
},
|
|
21791
|
+
"required": [
|
|
21792
|
+
"action"
|
|
21793
|
+
]
|
|
21794
|
+
},
|
|
21795
|
+
"then": {
|
|
21796
|
+
"required": [
|
|
21797
|
+
"owner",
|
|
21798
|
+
"expectedOwnerName",
|
|
21799
|
+
"name",
|
|
21800
|
+
"type"
|
|
21801
|
+
]
|
|
21802
|
+
}
|
|
21688
21803
|
}
|
|
21689
21804
|
]
|
|
21690
21805
|
}
|
package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.
|
|
1
|
+
4.142.0
|
|
@@ -53,7 +53,7 @@ V3 are read from the MCP server or from a render, V1 and V5 from the CLIs.
|
|
|
53
53
|
Needs an MCP connection (V2 and V3 belong to the session that owns MCP; a subagent without
|
|
54
54
|
MCP reports `V2 not run: no MCP in this agent` unless the brief supplies fresh output). Without
|
|
55
55
|
MCP, a binding check exists: `cratis screenplay validate --executable <root>` binds with the
|
|
56
|
-
**bundled** compiler (CLI 3.53.1 bundles Screenplay 4.137.0, not the standalone 4.
|
|
56
|
+
**bundled** compiler (CLI 3.53.1 bundles Screenplay 4.137.0, not the standalone 4.142.0), never
|
|
57
57
|
renders or writes files, and exits 5 with "The model does not bind into an executable semantic
|
|
58
58
|
model" when it does not. Report it as `V3 (bundled 4.137.0 via cratis validate --executable)`; it
|
|
59
59
|
gives binding errors, not the V2 `executable-diagnostics` view, so V2 stays MCP-only.
|
|
@@ -85,7 +85,13 @@ comparison needs it). Binding is what makes a model renderable at all. V3 means
|
|
|
85
85
|
never "specifications pass".
|
|
86
86
|
|
|
87
87
|
- Report the ESM version the model needs: `V3 ready (screenplay 4.139.0, ESM v6)`,
|
|
88
|
-
`V3 blocked: PLAY0268
|
|
88
|
+
`V3 blocked: PLAY0268 (enum compliance) - design scope kept`.
|
|
89
|
+
Bare `pii`/`personal` and `secret` bind as v13 on standalone 4.142.0; reasons
|
|
90
|
+
remain report-only PLAY0270. Enum/identity compliance and personal or explicitly
|
|
91
|
+
subject-scoped secret event values with an explicit `subject` mark still refuse
|
|
92
|
+
PLAY0268 at binding only. CLI 3.53.1 bundles Screenplay 4.137.0, which refuses
|
|
93
|
+
markers; standalone Stage 4.76.0 admits only through v12 (Stage#345).
|
|
94
|
+
V3 does not prove rendering.
|
|
89
95
|
- A blocked V3 is not repaired by deleting protection or domain rules. Never remove `pii`,
|
|
90
96
|
`secret`, authorization, list queries, automations or rules to reach V3; record the
|
|
91
97
|
slice and the code in the gap list.
|
|
@@ -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.142.0** (`e6439548`) | Released tag `v4.142.0` and its unchanged published contract; property additions join rename/remove, with concept compliance/ESM v13 retained |
|
|
21
21
|
| cratis CLI | **3.53.1** | Released tag `v3.53.1`; source-checked, not a new render/browser probe |
|
|
22
22
|
| Screenplay bundled by CLI | **4.137.0** | CLI `v3.53.1:Directory.Packages.props`; enum-number authoring, not v12 binding |
|
|
23
23
|
| Stage bundled by CLI | **4.73.1** | Same file; Stage's own `Directory.Packages.props` also pins Screenplay 4.137.0 |
|
|
@@ -53,7 +53,7 @@ or renderer probes below as results from the newer bundle.
|
|
|
53
53
|
|
|
54
54
|
## Two compilers, one rule
|
|
55
55
|
|
|
56
|
-
Standalone Screenplay 4.
|
|
56
|
+
Standalone Screenplay 4.142.0 and CLI 3.53.1's 4.137.0 bundle are different releases.
|
|
57
57
|
Prefer standalone for the current language checks; CLI owns generation, Prologue
|
|
58
58
|
and rendering. Name the tool/version with every verdict. No verdict transfers
|
|
59
59
|
between differing compilers without checking the same inputs there.
|
|
@@ -85,7 +85,7 @@ for identity-stable selection.
|
|
|
85
85
|
|
|
86
86
|
## Admission boundaries
|
|
87
87
|
|
|
88
|
-
Screenplay `v4.
|
|
88
|
+
Screenplay `v4.142.0:Source/DotNET/Screenplay/Semantics/Versions.cs` supports
|
|
89
89
|
schema pairs through v13. Admission selects by use:
|
|
90
90
|
|
|
91
91
|
- v7: generated values/responses and policy negation.
|
|
@@ -172,7 +172,7 @@ The Stage skill teaches the version-gated examples.
|
|
|
172
172
|
|
|
173
173
|
At 4.127.0, `$identity` aliases built-in caller paths; declared identity details
|
|
174
174
|
remain metadata and their executable reads report PLAY0268. Bare `pii`/`secret`
|
|
175
|
-
bind as v13 on standalone 4.
|
|
175
|
+
bind as v13 on standalone 4.142.0, but still block binding on CLI 3.53.1's
|
|
176
176
|
4.137.0 bundle; `personal` aliases `pii`. Legacy markers are accepted with
|
|
177
177
|
PLAY0565 information, duplicates warn PLAY0653. Event `subject` and processing
|
|
178
178
|
purposes are report-only metadata (PLAY0270); purpose checks/reports do not prove
|