@cratis/pi 7.32.0 → 7.34.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 (176) hide show
  1. package/package/corpus/agents/screenplay-modeler.md +1 -1
  2. package/package/corpus/agents/screenplay-renderer.md +1 -1
  3. package/package/corpus/agents/screenplay-reviewer.md +1 -1
  4. package/package/corpus/agents/slice-implementer.md +1 -1
  5. package/package/corpus/rules/profiles.md +1 -0
  6. package/package/corpus/skills/cratis-application-slice-conformance/LICENSE +2 -2
  7. package/package/corpus/skills/cratis-application-slice-conformance/SKILL.md +5 -0
  8. package/package/corpus/skills/cratis-application-slice-conformance/references/checklists.md +12 -0
  9. package/package/corpus/skills/cratis-application-slice-conformance/references/provenance.md +3 -4
  10. package/package/corpus/skills/cratis-application-slice-specifications/LICENSE +2 -2
  11. package/package/corpus/skills/cratis-application-slice-specifications/references/provenance.md +2 -3
  12. package/package/corpus/skills/cratis-arc-react-page/LICENSE +2 -2
  13. package/package/corpus/skills/cratis-arc-react-page/references/provenance.md +2 -3
  14. package/package/corpus/skills/cratis-chronicle-event-modeling/SKILL.md +12 -6
  15. package/package/corpus/skills/cratis-chronicle-reactor/LICENSE +2 -2
  16. package/package/corpus/skills/cratis-chronicle-reactor/SKILL.md +5 -2
  17. package/package/corpus/skills/cratis-chronicle-reactor/references/provenance.md +3 -3
  18. package/package/corpus/skills/cratis-chronicle-reactor/references/slice-delivery-checklist.md +93 -0
  19. package/package/corpus/skills/cratis-chronicle-read-model-specifications/LICENSE +2 -2
  20. package/package/corpus/skills/cratis-chronicle-read-model-specifications/SKILL.md +1 -1
  21. package/package/corpus/skills/cratis-chronicle-read-model-specifications/references/provenance.md +3 -3
  22. package/package/corpus/skills/cratis-chronicle-read-model-specifications/references/view-lifecycle-checks.md +79 -0
  23. package/package/corpus/skills/cratis-event-model-diagram/LICENSE +7 -0
  24. package/package/corpus/skills/cratis-event-model-diagram/SKILL.md +26 -2
  25. package/package/corpus/skills/cratis-event-model-diagram/references/provenance.md +19 -0
  26. package/package/corpus/skills/cratis-screenplay-automations-and-translations/LICENSE +2 -2
  27. package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +16 -11
  28. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/audit-format.md +1 -1
  29. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +7 -7
  30. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/effects-and-idempotency.md +1 -1
  31. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +5 -6
  32. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/public-events-and-direction.md +2 -3
  33. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/realization-and-gap-fill.md +9 -5
  34. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/todo-list-example.md +6 -6
  35. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/translate-example.md +1 -1
  36. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +16 -15
  37. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +2 -2
  38. package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +20 -19
  39. package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +3 -1
  40. package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +1 -1
  41. package/package/corpus/skills/cratis-screenplay-command-surface/references/enum-numbers.md +93 -0
  42. package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +5 -6
  43. package/package/corpus/skills/cratis-screenplay-command-surface/references/validate-rules.md +4 -2
  44. package/package/corpus/skills/cratis-screenplay-delivery-planning/LICENSE +9 -0
  45. package/package/corpus/skills/cratis-screenplay-delivery-planning/SKILL.md +118 -0
  46. package/package/corpus/skills/cratis-screenplay-delivery-planning/references/parallel-delivery.md +45 -0
  47. package/package/corpus/skills/cratis-screenplay-delivery-planning/references/provenance.md +29 -0
  48. package/package/corpus/skills/cratis-screenplay-delivery-planning/references/slice-counting.md +43 -0
  49. package/package/corpus/skills/cratis-screenplay-delivery-planning/references/velocity-and-capacity.md +48 -0
  50. package/package/corpus/skills/cratis-screenplay-delivery-planning/verification.json +16 -0
  51. package/package/corpus/skills/cratis-screenplay-discovery/LICENSE +2 -2
  52. package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +6 -5
  53. package/package/corpus/skills/cratis-screenplay-discovery/references/divergent-sweep.md +1 -0
  54. package/package/corpus/skills/cratis-screenplay-discovery/references/domain-analysis-template.md +92 -0
  55. package/package/corpus/skills/cratis-screenplay-discovery/references/personas-and-causes.md +2 -2
  56. package/package/corpus/skills/cratis-screenplay-discovery/references/provenance.md +4 -3
  57. package/package/corpus/skills/cratis-screenplay-discovery/verification.json +1 -1
  58. package/package/corpus/skills/cratis-screenplay-event-modeling/LICENSE +2 -2
  59. package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +30 -29
  60. package/package/corpus/skills/cratis-screenplay-event-modeling/references/nine-steps.md +7 -5
  61. package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +13 -10
  62. package/package/corpus/skills/cratis-screenplay-event-modeling/references/provenance.md +2 -3
  63. package/package/corpus/skills/cratis-screenplay-legacy-extraction/LICENSE +2 -2
  64. package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +26 -13
  65. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/candidate-inventory.md +6 -1
  66. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +7 -0
  67. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/prologue-safety.md +22 -17
  68. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/provenance.md +2 -3
  69. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/rule-modeling.md +2 -2
  70. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/side-car-migration.md +1 -0
  71. package/package/corpus/skills/cratis-screenplay-legacy-extraction/verification.json +1 -1
  72. package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +25 -25
  73. package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +8 -2
  74. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +8 -3
  75. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +38 -8
  76. package/package/corpus/skills/cratis-screenplay-model-authoring/references/property-links.md +126 -0
  77. package/package/corpus/skills/cratis-screenplay-model-authoring/references/screen-authoring-workflow.md +3 -4
  78. package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +1 -1
  79. package/package/corpus/skills/cratis-screenplay-model-review/LICENSE +2 -2
  80. package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +8 -8
  81. package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +2 -2
  82. package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +4 -4
  83. package/package/corpus/skills/cratis-screenplay-model-review/references/model-inventory-report.md +75 -0
  84. package/package/corpus/skills/cratis-screenplay-model-review/references/provenance.md +3 -4
  85. package/package/corpus/skills/cratis-screenplay-model-review/references/public-keys-and-routes.md +1 -1
  86. package/package/corpus/skills/cratis-screenplay-model-review/references/worked-example.md +4 -3
  87. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/LICENSE +2 -2
  88. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/SKILL.md +7 -5
  89. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/core-rules-digest.md +131 -0
  90. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/phases.md +1 -1
  91. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/provenance.md +25 -4
  92. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/reasoning-notes.md +2 -2
  93. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/verdicts-and-modes.md +1 -1
  94. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/vocabulary-map.md +5 -4
  95. package/package/corpus/skills/cratis-screenplay-projections/SKILL.md +9 -5
  96. package/package/corpus/skills/cratis-screenplay-projections/references/pdl-grammar.md +4 -2
  97. package/package/corpus/skills/cratis-screenplay-read-surface/LICENSE +7 -0
  98. package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +16 -8
  99. package/package/corpus/skills/cratis-screenplay-read-surface/references/provenance.md +21 -0
  100. package/package/corpus/skills/cratis-screenplay-read-surface/references/screen-patterns.md +130 -0
  101. package/package/corpus/skills/cratis-screenplay-read-surface/verification.json +1 -1
  102. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/LICENSE +2 -2
  103. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +60 -47
  104. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/delivery-protocol.md +17 -2
  105. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/drift-and-ledger.md +19 -2
  106. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +24 -6
  107. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/provenance.md +2 -3
  108. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +21 -16
  109. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/worked-example.md +34 -29
  110. package/package/corpus/skills/cratis-screenplay-scenario-coverage/LICENSE +2 -2
  111. package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +5 -4
  112. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/berth-reservations.md +1 -1
  113. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-design.md +5 -4
  114. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-example.md +32 -3
  115. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/provenance.md +3 -4
  116. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-catalogue.md +7 -6
  117. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-examples.md +3 -3
  118. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-workshop.md +15 -7
  119. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +11 -10
  120. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/view-and-story-specs.md +6 -4
  121. package/package/corpus/skills/cratis-screenplay-slice-design/LICENSE +2 -2
  122. package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +4 -3
  123. package/package/corpus/skills/cratis-screenplay-slice-design/references/command-inventory.md +2 -2
  124. package/package/corpus/skills/cratis-screenplay-slice-design/references/derived-condition-events.md +68 -0
  125. package/package/corpus/skills/cratis-screenplay-slice-design/references/field-lineage.md +1 -1
  126. package/package/corpus/skills/cratis-screenplay-slice-design/references/provenance.md +5 -5
  127. package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md +17 -0
  128. package/package/corpus/skills/cratis-screenplay-slice-design/references/rule-layers.md +6 -6
  129. package/package/corpus/skills/cratis-screenplay-slice-design/references/worked-example.md +3 -3
  130. package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +7 -5
  131. package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +4 -3
  132. package/package/corpus/skills/cratis-screenplay-specifications/references/generated-fixtures.md +3 -2
  133. package/package/corpus/skills/cratis-screenplay-specifications/references/persona-callers-and-cases.md +3 -0
  134. package/package/corpus/skills/cratis-screenplay-specifications/references/reactions-and-cascades.md +3 -2
  135. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/LICENSE +2 -2
  136. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +14 -11
  137. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/boundaries.md +31 -3
  138. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/chronicle-boundaries.md +6 -6
  139. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/consistency-and-concurrency.md +12 -11
  140. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/evolution.md +18 -1
  141. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/provenance.md +4 -4
  142. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +1 -1
  143. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +1 -1
  144. package/package/corpus/skills/cratis-screenplay-toolchain/LICENSE +2 -2
  145. package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +29 -18
  146. package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +3 -3
  147. package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +7 -4
  148. package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +21 -2
  149. package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +5 -3
  150. package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +32 -18
  151. package/package/corpus/skills/cratis-screenplay-toolchain/references/production-routes-and-filters.md +1 -1
  152. package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +3 -4
  153. package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +46 -16
  154. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract-exceptions.json +1 -1
  155. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +1092 -17
  156. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
  157. package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +1 -1
  158. package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +8 -8
  159. package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +18 -13
  160. package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +41 -20
  161. package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +7 -2
  162. package/package/corpus/skills/cratis-screenplay-ui-composition/LICENSE +2 -2
  163. package/package/corpus/skills/cratis-screenplay-ui-composition/SKILL.md +10 -10
  164. package/package/corpus/skills/cratis-screenplay-ui-composition/references/flow-review.md +1 -1
  165. package/package/corpus/skills/cratis-screenplay-ui-composition/references/provenance.md +2 -3
  166. package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +41 -16
  167. package/package/corpus/skills/cratis-screenplay-ui-composition/references/worked-flow.md +17 -9
  168. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +85 -77
  169. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +65 -16
  170. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/case-tables-and-whole-numbers.md +2 -2
  171. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/render-example.md +3 -1
  172. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/rendered-application.md +30 -15
  173. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/sandbox-and-specrunner.md +21 -1
  174. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +9 -4
  175. package/package/profile-catalog.json +1 -0
  176. package/package.json +1 -1
