@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.
Files changed (53) hide show
  1. package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +13 -4
  2. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +4 -3
  3. package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +37 -36
  4. package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +154 -0
  5. package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +48 -0
  6. package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +1 -1
  7. package/package/corpus/skills/cratis-screenplay-command-surface/verification.json +6 -0
  8. package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +10 -3
  9. package/package/corpus/skills/cratis-screenplay-discovery/references/interview-questions.md +1 -1
  10. package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +3 -3
  11. package/package/corpus/skills/cratis-screenplay-event-modeling/references/naming-primitives.md +5 -3
  12. package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +3 -1
  13. package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +10 -2
  14. package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +5 -2
  15. package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +33 -6
  16. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +15 -1
  17. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +37 -1
  18. package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +1 -1
  19. package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +8 -1
  20. package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +1 -1
  21. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/SKILL.md +3 -3
  22. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/completeness-self-check.md +1 -1
  23. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/verdicts-and-modes.md +1 -1
  24. package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +7 -0
  25. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +3 -3
  26. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +1 -1
  27. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +1 -1
  28. package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +10 -1
  29. package/package/corpus/skills/cratis-screenplay-slice-design/references/command-inventory.md +2 -1
  30. package/package/corpus/skills/cratis-screenplay-slice-design/references/review-questions.md +2 -1
  31. package/package/corpus/skills/cratis-screenplay-slice-design/references/rule-layers.md +4 -3
  32. package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +1 -1
  33. package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +8 -0
  34. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +18 -4
  35. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/chronicle-boundaries.md +8 -4
  36. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/consistency-and-concurrency.md +10 -0
  37. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +9 -0
  38. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +3 -3
  39. package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +12 -5
  40. package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +2 -2
  41. package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +12 -1
  42. package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +75 -5
  43. package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +8 -1
  44. package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +19 -4
  45. package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +7 -1
  46. package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +16 -1
  47. package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +21 -0
  48. package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +18 -1
  49. package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +7 -6
  50. package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +10 -3
  51. package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +6 -0
  52. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +2 -2
  53. 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.125.0. CLI 3.41.0 bundles Screenplay 4.114.0,
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.125.0.
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 `@pii`, `@sensitive`, authorization, list queries, automations or rules
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, @pii)`. Name the source identity (commit plus the digest from
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 `@pii`; v6 constructs bind on Screenplay 4.61 or
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
- Blocking on every compiler: unquoted import, `@pii`, `reads` (PLAY0271), `starts with`, observable/list/filter query. Executable shapes are in the sibling examples. The fence compiles warning-free on the standalone 4.66.0 tool and on `cratis screenplay validate` 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.
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 @pii // @pii / @sensitive (blocks executability today)
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.125.0 / CLI 3.41.0; `versions.md` is the
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.125.0 these are V1 source checks, not binding-only gaps:
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), and reaction-refusal syntax/checks (0538–0545).
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), semantic binding and PLAY0546 (a negated claim targets optional,
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.125.0:Documentation/screenplay/editor-diagnostics.md`, `diagnostics.md`.
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, `@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 |
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.125.0 / CLI 3.41.0 (`versions.md`). This is a
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.125.0 / CLI 3.41.0 (`versions.md`). Detailed
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
- | `@pii` or `@sensitive` on any concept | PLAY0268 | "Concept '<n>' compliance attributes require portable data-subject semantics." Same message at 4.60.1 and 4.66.0. `@sensitive` means an operational secret, rendered `[Encrypted]` + `[NotAudited]` (Screenplay decision 0034) |
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 `@pii`, `@sensitive`, `authorize` or policies, list queries, automations or
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 `@pii` or `@sensitive` attribute blocks V3 and rendering, and
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
- - Current baseline: Screenplay `v4.125.0` `Documentation/screenplay/{tool,diagnostics,editor-diagnostics,grammar,event-sources,specifications,policies}.md`, MCP reference/authoring guides and `Semantics/Versions.cs`; CLI `v3.41.0` dependency pins, `RenderedSemanticVersions.cs` and its v7 planning specification. Installed versions/CLI help and changed examples were checked separately. Pins are in `versions.md`; the older probes below retain their original labels.
31
+ - 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
- Current pins: standalone Screenplay 4.125.0; CLI 3.41.0 bundles Screenplay
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.125.0 / CLI 3.41.0 (`versions.md`). Unless explicitly
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.125.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 |
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. Whole-source errors skip them; a skipped check is not passed.
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
- @pii ...`); it is the evidence for a "V3 blocked" report. The view also lists
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, @pii) - design scope kept`.
83
- - A blocked V3 is not repaired by deleting protection or domain rules. Never remove `@pii`,
84
- `@sensitive`, authorization, list queries, automations or rules to reach V3; record the
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.125.0** (`4d818eb`) | Released tag `v4.125.0`; installed `screenplay --version` and `--help` |
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.125.0 and the CLI's 4.114.0 bundle are different releases.
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.125.0:Source/DotNET/Screenplay/Semantics/Versions.cs` supports schema
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 `@pii` to get past a refusal.
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.125.0 / CLI 3.41.0 / Stage 4.51.3.
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratis/pi",
3
- "version": "7.22.0",
3
+ "version": "7.23.0",
4
4
  "description": "Configuration-aware Cratis AI integration for Pi",
5
5
  "type": "module",
6
6
  "files": [