@@ -15,7 +15,7 @@ Sources, streams and command/specification routes bind and reference-execute as
15
15
  `specifications.md`, `Versions.cs`; the complete example below compiled with
16
16
  `--warnaserror` and passed `screenplay test` on 4.125.0.
17
17
 
18
- CLI 3.50.0/Stage 4.67.0 admits through v10 to construct checks, including v8
18
+ The pinned CLI/Stage pair (`versions.md`) admits through v10 to construct checks, including v8
19
19
  routes. Routed read-model/query replay scenarios can still refuse STAGE-ESM-030;
20
20
  run admission before promising parity. Previous CLI 3.46.1/Stage 4.52.0 refused
21
21
  above v7 with CLI-RENDER-004. Keep routing intact when a target refuses it;
@@ -1,13 +1,13 @@
1
1
  # Traps (one line each, with the fix)
2
2
 
3
- Current pins: Screenplay 4.135.0 / CLI 3.50.0 (`versions.md`). Unless explicitly
3
+ Current pins: `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
7
7
  exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
8
8
 
9
- 1. Clean V1 is not executable: binding errors appear only through MCP (V2) or `render`. Neither `screenplay <folder>` nor `cratis screenplay validate` binds. [probed]
10
- 2. The Screenplay samples validate clean but are not all executable; copying their idioms (list queries, `@pii`, `today`, `reads`, `$causedBy`, templates, performers) breaks V3. [probed]
9
+ 1. Clean V1 is not executable: binding errors appear through MCP (V2), `render` or `cratis screenplay validate --executable` (bundled compiler, writes nothing). Neither `screenplay <folder>` nor plain `cratis screenplay validate` binds. [probed]
10
+ 2. The Screenplay samples validate clean but are not all executable; copying their idioms (filtered queries, `@pii`, `today`, `reads`, `$causedBy`, templates, performers) breaks V3. [probed]
11
11
  3. Know the target mode (design/executable/renderable) before writing; state it.
12
12
  4. Plain `produces` without `for` means allocation in the ESM but "the identifier" in rendered code. Always write `for <identifier>`. [PLAY0478 probed]
13
13
  5. PLAY0029 is a warning: a misspelled keyword (or `type` inside a slice) drops the construct silently. Use `--warnings-as-errors`. [probed]
@@ -15,7 +15,7 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
15
15
  7. Current V1 warns on absent projection/children/nested targets (PLAY0514) and unknown removal/capture events (PLAY0166). Opt-in field-origins checks find unmapped declared fields (PLAY0534) where coverage is known; still walk lineage for skipped/opaque shapes.
16
16
  8. Severity does not soften a rule: `severity warning` still rejects the command.
17
17
  9. Authorization (module AND feature AND construct) runs before validation; unauthorized is `then denied`, never `then error`.
18
- 10. Without a declared actor an invocation is caller-less. At 4.125.0 declare reaction `runs as system role "<Role>"` (ESM v10), keep its gate, and reference-test the trusted path. The historical CLI 3.41.0/4.114.0 parser rejected this syntax (PLAY0137); previous CLI 3.46.1 refused v10 at its version gate; CLI 3.50.0/Stage 4.67.0 reaches construct checks but still refuses reaction identity (STAGE-ESM-034). Arc gap-fill uses `[ExecuteCommandsAsSystem]` for returned commands, not a fictional `given caller`.
18
+ 10. Without a declared actor an invocation is caller-less. At 4.125.0 declare reaction `runs as system role "<Role>"` (ESM v10), keep its gate, and reference-test the trusted path. The historical CLI 3.41.0/4.114.0 parser rejected this syntax (PLAY0137); previous CLI 3.46.1 refused v10 at its version gate; the pinned CLI/Stage pair (`versions.md`) reaches construct checks but still refuses reaction identity (STAGE-ESM-034). Arc gap-fill uses `[ExecuteCommandsAsSystem]` for returned commands, not a fictional `given caller`.
19
19
  11. A reaction `produces` without `for` lands on the trigger's event source; clock and application triggers need an explicit `for`.
20
20
  12. Explicit trailing `key` marks replace inference (never `identifier`); multipart read-model keys remain PLAY0268 (#599). Without marks, single-instance queries in the owning slice must agree on `by xId XId`, where `xId` is a read-model property. Only with no such identifier and an admitted list query does `*Id` inference run (collection-key exclusions: read-surface `references/named-keys.md`); queryless views need explicit `key`. The identifier equals the projection's effective key (table in slice-design `references/read-model-design.md`; full rule, including Stage's narrower admission and `STAGE-ESM-017`, in `cratis-stage-rendering-and-sandbox` `references/admission.md`). Never mark a read-model property `identifier`. (Without explicit `key`, PLAY0268 when identity inference is ambiguous or absent; PLAY0351 when a `given`/`then` readmodel block omits that property.)
21
21
  13. Projection `key` routes only on `from` (projection-level: PLAY0381). `all` is per event source. Joins never create instances and match the joined event's source id. [probed]
@@ -31,7 +31,7 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
31
31
  23. `@` escapes are mandatory for `tag`, `authorize`, `produces`, `reads`, `file`, `validate`, `sequence`, `occurred`, `causedBy`, `namespace`, `correlation`, `causation`, and projection `key`/`parent`/`with` as names.
32
32
  24. Canonicalizing edits can drop unplaceable comments (PLAY0288; inspect `droppedCommentCount`); keep durable rationale in fenced Markdown `documentation`, not `//`, and summaries in `description`. Documentation survives canonical printing but changes neither executable bytes nor `modelRevision`; it is not rendered code.
33
33
  25. MCP writes: propose, review, approval, apply by the identity owner (the session that owns the MCP connection); other subagents return edit requests; proposals are connection-local, at most 16 (`cratis-screenplay-model-authoring`).
34
- 26. Operations/systems and `numbers exact` source mode remain unadmitted. Qualifying retained non-route Double literals instead select published v11 at 4.135.0. Sources/streams/routes bind as v8, public/direction forms v9, identity/overrides/filters v10. CLI 3.50.0 reaches Stage construct checks through v10; v11 needs explicit consumer admission. See `versions.md`.
34
+ 26. Operations/systems and `numbers exact` source mode remain unadmitted. Qualifying retained non-route Double literals instead select published v11 at 4.135.0. Sources/streams/routes bind as v8, public/direction forms v9, identity/overrides/filters v10. The pinned CLI (`versions.md`) reaches Stage construct checks through v10; v11 needs explicit consumer admission. See `versions.md`.
35
35
  27. Translate crosses the public boundary: inbound foreign/data to private local facts; outbound private facts to one local public type. Public metadata needs explicit direction; a quoted origin is an unverified store name, not a path. Commands never publish public events. In-app private follow-up is Automation; see public-events-and-direction in the method skill.
36
36
  28. Personas drive the board: a persona must list every policy on the path, including module-level `IsAuthenticated`.
37
37
  29. A sample's source check is not execution. Run selected admitted specifications through `screenplay test`/MCP; given==when clock still fires no scheduled occurrence.
@@ -41,10 +41,10 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
41
41
  33. Which compiler matters: cratis before 3.28.2 bundle Screenplay 4.60.1, which rejects ESM v6 (Automation/Translate) and reports a false PLAY0285 on cascades; cratis 3.28.2 bundles 4.66.0 and behaves like the standalone tool. Check `cratis --version` and name the tool in every verdict. [probed on both tools]
42
42
 
43
43
  34. A `from <Event> key <property>` routes only if every such event carries that property: an event that frees or updates a row keyed by another stream's id must carry that id in its payload, or the row never changes. Whether the compiler reports a missing key property is unverified [to probe]; check by hand.
44
- 35. `description`/`documentation` are authoring metadata: board, MCP and Prologue show them; `cratis render` never does (Stage#178). A rule only in prose is unenforced in rendered code; make it a rule layer, a spec or a recorded target requirement.
44
+ 35. `description`/`documentation` are authoring metadata: board, MCP and Prologue show them; `cratis render` emits them only as XML doc comments (Stage#178 closed; invalid XML characters are CLI-RENDER-005), never as behavior. A rule only in prose is unenforced in rendered code; make it a rule layer, a spec or a recorded target requirement.
45
45
  36. One unadmitted construct (operations, `numbers exact`, composite view keys, refusal/redelivery) blocks whole-model binding. Routing is admitted v8, unlike composite view keys (#599); current CLI admits through v10 to construct checks. Overrides replace the whole route, filters never match unrouted facts. Do not remove routing or authorization to render a model.
46
46
  37. Personas remain outside ESM bytes, but 4.127.0 specifications accept `given caller as <Persona>`: one authenticated deterministic policy witness, not every matching caller. Inspect the chosen `or` branch; use explicit callers when synthesis is refused.
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; available to gap-fill on Stage 4.51.3's Arc 22.50.5/Chronicle 19.32.0, not emitted protection), 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.
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) and name the target: Arc `[ProtectedDecision]` + `DecisionRead<T>` (Arc v22.39.0 and later; available to gap-fill on Stage 4.51.3's Arc 22.50.5/Chronicle 19.32.0, not emitted protection), 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
49
  Identity/compliance traps checked at v4.127.0 (`identity.md`, `concepts.md`, `events.md`,
50
50
  `purposes.md`, `diagnostics.md`):
@@ -65,7 +65,7 @@ Identity/compliance traps checked at v4.127.0 (`identity.md`, `concepts.md`, `ev
65
65
 
66
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.
67
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]
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]
68
+ 40. `numbers exact` (the source mode) parses but never binds at any release through 4.139.0 (exact lowering of qualifying Double-mode literals is separate: v11) (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]
69
69
  41. MCP roots bug (4.63.1 and earlier, including the 4.60.1 bundled by cratis before 3.28.2; not present in 4.66.0 or cratis 3.28.2, probed): a dynamic-root server answers the roots request with an `id: null` error right after `notifications/initialized`; hosts treat it as fatal. `open-workspace.path` does not help. Start with a fixed root (`screenplay mcp <folder>`, `cratis screenplay mcp` in a project with `.cratis/ai.json`) or use 4.63.2 or later (cratis 3.28.2 or later). [source, probed]
70
70
  42. A symlinked model path is refused by the MCP server (macOS `/tmp` is a symlink); pass the physical path. Proposals are connection-local (at most 16); `apply` persists identities to `.screenplay/identities.json` and is not crash-atomic across files; never retry `apply` after `ApplyOutcomeUnknown`. [source]
71
71
  43. `modelRevision` is canonical semantic (line positions and descriptions do not change it; a file move only if it changes logical placement or application identity) and, without `identities.json`, changes with the root folder name; it is not comparable with a render's `semanticRevision`. Source identity for verdicts is the commit plus the digest from the source-identity helper (`cratis-screenplay-modeling-lifecycle` `references/verdicts-and-modes.md` "Source identity"). [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.135.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 (preferred; pin: `versions.md`) | `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.
@@ -46,12 +46,17 @@ V3 are read from the MCP server or from a render, V1 and V5 from the CLIs.
46
46
  - Warnings are failures here. PLAY0029 (a construct dropped silently) and the unresolved-name
47
47
  warnings are the defects this verdict exists to catch.
48
48
  - Syntax and consistency checks (PLAY0282 to PLAY0294) run; binding does not.
49
- - Report: `V1 pass (screenplay 4.66.0, 3 files)`, `V1 fail: PLAY0029 a.play:12 ...`.
49
+ - Report: `V1 pass (screenplay 4.139.0, 3 files)`, `V1 fail: PLAY0029 a.play:12 ...`.
50
50
 
51
51
  ## V2: executable diagnostics
52
52
 
53
53
  Needs an MCP connection (V2 and V3 belong to the session that owns MCP; a subagent without
54
- MCP reports `V2 not run: no MCP in this agent` unless the brief supplies fresh output).
54
+ MCP reports `V2 not run: no MCP in this agent` unless the brief supplies fresh output). Without
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.139.0), never
57
+ renders or writes files, and exits 5 with "The model does not bind into an executable semantic
58
+ model" when it does not. Report it as `V3 (bundled 4.137.0 via cratis validate --executable)`; it
59
+ gives binding errors, not the V2 `executable-diagnostics` view, so V2 stays MCP-only.
55
60
 
56
61
  1. Start the server with a fixed root: `screenplay mcp <model-folder>` or `cratis screenplay
57
62
  mcp` in a project with `.cratis/ai.json` (see `versions.md`, roots bug). Send
@@ -62,7 +67,7 @@ MCP reports `V2 not run: no MCP in this agent` unless the brief supplies fresh o
62
67
  current `expectedRevision` (page with `offset`; paging beyond the first page needs the
63
68
  source revision).
64
69
  4. Report the codes with counts, blocking (error severity) apart from informational. A list
65
- with blocking entries is a valid V2 result (`V2 read: 6 blocking, PLAY0268 x3 list query,
70
+ with blocking entries is a valid V2 result (`V2 read: 6 blocking, PLAY0268 x3 filter query,
66
71
  pii ...`); it is the evidence for a "V3 blocked" report. The view also lists
67
72
  information-severity diagnostics (PLAY0269 deferred UI, PLAY0270 authoring metadata such as
68
73
  descriptions, personas and screens) on models that bind; they do not block.
@@ -79,13 +84,13 @@ do not block. The ESM then binds (and `read-workspace view=executable-model` rep
79
84
  comparison needs it). Binding is what makes a model renderable at all. V3 means "binds",
80
85
  never "specifications pass".
81
86
 
82
- - Report the ESM version the model needs: `V3 ready (screenplay 4.68.0, ESM v6)`,
83
- `V3 blocked: PLAY0268 x3 (list query, pii) - design scope kept`.
87
+ - Report the ESM version the model needs: `V3 ready (screenplay 4.139.0, ESM v6)`,
88
+ `V3 blocked: PLAY0268 x3 (filter query, pii) - design scope kept`.
84
89
  - A blocked V3 is not repaired by deleting protection or domain rules. Never remove `pii`,
85
90
  `secret`, authorization, list queries, automations or rules to reach V3; record the
86
91
  slice and the code in the gap list.
87
92
  - A model is executable only on the compiler that bound it. V3 does not carry
88
- to render admission: CLI 3.50.0 passes through ESM v10 to Stage construct
93
+ to render admission: the pinned CLI (`versions.md`) passes through ESM v10 to Stage construct
89
94
  checks; newer models receive CLI-RENDER-004. Public publication and reaction
90
95
  identity/filters/production overrides still receive typed Stage refusals.
91
96
  The old 3.28.x/Stage 4.24.x probes remain historical in the subset references.
@@ -137,11 +142,11 @@ What Stage admits: `renderable-subset.md`.
137
142
  One line per verdict, tool and version first, evidence second:
138
143
 
139
144
  ```text
140
- V1 pass (screenplay 4.66.0, 3 files)
141
- V2 read (screenplay 4.66.0 via MCP): 0 blocking, 3 informational (PLAY0270)
142
- V3 ready (screenplay 4.66.0, ESM v3)
145
+ V1 pass (screenplay 4.139.0, 3 files)
146
+ V2 read (screenplay 4.139.0 via MCP): 0 blocking, 3 informational (PLAY0270)
147
+ V3 ready (screenplay 4.139.0, ESM v3)
143
148
  V4 not run: no route
144
- V5 admission pass (cratis 3.28.3, Stage 4.24.2); publication written 14 files; build not run; tests not run
149
+ V5 admission pass (cratis 3.53.1, Stage 4.73.1); publication written 14 files; build not run; tests not run (a sample line, not a result)
145
150
  ```
146
151
 
147
152
  Rules: a clean verdict never implies a later one; a verdict names the **source identity** it
@@ -152,9 +157,9 @@ source change makes earlier verdicts stale.
152
157
 
153
158
  Historical corpus fences were checked with standalone 4.68.0 and CLI 3.28.2.
154
159
  Do not promote those results to current pins without rerunning. Check each changed
155
- complete fence with standalone 4.135.0 `--warnaserror`; run `screenplay test` for
160
+ complete fence with the pinned standalone tool (`versions.md`) `--warnaserror`; run `screenplay test` for
156
161
  specification examples, and verify expected-diagnostic examples against their
157
- claimed codes. Where bundle compatibility matters, also check CLI 3.50.0.
162
+ claimed codes. Where bundle compatibility matters, also check the pinned CLI (`versions.md`).
158
163
  The `// Needs the standalone screenplay compiler (ESM v6)` first-line marker belonged to cratis
159
164
  before 3.28.2, which could not validate those fences; no fence carries it now, and a
160
165
  checker that still skips marked fences under `cratis` skips nothing. Examples meant to execute are also opened through MCP and
@@ -17,12 +17,14 @@ 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.135.0** (`b4e46130`) | Released tag `v4.135.0` and its unchanged published contract |
21
- | cratis CLI | **3.50.0** (`546dea12`) | Released tag `v3.50.0`; source-checked, not a new render/browser probe |
22
- | Screenplay bundled by CLI | **4.131.0** | CLI `v3.50.0:Directory.Packages.props`; includes `semantic-diff` source objects, not v11 literal lowering |
23
- | Stage bundled by CLI | **4.67.0** | Same file; renderer and default sandbox image use the same Stage release |
20
+ | Screenplay language, standalone tool and MCP | **4.139.0** (`dcd84574`) | Released tag `v4.139.0` and its unchanged published contract; enum numbers/ESM v12 and property references |
21
+ | cratis CLI | **3.53.1** | Released tag `v3.53.1`; source-checked, not a new render/browser probe |
22
+ | Screenplay bundled by CLI | **4.137.0** | CLI `v3.53.1:Directory.Packages.props`; enum-number authoring, not v12 binding |
23
+ | Stage bundled by CLI | **4.73.1** | Same file; Stage's own `Directory.Packages.props` also pins Screenplay 4.137.0 |
24
24
  | Cratis.Arc.Screenplay bundled by CLI | **22.54.0** | Same file; this is the generator package, not a blanket rendered-app dependency pin |
25
25
  | Chronicle / Fundamentals bundled by CLI | **19.32.0 / 7.22.8** | Same file |
26
+ | Latest Arc / Chronicle / Fundamentals released when this was checked | **22.72.0 / 19.50.0 / 7.23.0** | Released tags; newer than the CLI bundle and than Stage's scaffold. Arc 22.72.0 and later run a reactor returning events and commands (absent through 22.71.0); the Stage 4.73.1 scaffold pins Arc 22.68.0, whose command handler accepts a collection only when every element is a command, so a rendered app needs a proven dependency override to 22.72.0 or later |
27
+ | Stage 4.73.1 rendered backend and frontend | **Arc 22.68.0 / Chronicle 19.45.0**; Components 4.26.2, Scene 4.21.0, `@cratis/arc` 22.58.2, Fundamentals 7.22.8 | Stage `v4.73.1:Source/Rendering.Cratis/Scaffolding/CratisBackendApplicationScaffoldProfile.cs` and `CratisFrontendPackageSet.cs` (`Current`); not the latest releases and not bumped by hand |
26
28
  | Historical Stage 4.51.3 rendered backend | **Arc 22.50.5 / Chronicle 19.32.0** | Stage `v4.51.3:Source/Rendering.Cratis/Scaffolding/CratisBackendApplicationScaffoldProfile.cs`; client/testing/image match; scaffold disables embedded reverse extraction |
27
29
 
28
30
  The published `screenplay-contract.json` beside this reference is the machine-readable authority for PLAY codes, MCP tools and parameters, and standalone CLI commands/options. Its unchanged release bytes are pinned by `screenplay-contract.version` to the standalone version above. Before adding a claim, search this large JSON file by exact `code` in `diagnostics`, or by exact `name` in `mcpTools`/`cliCommands`, and inspect that object's retirement flag, parameters or options; do not load the full file into context. For example, search for `"code": "PLAY0029"` or `"name": "read-workspace"`; `screenplay-contract-exceptions.json` preserves explicitly reasoned historical statements, not current-release exceptions. Coverage gaps are mention inventories, not proof that a skill teaches a feature.
@@ -44,7 +46,7 @@ or renderer probes below as results from the newer bundle.
44
46
 
45
47
  ## Two compilers, one rule
46
48
 
47
- Standalone Screenplay 4.135.0 and CLI 3.50.0's 4.131.0 bundle are different releases.
49
+ Standalone Screenplay 4.139.0 and CLI 3.53.1's 4.137.0 bundle are different releases.
48
50
  Prefer standalone for the current language checks; CLI owns generation, Prologue
49
51
  and rendering. Name the tool/version with every verdict. No verdict transfers
50
52
  between differing compilers without checking the same inputs there.
@@ -76,8 +78,8 @@ for identity-stable selection.
76
78
 
77
79
  ## Admission boundaries
78
80
 
79
- Screenplay `v4.135.0:Source/DotNET/Screenplay/Semantics/Versions.cs` supports
80
- schema pairs through v11. Admission selects by use:
81
+ Screenplay `v4.139.0:Source/DotNET/Screenplay/Semantics/Versions.cs` supports
82
+ schema pairs through v12. Admission selects by use:
81
83
 
82
84
  - v7: generated values/responses and policy negation.
83
85
  - v8: sources/streams and command/specification routes.
@@ -100,23 +102,38 @@ schema pairs through v11. Admission selects by use:
100
102
  admit `numbers exact` source mode or arbitrary precision. At this tag,
101
103
  interoperability documentation still says "claimed, unreleased"; this corpus
102
104
  follows Versions.cs and decision 0066's publication boundary.
105
+ - **Published, frozen v12 in 4.139.0:** non-positional explicit enum numbers
106
+ select v12, carrying optional canonical last `numbers` parallel to `values`.
107
+ Positional pins retain earlier executable bytes/version/revision; unnumbered
108
+ enums retain positional meaning. Names remain fixture/condition/specification
109
+ values. Strict reading rejects arrays in older versions, without enum values,
110
+ with mismatched length, duplicates, non-int32 entries or positional numbers
111
+ (non-canonical). Consumers must admit v12 explicitly. Authoring shipped in
112
+ 4.137.0 (decision 0065); syntax/example: command-surface `references/enum-numbers.md`.
103
113
 
104
114
  Decision 0066 freezes a version when any exposing NuGet/npm package is published,
105
115
  including prereleases. Later byte-changing features take the next version at
106
116
  admission; a byte-preserving extension under 0004 is the exception. Published
107
- numbers never change or get reused. Enum member numbers (decision 0065) remain
108
- unimplemented/unadmitted and have no numbered claim. Concept generation strategies
109
- and freshness (decision 0054, #616) are accepted but not implemented. Operations,
117
+ numbers never change or get reused. Enum member numbers are admitted as v12;
118
+ this does not admit flags or numeric values in name-based specifications.
119
+ Concept generation strategies and freshness (decision 0054, #616) are accepted but not implemented. Operations,
110
120
  exact source numeric mode and reaction refusals/redelivery remain PLAY0268.
111
121
  Composite read-model keys/query blocks are also still PLAY0268 (#599), not
112
122
  admitted by the 4.129.0 authoring delivery; a single explicit key preserves bytes.
113
123
  Never delete these contracts to obtain a green bind.
114
124
 
115
- CLI 3.50.0 `RenderedSemanticVersions.Newest` is **v10**:
116
- `Source/Cli/Commands/Render/RenderedSemanticVersions.cs`. Stage 4.67.0 uses
117
- EsmSchemaV10Support in `SemanticVersionFeatures.cs` and construct checks in
118
- `SemanticVersionFeatureAdmission.cs`. v11 gets CLI-RENDER-004 before planning
119
- (and STAGE-ESM-016 at the direct Stage version gate). Through v10 is not blanket
125
+ CLI 3.53.1 `RenderedSemanticVersions.Newest` is **v10**:
126
+ `Source/Cli/Commands/Render/RenderedSemanticVersions.cs`. Stage 4.73.1 uses
127
+ EsmSchemaV10Support in `Source/Rendering.Cratis/Semantics/SemanticVersionFeatures.cs`
128
+ and construct checks in `SemanticVersionFeatureAdmission.cs`. Both bundle
129
+ Screenplay 4.137.0: non-positional enum numbers pass source validation but
130
+ fail executable binding with PLAY0268, before renderer version admission.
131
+ Standalone >= 4.139.0 binds them as v12; that verdict does not transfer to
132
+ `cratis render`. The bundled compiler and Stage do not support reading v12 ESM.
133
+ A compiler upgrade alone would not lift the CLI/Stage v10 admission ceiling.
134
+ Bound v11 models get CLI-RENDER-004 before planning (STAGE-ESM-016 at the
135
+ Stage version gate); this is not the diagnostic path for v12 source on these pins.
136
+ Through v10 is not blanket
120
137
  render support: public publication STAGE-ESM-032, foreign events/event captures
121
138
  033, reaction identity 034, reaction filters 035 and production overrides 036
122
139
  remain refused; reducer filters render. ESM v8 routes reach their own checks.
@@ -130,8 +147,8 @@ read them as tested snapshots, not as a claim that Stage 4.52.0 shares every
130
147
  4.24.2 limitation. Query the actual bundled renderer before a V5 claim.
131
148
 
132
149
  Stage case tables require 4.59.0; ESM v8 whole numbers as `long` and the
133
- pre-v8 out-of-`int` refusal STAGE-ESM-031 require 4.61.0. CLI 3.50.0 defaults
134
- to Stage 4.67.0, so both rules apply. Previous CLI 3.46.1 bundled Screenplay
150
+ pre-v8 out-of-`int` refusal STAGE-ESM-031 require 4.61.0. Historical CLI 3.50.0
151
+ defaulted to Stage 4.67.0; current CLI 3.53.1 defaults to 4.73.1, so both rules apply. Previous CLI 3.46.1 bundled Screenplay
135
152
  4.130.0 and Stage 4.52.0; neither rule applied there. `cratis run --tag 4.63.2`
136
153
  selects a newer sandbox image only (`RunSettings.cs`), not a renderer package.
137
154
  `cratis render` has a statically bundled target (`RenderSettings.cs`,
@@ -160,8 +177,9 @@ specifications, UI composition and `diagnostics.md`.
160
177
  Stage 4.24.1/4.24.2. Those old negative v7 probes do not describe CLI 3.41.0.
161
178
  - CLI before 3.28.2 bundled Screenplay 4.60.1: false cascade PLAY0285, v6 refusal
162
179
  and dynamic-root initialization bug. The roots bug was fixed in 4.63.2.
163
- - CLI 3.28.2 file validation ignored imports; this is an old probe, not a current
164
- reason to invent missing declarations. Validate the complete root.
180
+ - CLI 3.28.2 file validation ignored imports (cli#244, closed by PR #258): later CLI releases compile
181
+ the file as an application root together with its imports. Folder mode stays the recommended check;
182
+ validate the complete root.
165
183
  - Older standalone empty-folder probes exited 0. Current validation still needs
166
184
  a nonzero file count, and specification execution needs an expected selection.
167
185
 
@@ -174,7 +192,10 @@ preserve assigned identities; do not reconstruct them from names.
174
192
 
175
193
  A render manifest's `semanticRevision` is a different provenance value, made
176
194
  with the render name and bundled compiler. Do not compare it directly to MCP
177
- `modelRevision`. Compare successive renders with the same identity and inputs.
195
+ `modelRevision`. Compare successive renders with the same identity and inputs, or use
196
+ `cratis render ... --check` (CLI 3.44.0 or later). Descriptions and event documentation render as XML
197
+ doc comments, so editing them changes managed-file hashes (a `--check` exit 6) but not the executable
198
+ model revision.
178
199
 
179
200
  ## Upgrade checklist
180
201
 
@@ -10,7 +10,9 @@
10
10
  { "kind": "skill-contains", "value": "Composite read-model keys/query blocks are also still PLAY0268", "file": "references/versions.md" },
11
11
  { "kind": "skill-contains", "value": "the **whole source, stream and stream id**", "file": "references/production-routes-and-filters.md" },
12
12
  { "kind": "play-compiles" },
13
- { "kind": "skill-contains", "value": "4.135.0" },
13
+ { "kind": "skill-contains", "value": "4.139.0" },
14
+ { "kind": "skill-contains", "value": "Published v12" },
15
+ { "kind": "skill-contains", "value": "PLAY0671", "file": "references/diagnostics.md" },
14
16
  { "kind": "skill-contains", "value": "PLAY0653", "file": "references/diagnostics.md" },
15
17
  { "kind": "skill-contains", "value": "PLAY0646", "file": "references/diagnostics.md" },
16
18
  { "kind": "skill-contains", "value": "PLAY0595", "file": "references/diagnostics.md" },
@@ -23,7 +25,10 @@
23
25
  { "kind": "skill-contains", "value": "4.66.0" },
24
26
  { "kind": "skill-contains", "value": "references/generated-responses-example.md" },
25
27
  { "kind": "skill-contains", "value": "Operations and exact numeric" },
26
- { "kind": "skill-contains", "value": "Stage generated-value/response refusals `STAGE-ESM-028`/`029`" },
28
+ { "kind": "skill-contains", "value": "`STAGE-ESM-028`/`029`, not a blanket compiler refusal" },
29
+ { "kind": "skill-contains", "value": "cratis screenplay validate --executable" },
30
+ { "kind": "skill-contains", "value": "XML doc comments" },
31
+ { "kind": "skill-contains", "value": "Stage 4.73.1 rendered backend", "file": "references/versions.md" },
27
32
  { "kind": "skill-contains", "value": "cratis screenplay validate" },
28
33
  { "kind": "skill-contains", "value": "cli#244" },
29
34
  { "kind": "skill-contains", "value": "`notifications/initialized`" },
@@ -5,5 +5,5 @@ Third-party notices
5
5
 
6
6
  This skill adapts material from agentic-engineer by Martin Dilger and Nebulit GmbH
7
7
  (https://github.com/Nebulit-GmbH/agentic-engineer, commit 07b0f30648d663cb588d7e2c7aa031af9dfc21f2;
8
- https://nebulit.de), used with the agreement of Martin Dilger and Nebulit GmbH. That repository
9
- carries no licence file; the adapted material remains credited to Martin Dilger and Nebulit GmbH.
8
+ https://nebulit.de), used with the explicit consent of Martin Dilger and Nebulit GmbH. The adapted
9
+ material remains credited to Martin Dilger and Nebulit GmbH.
@@ -31,11 +31,9 @@ source is the single flow model.
31
31
 
32
32
  ## Verified product sources
33
33
 
34
- | Package | Version | Purpose |
35
- | --- | --- | --- |
36
- | `Cratis.Screenplay` | `4.31.0` | Original UI composition parser evidence |
37
- | `Cratis.Screenplay` | main `fd18129` | Cancellation routing and `optional`; changed example compiled |
38
- | `Cratis.Screenplay` | `4.66.0` (`c89198b`) | Statements in this skill re-verified: the nine `Documentation/screenplay/` pages above are unchanged since `v4.31.0` except `file-references.md` (typed-context and `implementation` paragraphs); `PLAY0269` in `Diagnostics/DiagnosticCodes.cs`; the new section compiled with `screenplay` 4.66.0 and `cratis screenplay validate` 3.28.2 |
34
+ Current pins: toolchain `references/versions.md`; UI statements were re-read at Screenplay v4.139.0
35
+ (`screens.md`, `contributions.md`, `forms.md`, `templates.md`, `ui-profile.md`, `fixtures/screen-release-ui.play`). Older provenance:
36
+ `4.31.0` (original parser evidence), main `fd18129` (cancellation routing, `optional`), `4.66.0` (`c89198b`: `PLAY0269`).
39
37
 
40
38
  The update follows `commands.md`, `events.md`, `queries.md` and decision 0023
41
39
  at that main commit (after v4.52.0). It does not verify UI rendering.
@@ -222,9 +220,11 @@ module-level.
222
220
  `navigate to <Screen> by <param>` is **not** string interpolation; it reuses the
223
221
  same typed navigate binding a screen action uses.
224
222
 
225
- ⚠️ The v4.31.0 baseline, re-verified at v4.66.0, ships `navigate`, `label` and `order` only. Grouping beyond a
226
- flat ordered list, and an explicit override for when nearest-enclosing is not the
227
- point you mean, are deliberately left for later. The screens-release vector
223
+ ⚠️ At v4.139.0 a navigation contribution also carries `id`, `icon`, `presentation`, `group` and
224
+ `destination outlet <name> | dialog <DialogTemplate> | external "<route>"`; its `navigate to` takes
225
+ `route`, `outlet` and `parameter` lines, and an undeclared outlet or dialog target is `PLAY0654`
226
+ (`contributions.md`). An explicit override for when nearest-enclosing is not the point you mean is
227
+ not in the language. The screens-release vector
228
228
  (canonical `ScreenComposition` corpus v1) adds typed screen composition; public
229
229
  CLI 3.43.0 renders it and passes the browser run. Report a refused form as a
230
230
  capability gap, never a flat-list fallback; Studio production proof is separate.
@@ -286,8 +286,8 @@ module Invoicing
286
286
  The inline event targets `invoiceId` without copying it into payload; the
287
287
  projection obtains it from event context. A command `returns` clause (scalar or
288
288
  record) binds and executes from standalone Screenplay 4.68.0 (ESM v7, `commands.md`,
289
- "Generated values and responses"); the 4.66.0 bundled in `cratis` 3.28.x reports `PLAY0268`, and
290
- Stage 4.24.2 does not render ESM v7 (`STAGE-ESM-016`, tracked in Stage#201). Form `on submit` and
289
+ "Generated values and responses") and in the current cratis bundle (the 4.66.0 in 3.28.x reported `PLAY0268`);
290
+ Stage 4.73.1 refuses it (`STAGE-ESM-029`; generated properties `-028`). Form `on submit` and
291
291
  interaction `on success` response-name scopes, failure clearing and response
292
292
  execution remain unavailable.
293
293
  An existing success continuation does not imply a response contract.
@@ -36,7 +36,7 @@ the build.
36
36
  BerthListScreen
37
37
  Shows: the berths booked so far (berth, boat name).
38
38
  Arrived by: the entry point, and after a booking is submitted.
39
- Can do: book a berth (BookBerth, opens BookBerthScreen).
39
+ Can do: open the booking screen (a click on the booking section opens BookBerthScreen).
40
40
  Gaps: none. Empty list: nothing booked yet.
41
41
 
42
42
  BookBerthScreen
@@ -6,11 +6,10 @@ No TrogonStack text is adapted in this skill. Nebulit material is credited in th
6
6
  |---|---|---|---|---|
7
7
  | Language constructs, rules and Verify list | Cratis/Screenplay v4.31.0 documentation, re-verified at v4.66.0 | MIT | original | SKILL.md |
8
8
 
9
- ## Adapted closely (Martin Dilger and Nebulit GmbH, with agreement)
9
+ ## Adapted closely (Martin Dilger and Nebulit GmbH)
10
10
 
11
11
  Source: https://github.com/Nebulit-GmbH/agentic-engineer at commit `07b0f30648d663cb588d7e2c7aa031af9dfc21f2`,
12
- by Martin Dilger and Nebulit GmbH (https://nebulit.de). The repository carries no licence file; this material
13
- is adapted with the agreement of Martin Dilger and Nebulit GmbH.
12
+ by Martin Dilger and Nebulit GmbH (https://nebulit.de), used with the explicit consent of Martin Dilger and Nebulit GmbH.
14
13
 
15
14
  | Source file | Used in | How |
16
15
  |---|---|---|
@@ -17,7 +17,9 @@
17
17
 
18
18
  This reference is the authoring checklist for the screens-release UI surface. It
19
19
  records the contract an agent must look for in the installed Screenplay tool and
20
- in peer runtime/render contracts; it is not a second language definition. When a
20
+ in peer runtime/render contracts; it is not a second language definition. The syntax
21
+ below was re-read at Screenplay v4.139.0 (`screens.md`, `forms.md`, `templates.md`,
22
+ `contributions.md`, `ui-profile.md` and `fixtures/screen-release-ui.play`); the shapes are released, not proposed. When a
21
23
  syntax form below is not present in `syntax-schema` or does not compile with the
22
24
  project's selected Screenplay version, report the support level instead of
23
25
  hand-writing an alternate shape.
@@ -37,8 +39,8 @@ CLI 3.43.0 with its default `cratis/stage:4.52.0` and bundled Screenplay 4.127.0
37
39
  the executed vector renders on Scene 4.15.0. Packages published since are newer than
38
40
  that vector and are not claimed verified: Scene 4.17.0, Screenplay 4.133.1, Stage
39
41
  4.64.0, previous CLI 3.46.1 (bundled Screenplay 4.130.0; its then-default Stage was
40
- 4.52.0) and Studio 0.152.2. Current pins are CLI 3.50.0 (Screenplay 4.131.0 / Stage
41
- 4.67.0) and standalone Screenplay 4.135.0; see toolchain `references/versions.md`.
42
+ 4.52.0) and Studio 0.152.2. Current pins:
43
+ `cratis-screenplay-toolchain/references/versions.md`.
42
44
  All three levels hold for the canonical `ScreenComposition` corpus on the historical vector:
43
45
 
44
46
  - authoring and executable admission: MCP opens it with `sourceSuccess true`,
@@ -55,22 +57,25 @@ Still true: a guarded Close action and a double-click interaction are refused
55
57
  (`STAGE-SCENE-ACTION-001`, `STAGE-SCENE-INTERACTION-001`, defined from Stage
56
58
  4.51 through 4.57) and recorded as unsupported, never emulated; Studio production
57
59
  Play proof is pending a test-account decision. Refusing an unresolvable UI
58
- profile and recovering a rendered application shipped in Cratis/cli#301. On Stage 4.24.2 or cratis 3.28.x
59
- renderers, authored screens are still reported as omitted/default composition.
60
+ profile and recovering a rendered application shipped in Cratis/cli#301. (History: on Stage 4.24.2 or
61
+ cratis 3.28.x renderers authored screens were reported as omitted/default composition; Stage 4.73.1
62
+ (CLI 3.53.1) renders navigation contributions and toolbars, and `CLI-RENDER-015`, which refused them, is retired.)
60
63
 
61
64
  ## Data context and component bindings
62
65
 
63
66
  A component instance is a presentation of a typed Screenplay data context. The
64
- proposed syntax is:
67
+ released syntax (canonical fixture `fixtures/screen-release-ui.play`) is:
65
68
 
66
69
  ```screenplay excerpt
67
70
  component <Package.Component> <instanceName>
68
- context <binding>
69
- property <property.path> from <binding>
71
+ id "<stable-id>"
72
+ context from query <Query>
73
+ property <property.path> from component <stable-id>.<outputPath> null preserve
74
+ property <property.path> from literal <value>
70
75
  property <property.path> = "literal"
71
76
  icon <IconName>
72
77
  presentation <key> "value"
73
- exposes <name> from <binding>
78
+ exposes <name> from component <stable-id>.<outputPath>
74
79
  outlet <name>
75
80
  ...nested screen directives...
76
81
  on click
@@ -78,6 +83,11 @@ component <Package.Component> <instanceName>
78
83
  with <name> from <binding>
79
84
  ```
80
85
 
86
+ A binding is `from query <Query>`, `from component <stableId>.<outputPath>` (quote the id when it has
87
+ punctuation) or `from literal <value>`, and may carry `mode oneWay|twoWay`, `null propagate|clear|preserve`
88
+ and `expected <Type>`. A component's `id` pins the stable instance id Studio and Stage use; without it the
89
+ authored name is the id. Malformed bindings are diagnostics, and the raw text is kept.
90
+
81
91
  Rules for agents:
82
92
 
83
93
  - Discover the exact node shape through `syntax-schema` before proposing it; do
@@ -137,6 +147,15 @@ screen template MasterDetail
137
147
  - `outlet` declares an addressable child surface. It is different from a static
138
148
  slot such as `sidebar` or `main`.
139
149
 
150
+ A template may also declare `content <slot>` (screen directives the template renders in that slot itself;
151
+ the slot must be declared, `PLAY0629`; templates may not nest in a cycle, `PLAY0656`), `display` and
152
+ `description` (what a picker shows), and `scopes application|module|feature|subfeature|slice|none`
153
+ (use outside its scopes is `PLAY0631`). Which of a template's components a screen may configure is a
154
+ top-level **exposure** (`exposure for <Owner>`, owner a layout or template, `PLAY0622`; `reexposes <Owner>`,
155
+ `PLAY0623`/`PLAY0624`), and a screen or template configures it with a top-level `instance <Screen>`
156
+ (`set <component>.<path> = <value>`, `items <component>.<path>` with `item <id>` lines; `PLAY0626` to
157
+ `PLAY0628`). Layouts take `category`, `type`, `exposes` and `outlet` too.
158
+
140
159
  A module, feature or slice may select a default template for contained screens:
141
160
 
142
161
  ```screenplay
@@ -149,7 +168,10 @@ installed parser/printer supports the scoped `template` directive before using i
149
168
 
150
169
  ## Forms and columns
151
170
 
152
- A form remains bound to exactly one command. The screens-release additions make
171
+ A form remains bound to exactly one command. It may carry one `description` line (report-only),
172
+ `generation auto|manual` (Scene's form generation mode: generate fields from command metadata, or the
173
+ authored fields are the contract), a `layout` block (column, gap and placement geometry, independent of
174
+ `generation`) and the `columns` display-order hint. The screens-release additions make
153
175
  its generated fields explicit when the automatic shape is not enough:
154
176
 
155
177
  ```screenplay excerpt
@@ -182,7 +204,8 @@ ui profile Desktop
182
204
  packages
183
205
  Product.DesignSystem
184
206
  Cratis.Components
185
- icons Product.Icons
207
+ icons
208
+ Product.Icons
186
209
  ```
187
210
 
188
211
  - Package order is still override-priority order. Later packages shadow earlier
@@ -204,13 +227,15 @@ toolbar InvoiceToolbar
204
227
  label "Register"
205
228
  icon Add
206
229
  item details navigate to InvoiceDetails
207
- parameter invoiceId from selected.invoiceId
230
+ parameter invoiceId from component invoices.selectedItem.id
231
+ item compose dialog InvoiceComposer
208
232
  ```
209
233
 
210
- Use a toolbar for reusable groups of actions; use inline `action` when a single
211
- screen owns the button. Dialog opening stays an interaction (`on click open dialog
212
- <DialogTemplate>`) unless the installed language exposes a dedicated toolbar-dialog
213
- node. A dialog destination must state every input with a typed `with`/`parameter`
234
+ A toolbar item is `item <name> action <Command>`, `item <name> navigate to <Screen>` or
235
+ `item <name> dialog <DialogTemplate>`. Use a toolbar for reusable groups of actions; use inline `action`
236
+ when a single screen owns the button. A parameter that reads a selection is a typed
237
+ `from component <stableId>.<path>` binding (the bare `selected.invoiceId` form parses only as a legacy
238
+ data-context path). A dialog destination must state every input with a typed `with`/`parameter`
214
239
  binding; a runtime default is not an authored contract.
215
240
 
216
241
  What Scene 4.17 adds to the runtime side of this contract, so an agent knows what a
@@ -1,7 +1,10 @@
1
1
  # Worked flow: marina berth bookings
2
2
 
3
- Complete document, design-mode (the list query `ListBerths` keeps it out of the executable
4
- subset; see `cratis-screenplay-slice-design`). Used by `SKILL.md`, *Compose in this order*.
3
+ Complete document. It compiles and binds (screens, forms and descriptions are informational
4
+ PLAY0269/0270; the `ListBerths` list query binds since Screenplay 4.105.0, and Stage 4.73.1 would render only
5
+ an `observable` list). Used by `SKILL.md`, *Compose in this order*. Opening an input screen is a
6
+ click (`section ... on click navigate to`); the input screen's `action` carries the destination
7
+ **after success**.
5
8
 
6
9
  ```screenplay
7
10
  concept BerthId : Uuid
@@ -31,8 +34,10 @@ module Marina
31
34
  query ListBerths => BerthListView[]
32
35
  screen BerthListScreen
33
36
  data BerthListView[] via query ListBerths
34
- action BookBerth
35
- navigate to BookBerthScreen
37
+ section bookBerthInput
38
+ title "Book a berth"
39
+ on click
40
+ navigate to BookBerthScreen
36
41
 
37
42
  form BookBerthForm for BookBerth
38
43
  field berthId label "Berth"
@@ -58,8 +63,11 @@ payload field the event never declares, so the event payload line matters.
58
63
  - `identifier` marks which property names the event source. It neither generates the value nor
59
64
  fills it. Here the user supplies the berth. Other sources are a prefill (`populate via query`
60
65
  or `populate from item` when the user chose a berth on the previous screen) or a modeled
61
- selection. `generated identifier` is ESM v7: it binds on standalone Screenplay 4.68.0 and reports `PLAY0268`
62
- on the 4.66.0 bundled in `cratis` 3.28.x; Stage 4.24.2 does not render it.
63
- - The form is found through `action BookBerth`; neither screen names it.
64
- - Compiled with `screenplay` 4.68.0 `--warnaserror` and `cratis screenplay validate
65
- --warnings-as-errors` 3.28.2.
66
+ selection. `generated identifier` is ESM v7: it binds on standalone Screenplay 4.68.0 and later and on the current
67
+ cratis bundle (`PLAY0268` on the 4.66.0 bundled in `cratis` 3.28.x); Stage 4.73.1 refuses it
68
+ (`STAGE-ESM-028`).
69
+ - The form is found through the input screen's `action BookBerth`; neither screen names it. A click
70
+ opens `BookBerthScreen` before the command runs; the action's `navigate to` is where the user
71
+ lands after success, never a route to the command's own input screen (Screenplay `screens.md`).
72
+ - Compiled with `screenplay` 4.139.0 `--warnaserror`; `cratis screenplay validate --executable` 3.53.1
73
+ reports it valid (bundled 4.137.0).