@cratis/pi 7.33.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 (160) 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 +14 -9
  28. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +5 -5
  29. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/effects-and-idempotency.md +1 -1
  30. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +2 -3
  31. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/public-events-and-direction.md +1 -2
  32. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/realization-and-gap-fill.md +9 -5
  33. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/todo-list-example.md +6 -6
  34. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/translate-example.md +1 -1
  35. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +14 -13
  36. package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +12 -13
  37. package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +3 -1
  38. package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +2 -2
  39. package/package/corpus/skills/cratis-screenplay-command-surface/references/validate-rules.md +4 -2
  40. package/package/corpus/skills/cratis-screenplay-delivery-planning/LICENSE +9 -0
  41. package/package/corpus/skills/cratis-screenplay-delivery-planning/SKILL.md +118 -0
  42. package/package/corpus/skills/cratis-screenplay-delivery-planning/references/parallel-delivery.md +45 -0
  43. package/package/corpus/skills/cratis-screenplay-delivery-planning/references/provenance.md +29 -0
  44. package/package/corpus/skills/cratis-screenplay-delivery-planning/references/slice-counting.md +43 -0
  45. package/package/corpus/skills/cratis-screenplay-delivery-planning/references/velocity-and-capacity.md +48 -0
  46. package/package/corpus/skills/cratis-screenplay-delivery-planning/verification.json +16 -0
  47. package/package/corpus/skills/cratis-screenplay-discovery/LICENSE +2 -2
  48. package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +6 -5
  49. package/package/corpus/skills/cratis-screenplay-discovery/references/divergent-sweep.md +1 -0
  50. package/package/corpus/skills/cratis-screenplay-discovery/references/domain-analysis-template.md +92 -0
  51. package/package/corpus/skills/cratis-screenplay-discovery/references/personas-and-causes.md +2 -2
  52. package/package/corpus/skills/cratis-screenplay-discovery/references/provenance.md +4 -3
  53. package/package/corpus/skills/cratis-screenplay-discovery/verification.json +1 -1
  54. package/package/corpus/skills/cratis-screenplay-event-modeling/LICENSE +2 -2
  55. package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +28 -28
  56. package/package/corpus/skills/cratis-screenplay-event-modeling/references/nine-steps.md +7 -5
  57. package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +12 -9
  58. package/package/corpus/skills/cratis-screenplay-event-modeling/references/provenance.md +2 -3
  59. package/package/corpus/skills/cratis-screenplay-legacy-extraction/LICENSE +2 -2
  60. package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +26 -13
  61. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/candidate-inventory.md +6 -1
  62. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +7 -0
  63. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/prologue-safety.md +22 -17
  64. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/provenance.md +2 -3
  65. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/rule-modeling.md +2 -2
  66. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/side-car-migration.md +1 -0
  67. package/package/corpus/skills/cratis-screenplay-legacy-extraction/verification.json +1 -1
  68. package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +2 -2
  69. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +3 -3
  70. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +3 -1
  71. package/package/corpus/skills/cratis-screenplay-model-review/LICENSE +2 -2
  72. package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +8 -8
  73. package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +2 -2
  74. package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +4 -4
  75. package/package/corpus/skills/cratis-screenplay-model-review/references/model-inventory-report.md +75 -0
  76. package/package/corpus/skills/cratis-screenplay-model-review/references/provenance.md +3 -4
  77. package/package/corpus/skills/cratis-screenplay-model-review/references/public-keys-and-routes.md +1 -1
  78. package/package/corpus/skills/cratis-screenplay-model-review/references/worked-example.md +4 -3
  79. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/LICENSE +2 -2
  80. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/SKILL.md +7 -5
  81. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/core-rules-digest.md +131 -0
  82. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/phases.md +1 -1
  83. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/provenance.md +25 -4
  84. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/reasoning-notes.md +2 -2
  85. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/verdicts-and-modes.md +1 -1
  86. package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/vocabulary-map.md +5 -4
  87. package/package/corpus/skills/cratis-screenplay-projections/SKILL.md +9 -5
  88. package/package/corpus/skills/cratis-screenplay-projections/references/pdl-grammar.md +4 -2
  89. package/package/corpus/skills/cratis-screenplay-read-surface/LICENSE +7 -0
  90. package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +16 -8
  91. package/package/corpus/skills/cratis-screenplay-read-surface/references/provenance.md +21 -0
  92. package/package/corpus/skills/cratis-screenplay-read-surface/references/screen-patterns.md +130 -0
  93. package/package/corpus/skills/cratis-screenplay-read-surface/verification.json +1 -1
  94. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/LICENSE +2 -2
  95. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +58 -46
  96. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/delivery-protocol.md +17 -2
  97. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/drift-and-ledger.md +19 -2
  98. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +22 -4
  99. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/provenance.md +2 -3
  100. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +21 -16
  101. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/worked-example.md +34 -29
  102. package/package/corpus/skills/cratis-screenplay-scenario-coverage/LICENSE +2 -2
  103. package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +5 -4
  104. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/berth-reservations.md +1 -1
  105. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-design.md +5 -4
  106. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-example.md +32 -3
  107. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/provenance.md +3 -4
  108. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-catalogue.md +7 -6
  109. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-examples.md +3 -3
  110. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-workshop.md +15 -7
  111. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +8 -7
  112. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/view-and-story-specs.md +6 -4
  113. package/package/corpus/skills/cratis-screenplay-slice-design/LICENSE +2 -2
  114. package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +4 -3
  115. package/package/corpus/skills/cratis-screenplay-slice-design/references/command-inventory.md +2 -2
  116. package/package/corpus/skills/cratis-screenplay-slice-design/references/derived-condition-events.md +68 -0
  117. package/package/corpus/skills/cratis-screenplay-slice-design/references/field-lineage.md +1 -1
  118. package/package/corpus/skills/cratis-screenplay-slice-design/references/provenance.md +5 -5
  119. package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md +17 -0
  120. package/package/corpus/skills/cratis-screenplay-slice-design/references/rule-layers.md +6 -6
  121. package/package/corpus/skills/cratis-screenplay-slice-design/references/worked-example.md +3 -3
  122. package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +6 -4
  123. package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +2 -1
  124. package/package/corpus/skills/cratis-screenplay-specifications/references/generated-fixtures.md +3 -2
  125. package/package/corpus/skills/cratis-screenplay-specifications/references/persona-callers-and-cases.md +3 -0
  126. package/package/corpus/skills/cratis-screenplay-specifications/references/reactions-and-cascades.md +3 -2
  127. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/LICENSE +2 -2
  128. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +9 -9
  129. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/boundaries.md +31 -3
  130. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/chronicle-boundaries.md +6 -6
  131. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/consistency-and-concurrency.md +12 -11
  132. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/evolution.md +1 -1
  133. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/provenance.md +4 -4
  134. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +1 -1
  135. package/package/corpus/skills/cratis-screenplay-toolchain/LICENSE +2 -2
  136. package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +14 -12
  137. package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +3 -3
  138. package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +1 -1
  139. package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +3 -1
  140. package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +24 -16
  141. package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +2 -3
  142. package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +41 -12
  143. package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +5 -5
  144. package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +14 -9
  145. package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +9 -3
  146. package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +4 -1
  147. package/package/corpus/skills/cratis-screenplay-ui-composition/LICENSE +2 -2
  148. package/package/corpus/skills/cratis-screenplay-ui-composition/SKILL.md +10 -10
  149. package/package/corpus/skills/cratis-screenplay-ui-composition/references/flow-review.md +1 -1
  150. package/package/corpus/skills/cratis-screenplay-ui-composition/references/provenance.md +2 -3
  151. package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +39 -14
  152. package/package/corpus/skills/cratis-screenplay-ui-composition/references/worked-flow.md +17 -9
  153. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +83 -74
  154. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +62 -12
  155. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/render-example.md +3 -1
  156. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/rendered-application.md +30 -15
  157. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/sandbox-and-specrunner.md +21 -1
  158. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +8 -3
  159. package/package/profile-catalog.json +1 -0
  160. package/package.json +1 -1
@@ -8,9 +8,9 @@
8
8
  - 4. Cleanup DDL to propose (run by the DBA after the Extractor is stopped)
9
9
  - 5. Capture verification before interpreting
10
10
 
11
- Sources: Prologue `ad4bbe7` (Extractor, Configuration, Interpretation) and cratis CLI
12
- `v3.28.2` (`Source/Cli/Commands/Prologue/*`, unchanged since `v3.27.1`; `LlmOptionsResolver.cs`,
13
- `Documentation/reference/prologue.md`). Tool versions: `cratis-screenplay-toolchain`
11
+ Sources: Prologue `v2.0.0` (the version CLI 3.53.1 bundles; Extractor, Configuration,
12
+ Interpretation) and cratis CLI `v3.53.1` (`Source/Cli/Commands/Prologue/*`,
13
+ `LlmOptionsResolver.cs`, `Documentation/reference/prologue.md`). Tool versions: `cratis-screenplay-toolchain`
14
14
  `references/versions.md`.
15
15
  Everything here that touches a target system is
16
16
  **proposed** by the screenplay-modeler (legacy extraction) and run only by the user or DBA (or the main session
@@ -54,21 +54,28 @@ Nothing in Prologue removes what the Extractor created. Cleanup is manual; Crati
54
54
 
55
55
  ## 3. LLM use in `interpret` (preflight by the main session; a subagent runs interpret only
56
56
  when its brief records this preflight and the user's approval, otherwise it proposes)
57
- Resolution in the current cratis CLI (`LlmOptionsResolver.Resolve`):
58
- 1. `cratis-prologue.json` with `llm.enabled: true` -> that provider;
59
- 2. otherwise the **global** CLI configuration written by `cratis llm use` (a hosted provider,
60
- or a local compatible endpoint) -> enabled, with the provider's public endpoint unless an
61
- endpoint is set;
57
+ `cratis prologue interpret --no-llm` forces heuristics-only interpretation: it never creates a
58
+ chat client and sends no capture evidence to a model, whatever the local or global configuration
59
+ says (CLI 3.37.1 or later; confirm with `cratis prologue interpret --help`). Cratis/cli#241 is
60
+ closed. Without `--no-llm` the effective provider resolves in this order
61
+ (`LlmOptionsResolver.ResolveWithSource`):
62
+ 1. an explicit local `llm.enabled` in `cratis-prologue.json`: `true` -> that provider, `false`
63
+ -> disabled, with no fallback to the global configuration;
64
+ 2. only when the local setting is absent, the **global** CLI configuration written by
65
+ `cratis llm use` (a hosted provider, or a local compatible endpoint);
62
66
  3. otherwise disabled.
63
- A local `llm.enabled: false` does **not** stop step 2. There is no `--no-llm` flag. This is
64
- an open defect: Cratis/cli#241 (`LlmOptionsResolver.Resolve` returns the Prologue `llm`
65
- section only when it is enabled, then falls back to the global CLI configuration).
67
+ The command prints the provider, model, endpoint host and where the setting came from (`local
68
+ file`, `global config`, `--no-llm`, `none`) to stderr before it sends any evidence, also in JSON
69
+ and unattended runs; the JSON result carries an `llm` object. That notice informs the user; it
70
+ does not replace the approval.
71
+
72
+ Unattended default: pass `--no-llm` unless the brief records the approved disclosure.
66
73
 
67
74
  Preflight (read-only):
68
75
  - `cratis llm show -o json` (the key is masked) and the `llm` section of the
69
76
  `cratis-prologue.json` that interpret will find (PATH, then the current directory).
70
77
  - Report the effective provider, model and endpoint. If it is hosted, the whole payload sent
71
- is (`RefinementPrompt.Evidence`, `EvidenceFormatter.cs` at `ad4bbe7`):
78
+ is (`RefinementPrompt.Evidence`, `EvidenceFormatter.cs` at `v2.0.0`):
72
79
  - the provisional model outline and the list of every provisional name in it, **uncapped**
73
80
  (inferred command, event and property names from all captures);
74
81
  - observed behaviour, each list capped at 50 distinct entries: `METHOD path` lines (concrete
@@ -78,11 +85,9 @@ Preflight (read-only):
78
85
  database (several observations can send more);
79
86
  - in an interactive run, the text of your answers to the model's questions.
80
87
  - Ask the user. The approval must cover that full payload; otherwise restrict or redact the capture
81
- input first, or do not run interpret. Options for the
82
- user: approve; switch to a local provider; remove the global setting themselves
83
- (`cratis llm clear` changes their configuration, so it is their call); or run the batch
84
- Interpreter container with a config whose `llm.enabled` is false and no CLI config mounted
85
- (it writes `extraction-result.json` as well; not verified locally).
88
+ input first, or run `interpret --no-llm`. Options for the
89
+ user: approve; switch to a local provider; set `llm.enabled: false` in the local Prologue file;
90
+ or use `--no-llm`. Changing the global configuration (`cratis llm clear`) is the user's call.
86
91
  - Batch mode asks no questions; LLM failures fall back silently to the heuristic model.
87
92
 
88
93
  ## 4. Cleanup DDL to propose (run by the DBA after the Extractor is stopped)
@@ -8,11 +8,10 @@
8
8
 
9
9
  Verified product facts are listed under *Verified product sources* in `SKILL.md`.
10
10
 
11
- ## Adapted closely (Martin Dilger and Nebulit GmbH, with agreement)
11
+ ## Adapted closely (Martin Dilger and Nebulit GmbH)
12
12
 
13
13
  Source: https://github.com/Nebulit-GmbH/agentic-engineer at commit `07b0f30648d663cb588d7e2c7aa031af9dfc21f2`,
14
- by Martin Dilger and Nebulit GmbH (https://nebulit.de). The repository carries no licence file; this material
15
- is adapted with the agreement of Martin Dilger and Nebulit GmbH.
14
+ by Martin Dilger and Nebulit GmbH (https://nebulit.de), used with the explicit consent of Martin Dilger and Nebulit GmbH.
16
15
 
17
16
  | Source file | Used in | How |
18
17
  |---|---|---|
@@ -14,12 +14,12 @@
14
14
  A rule that depends on stored state (current status, existing records, balances) is written
15
15
  as `reads <View>` + `require <expr> message "…"` and the slice description says it is **NOT
16
16
  enforced in the model today** (PLAY0268/0271 at binding are expected in design mode;
17
- Screenplay#129/#209). Name the invariant, the race it leaves open, and the target:
17
+ Screenplay#129). Name the invariant, the race it leaves open, and the target:
18
18
  `[ProtectedDecision]` + `DecisionRead<T>` (Arc 22.39.0 and later; available to gap-fill
19
19
  in Stage 4.51.3's Arc 22.50.5/Chronicle 19.32.0 package set, not automatically emitted), or a Chronicle
20
20
  `concurrency` scope on the event source or stream, or a constraint where one fits. Forbidden: caller-supplied copies of state
21
21
  in `require`, boolean inputs standing in for a rule (`confirmsX == true`), and rules hidden in
22
- `handler`/`implementation hint` prose. Descriptions are not rendered (Stage#178), so a rule
22
+ `handler`/`implementation hint` prose. Descriptions render only as XML doc comments (Stage#178), so a rule
23
23
  that exists only in prose is unenforced; list it in LOSS.md too.
24
24
 
25
25
  ## Unique indexes
@@ -131,6 +131,7 @@ verification come first).
131
131
  - [ ] Extraction strategy defined for all in-scope legacy data; every table mapped or listed as unmapped
132
132
  - [ ] Event capture or load pipeline designed and owned
133
133
  - [ ] New behaviour scoped as modeled slices with their own acceptance
134
+ - [ ] Accepted model and the new side-car code compared structurally with `cratis screenplay conform <model-root> --project <path>` (CLI 3.42.0 or later; exit 0 no blocking findings, 1 defects, 2 could not run or incomplete; same MSBuild trust caveat as `generate`, so use a trusted clone; structural address matching only, never a behavior or equivalence verdict)
134
135
  - [ ] Traffic routing designed; users can tell which system they are in
135
136
  - [ ] Parallel-operation test plan and reconciliation check
136
137
  - [ ] Deprecation timeline agreed
@@ -30,7 +30,7 @@
30
30
  },
31
31
  {
32
32
  "kind": "skill-contains",
33
- "value": "cli#241"
33
+ "value": "--no-llm"
34
34
  },
35
35
  {
36
36
  "kind": "skill-contains",
@@ -263,8 +263,8 @@ See read-surface `references/named-keys.md` for the collection-key exclusion alg
263
263
  | Reaction with trigger `reads` | Direct-producing (or code-bodied) reaction with `reads`: `PLAY0268` ("ESM v6 cannot protect that decision dependency", decision 0006), non-executable. Invokes-only reaction with `reads`: information only; the invoked command must declare and protect its own decision reads. Keep the `reads`; never remove them to obtain binding |
264
264
  | Binds as opaque code (v3); reference runner reports unsupported | Bodied reducers, bodied named rules, fenced `validate` blocks, code or file policies. A pure reducer body is the only attachment Stage 4.24.0 admits |
265
265
  | Information only, never blocks (probed) | `persona` (report-only: `PLAY0270`, the policies it lists must exist), `authentication`, `domain`, `seed`, descriptions and `file` provenance. A persona does not block binding and does not change behavior, so state persona scope in a description or a policy the model uses |
266
- | Binds as ESM v7 on standalone Screenplay 4.68.0 (source and release notes; `PLAY0268` on the 4.66.0 in Cratis CLI 3.28.x, probed) | `generated` properties and `returns` responses, generated fixtures and `then returns`: bound and executed by the reference runner; a policy, rule or requirement that references a generated value is `PLAY0273`, and a generated property on a concept with validation rules is `PLAY0268`. Stage 4.24.2 does not render them (`STAGE-ESM-016`, tracked in Stage#201): gap-fill |
267
- | Authorable, not executable (PLAY0268) | Systems/operations, exact numbers and refusal/redelivery remain unadmitted |
266
+ | Binds as ESM v7 on standalone Screenplay 4.68.0 (source and release notes; `PLAY0268` on the 4.66.0 in Cratis CLI 3.28.x, probed) | `generated` properties and `returns` responses, generated fixtures and `then returns`: bound and executed by the reference runner; a policy, rule or requirement that references a generated value is `PLAY0273`, and a generated property on a concept with validation rules is `PLAY0268`. Stage 4.73.1 refuses them (`STAGE-ESM-028`/`-029`, Stage#175): gap-fill |
267
+ | Authorable, not executable (PLAY0268) | Systems/operations, the `numbers exact` source mode (PLAY0268; exact lowering of qualifying Double literals is the admitted v11) and refusal/redelivery remain unadmitted |
268
268
  | Current routing and actor admission | Sources/streams and command/specification routes bind and reference-execute as v8; reaction `runs as system role` supplies the invocation actor as v10 on 4.125.0. Whole-workspace binding determines executable availability; CLI/Stage realization remains separate |
269
269
  | Blocks binding (`PLAY0268`) | `pii`/`secret` concepts (also legacy spellings; historical probe: "compliance attributes require portable data-subject semantics"), command `handler` (never binds; a command cannot declare both `produces` and `handler`, `PLAY0035`), bare `rule <Name>`, `require` or conditions over read-model paths, dates and `today` in comparisons, `$context.tenant`/claims/roles/causation in `produces`, `$env` conditions, `file` constraints, unquoted `import` of an external contract, a read model with neither explicit `key` nor unambiguous query-based identity as described above (composite keys remain unadmitted), queries with filters, scope, performer, context-derived `by` or composite `by` blocks (optional keyed and collection queries, including observable delivery, bind at 4.135.0), `$causedBy` and templates in projections |
270
270
  | Blocks binding (`PLAY0271`, legacy meaning) | Command `reads` and `concurrency` |
@@ -129,7 +129,7 @@ the server sends `roots/list` and serves `tools/list` after the reply).
129
129
  without writing. An
130
130
  unintended executable regression is discarded (`discard-proposal`) and
131
131
  re-proposed. Intent the user has accepted that does not run yet (operations,
132
- exact numbers or refusal/redelivery; PLAY0268 by design)
132
+ the `numbers exact` source mode or refusal/redelivery; PLAY0268 by design)
133
133
  may be applied from a reviewed `Authoring` proposal: disclose the new
134
134
  diagnostics, report V3 as not binding-ready, and never drop or stub the
135
135
  construct. The server's own guidance is to apply such a proposal only when
@@ -174,11 +174,11 @@ the server sends `roots/list` and serves `tools/list` after the reply).
174
174
  | Edit class | Examples | Route |
175
175
  | --- | --- | --- |
176
176
  | Address-preserving | descriptions; bodies of rules and expressions; mappings between members that already exist; any edit that adds, removes or renames no addressed element. Also every edit in a model with no `.screenplay/identities.json` except persisted names | bounded text edit of the `.play` file, then compile the folder; or `propose-ast` |
177
- | Catalog-changing (identity file present) | add, remove or rename a declaration (slice, command, event, read model, projection, ...), a property of a command, event, read model, composite type or trigger, a query, a query argument or a specification; create, delete, rename or move a mapped `.play` document (McpState refuses reopening with `IdentityMappingConflict`; use document operations in `propose-ast`); rename, remove or move an event, command, read model, constraint, module, feature or slice; move declarations between files; contract evolution of a persisted event (new generation, property added, removed or retyped) | `propose-rename` or a reviewed `propose-ast`; never a blind text rename. Renaming a constraint resets its uniqueness index: ask first unless the request names it, then report the reset. A persisted event rename needs `id "OldName"` (added by default) |
177
+ | Catalog-changing (identity file present) | add, remove or rename a declaration (slice, command, event, read model, projection, ...), a property of a command, event, read model, composite type or trigger, a query, a query argument or a specification; create, delete, rename or move a mapped `.play` document (McpState refuses reopening with `IdentityMappingConflict`; use document operations in `propose-ast`); rename, remove or move an event, command, read model, constraint, module, feature or slice; move declarations between files (slices and features across logical parents: `propose-move`); contract evolution of a persisted event (new generation, property added, removed or retyped) | `propose-rename` or a reviewed `propose-ast`; never a blind text rename. Renaming a constraint resets its uniqueness index: ask first unless the request names it, then report the reset. A persisted event rename needs `id "OldName"` (added by default) |
178
178
  | Repair | `PLAY0166`, `0478`, `0469`, `0471`, `0479`, `0516`, `0563`, `0564`, `0565`, `0614`, `0653` (and recipe-only `0397`) | `propose-repair` with `formatting`; PLAY0166/0478 may pin attachment evidence (`pinRepairEvidence` and `expectedRepairEvidenceRevision`), never fix-all PLAY0478 |
179
179
  | Inline event extraction | `produces event ...` to a declared event | `propose-extract-inline-event` |
180
180
  | Parser-invalid document | no editable handles | `propose-source` `replace-document` with corrected source, or typed `propose-ast` document replacement |
181
- | Unadmitted constructs | systems/operations, exact numbers, refusal/redelivery | reviewed Authoring `propose-source` (whole documents) or `propose-ast` (typed edits); preserve intent and report PLAY0268 |
181
+ | Unadmitted constructs | systems/operations, the `numbers exact` source mode, refusal/redelivery | reviewed Authoring `propose-source` (whole documents) or `propose-ast` (typed edits); preserve intent and report PLAY0268 |
182
182
  | Admitted source/stream routing | ESM v8 at 4.125.0 | typed `propose-ast`; `propose-rename` repairs proven route references; target admission separate |
183
183
 
184
184
  ## Self-describing identity migration refusals
@@ -51,10 +51,12 @@ the [MCP loop](mcp-loop.md).
51
51
  | Source and validation | `diagnostics`, `read-document`, `merged-document`, `syntax-schema` | Read exact source or typed structure and diagnose problems |
52
52
  | Workspace inspection | `open-workspace`, `read-workspace`, `read-ast`, `workspace-state`, `export-workspace`, `repair-capabilities` | Obtain current identities, handles, readiness, code attachment requirements, source-map locations, durable-state status and the repair catalog |
53
53
  | Visual (MCP-Apps hosts only) | `visualize-model` | Draw the board for the model or a `proposalId`; its `sketch` argument previews a what-if of whole documents. Reads only |
54
- | Planning | `propose-source`, `propose-ast`, `propose-rename`, `propose-repair`, `propose-number-enum-members`, `propose-extract-inline-event`, `propose`, `recommend-layout`, `expand-layout` | Produce validated, reviewable candidates without writing them |
54
+ | Planning | `propose-source`, `propose-ast`, `propose-rename`, `propose-move`, `propose-repair`, `propose-number-enum-members`, `propose-extract-inline-event`, `propose`, `recommend-layout`, `expand-layout` | Produce validated, reviewable candidates without writing them |
55
55
  | Review | `read-proposal`, `discard-proposal` | Inspect exact changes, dropped comments and proposed attachments, or abandon a connection-local proposal |
56
56
  | Effects | `apply`, `recover-workspace` | Apply an accepted plan or explicitly recover an interrupted write |
57
57
 
58
+ `propose-move` moves a slice to another feature, or a feature to another module or feature, keeping identities: copy the `target` and `newParent` `{kind, parts}` addresses from the identity inventory and pass `expectedRevision` and `expectedCatalogRevision`. It repairs qualified references and `depends on`, and refuses identity loss, capture, collisions, descendant destinations, inherited authorization or screen-interaction changes and glob imports; review `moveReport` (`identityMigrations`, `referenceRepairs`, `fragmentsMoved`). It does not rename events, change pins or move files, and declaration moves between slices are deferred. Use it for legacy re-slicing instead of retyping declarations.
59
+
58
60
  `propose` is the executable-only whole-document interface. Prefer `propose-source`
59
61
  for whole `.play` text, `propose-ast` for focused typed edits, and `propose-rename`
60
62
  for proved logical renames. A
@@ -35,5 +35,5 @@ SOFTWARE.
35
35
 
36
36
  This skill also adapts material from agentic-engineer by Martin Dilger and Nebulit GmbH
37
37
  (https://github.com/Nebulit-GmbH/agentic-engineer, commit 07b0f30648d663cb588d7e2c7aa031af9dfc21f2;
38
- https://nebulit.de), used with the agreement of Martin Dilger and Nebulit GmbH. That repository
39
- carries no licence file; the adapted material remains credited to Martin Dilger and Nebulit GmbH.
38
+ https://nebulit.de), used with the explicit consent of Martin Dilger and Nebulit GmbH. The adapted
39
+ material remains credited to Martin Dilger and Nebulit GmbH.
@@ -17,7 +17,7 @@ adapted to `.play` declarations (`references/provenance.md`).
17
17
  ## When / when not
18
18
  - Use: P4 self-check; P5 independent review; auditing an existing or extracted model; reviewing a
19
19
  proposal or edit request before it is applied; checking a model before rendering; checking a
20
- code diff in a repository with a model for model-first drift (checklist R1).
20
+ code diff in a repository with a model for model-first drift (checklist R1; `conform` is structural only).
21
21
  - Not for: changing the model (return findings; the modeler or the main session edits); writing
22
22
  missing specs (`cratis-screenplay-scenario-coverage`); designing slices
23
23
  (`cratis-screenplay-slice-design`); stream and invariant redesign
@@ -31,11 +31,10 @@ adapted to `.play` declarations (`references/provenance.md`).
31
31
  |---|---|---|
32
32
  | Screenplay | `v4.66.0` (`c89198b`) | MCP catalog (29 tools: `describe-application`, `search-declarations`, `dependencies`, `find-assertion-gaps`, `read-workspace`, `declaration-details`) in `Source/DotNET/Screenplay.Mcp/McpToolCatalog.cs`; diagnostics PLAY0029, PLAY0191, PLAY0268, PLAY0271, PLAY0350, PLAY0381, PLAY0469 in `Source/DotNET/Screenplay/Diagnostics/DiagnosticCodes.cs`; decision 0008 (one data subject per event) |
33
33
  | Screenplay | `v4.127.0` | `find-specification-obligations` (SPEC001–SPEC008 authored presence), `find-modeling-smells` (SMELL001–SMELL005 advisory questions); neither proves executed behavior or complete lineage |
34
- | Screenplay | `v4.131.0` | `semantic-diff` source objects and revision-pinned pages: `Source/DotNET/Screenplay.Mcp/{McpRevisionDiff,McpWorkspaces.Comparison,McpToolCatalog}.cs`, `Documentation/screenplay/mcp/reference.md`; previous CLI 3.46.1 predates these; see pin table below |
34
+ | Screenplay | `v4.131.0` | `semantic-diff` source objects and revision-pinned pages: `Source/DotNET/Screenplay.Mcp/{McpRevisionDiff,McpWorkspaces.Comparison,McpToolCatalog}.cs`, `Documentation/screenplay/mcp/reference.md`; previous CLI 3.46.1 predates these |
35
35
  | cratis CLI | `v3.28.3` | bundles Screenplay 4.66.0 and Stage 4.24.2; see the toolchain skill |
36
36
 
37
- The full pin table lives in `cratis-screenplay-toolchain` `references/versions.md`; do not copy
38
- it here. Compilation (V1) does not establish reference execution.
37
+ Historical sources; pins (v4.139.0: 39 tools): toolchain `references/versions.md`. Compilation (V1) does not establish reference execution.
39
38
 
40
39
  ## Interview phase
41
40
  Skip if the brief names the scope, the mode and the review kind.
@@ -65,7 +64,7 @@ model's behalf.
65
64
  `dependencies direction=incoming` for orphans. The verdict lines are independent: a V1 pass is
66
65
  necessary, never sufficient. Opt into completeness with `--check` or MCP
67
66
  `checks` for bindings, input surfaces, field origins, query keys, event consumers
68
- and navigation; whole-source errors skip these checks. Record selected families,
67
+ navigation and personas (PLAY0574-0576); whole-source errors skip these. Record selected families,
69
68
  skipped status and coverage limits, never a vacuous pass. Any line without
70
69
  evidence is "not run: reason".
71
70
  3. **Element sweep** (phase 1, mechanical, before any judgement). One line per gated element, event,
@@ -255,10 +254,11 @@ verdict follows the rules in `references/report-template.md`.
255
254
  ## References (load on demand)
256
255
  - Review public leaks, direction, complete keys and effective routes with [public/key/route checks](references/public-keys-and-routes.md).
257
256
  - Read `references/checklist.md` when performing the element sweep and phased audit; it contains eleven phases, 89 checks, tiers and evidence sources.
258
- - Read `references/anti-patterns.md` when investigating an anti-pattern signal; it gives the signal, why it matters, tier and Screenplay fix.
259
- - Read `references/report-template.md` when classifying findings, deciding the verdict, writing the report or conducting a re-review; it defines report, severity and verdict rules.
260
- - Read `references/worked-example.md` when an example of the sweep, lineage or report is needed, or when checking the complete examples; it contains a seeded model, sweep notes, a filled report and the fixed model.
257
+ - Read `references/anti-patterns.md` when investigating an anti-pattern signal.
258
+ - Read `references/report-template.md` when classifying findings, deciding the verdict, writing the report or conducting a re-review.
259
+ - Read `references/worked-example.md` when an example of the sweep, lineage or report is needed, or when checking the complete examples: seeded model, filled report, fixed model.
261
260
  - Read `references/review-questions.md` when gathering evidence for subject-specific checks or distinguishing facts from views; it contains questions per subject and domain examples.
261
+ - Read `references/model-inventory-report.md` when asked for a read-only inventory of an existing model.
262
262
  - Read `references/business-questions.md` when conducting the business-question pass; it contains the explainer journey method, prompts and word translation.
263
263
 
264
264
  ## Lineage
@@ -61,8 +61,8 @@ the problem, the checks it violates, the fix, all pinned to one declaration.
61
61
  | Dropped construct | PLAY0029 warning; misspelled keyword or `type` inside a slice | the construct is silently ignored | C | fix the keyword; validate with warnings as errors |
62
62
  | Missing `for` | an event production (`produces <Event>` or `produces event`) without `for`. Not operation productions: they are authorable design intent, belong to commands, and take no event `for`, tags or routing | runtimes disagree on the destination | C (executable) / D | `for <identifier>` |
63
63
  | Unbuilt read-model field | field no projection maps and AutoMap cannot fill | always empty; not reported by the compiler | D | map it or remove it |
64
- | Undeclared removal/append event | `remove with` or capture `append` names an undeclared event | passes V1, fails binding (V2/V3, PLAY0273) | C (executable) / D | declare or fix the name; run V3 |
65
- | Gated command invoked by a reaction without a declared actor | reaction `invokes` a command under a caller policy and has no `runs as system role "<Role>"` that satisfies the gate | the invocation carries no caller: rejected at run time | D (major) | declare `runs as system role "<Role>"` with the least-privilege role the gate admits (ESM v10, Screenplay 4.125.0; previous CLI 3.46.1 refused v10 with CLI-RENDER-004, so gap-fill) or record another trusted-path decision - never just delete the gate. A matching `runs as system role` is the admitted trusted path, not a defect |
64
+ | Undeclared removal/append event | `remove with` or capture `append` names an undeclared event | V1 warns (PLAY0166, a failure under warnings as errors); binding fails PLAY0273 | C (executable) / D | declare or fix the name; run V3 |
65
+ | Gated command invoked by a reaction without a declared actor | reaction `invokes` a command under a caller policy and has no `runs as system role "<Role>"` that satisfies the gate | the invocation carries no caller: rejected at run time | D (major) | declare `runs as system role "<Role>"` with the least-privilege role the gate admits (ESM v10, Screenplay 4.125.0; Stage 4.73.1 refuses `runsAs` with STAGE-ESM-034 and every reaction model, so gap-fill) or record another trusted-path decision - never just delete the gate. A matching `runs as system role` is the admitted trusted path, not a defect |
66
66
  | `reads` + `produces` reaction | reaction both reads a view and produces | fails binding | C (executable) | invoke a command, or produce without reads |
67
67
  | `reads` treated as protection | rule "checked" because the command or reaction `reads` a view | `reads` enforces nothing | D (major) | keep or introduce `reads <View>` + `require ... message` as stated intent, mark it NOT enforced in the slice `description`, name the target (`[ProtectedDecision]` + `DecisionRead<T>`, Chronicle DCB, or a constraint where it fits); checklist E3 |
68
68
  | Caller-supplied state rule | `require currentStatus == "open"` where the caller sends `currentStatus` | the caller decides its own permission | D (major) | read the stored state with `reads`; keep or introduce `reads <View>` + `require ... message` as stated intent, mark it NOT enforced in the slice `description`, name the target (`[ProtectedDecision]` + `DecisionRead<T>`, Chronicle DCB, or a constraint where it fits); checklist E3 |
@@ -168,19 +168,19 @@ Nebulit (`provenance.md`).
168
168
  | Id | Check | Evidence | Tier |
169
169
  |---|---|---|---|
170
170
  | G1 | Every command has at least one reachable and authorized origin, and no command is attributed to a generic "User" | screen `action`, forms, reactions, persona policies | D |
171
- | G2 | Personas have a purpose and say what they cannot do; read-only roles are legitimate; every persona has at least one command or one view | `persona` descriptions | D |
171
+ | G2 | Personas have a purpose and say what they cannot do; read-only roles are legitimate; every persona has at least one command or one view (mechanical evidence: `--check personas`, PLAY0574 to PLAY0576) | `persona` descriptions | D |
172
172
  | G3 | Persona policy lists cover every gate on the path (module, feature, construct) | policies | C semantics (board placement) |
173
173
  | G4 | A command invoked by a reaction is not gated by a caller policy, unless a trusted-path decision is recorded | reactions, `authorize` | D (silent = major) |
174
174
  | G5 | Row scoping (whose data) is part of the view, not a filter the caller supplies | queries | D |
175
175
  | G6 | Every persona Cannot line resolves to an executable gate (`authorize` policy, or ownership `claim "x" matches subject\|<command property>`) and a `then denied` spec whose caller is synthesized with `given caller as <Persona>` or explicitly carries the effective-gate roles/claims; otherwise recorded as a gap. Persona text is intent only | personas, policies, specs | D |
176
176
  | G7 | Every command and query under an inherited module/feature `authorize` has its own `then denied` spec; authorization shared by a feature is declared at feature/module level so new paths inherit it | policies, specs | D |
177
- | G8 | Ownership checks against a Uuid-backed identifier are not renderable today (STAGE-ESM-015): noted | policies | C (renderable mode) |
177
+ | G8 | Ownership/claim targets are a supported scalar (text, Uuid, Date or DateTime render; a numeric or Boolean target is always denied; other shapes and a command without exactly one identifier are STAGE-ESM-015 at Stage 4.73.1): noted | policies | C (renderable mode) |
178
178
 
179
179
  ## Phase 10. Views, queries and screens (4 checks, H1-H4)
180
180
  | Id | Check | Evidence | Tier |
181
181
  |---|---|---|---|
182
182
  | H1 | Query shape follows the business view (list where people scan; lookup where they open one) | queries, screens | D |
183
- | H2 | Executable scope: one keyed `=> RM optional` query with `by` named like a read-model property, and the projection routes by the same identity (a `from` key or an event property, or `$eventSourceId`; `$eventSourceId` is not mandated). Renderable scope only: Stage-specific identity limits (Stage 4.24 admits a one-instance projection with an optional keyed snapshot query) | queries, projections | C (executable); C (render admission, renderable only) |
183
+ | H2 | Executable scope: a keyed `=> RM optional` query with `by` named like a read-model property, or an unfiltered / one-`by` list (`=> RM[]`, observable too; `filter`, `scoped to`, `performer` do not bind), and the projection routes by the same identity (a `from` key or an event property, or `$eventSourceId`; `$eventSourceId` is not mandated). Renderable scope only: Stage-specific identity limits (Stage 4.73.1 renders a keyed optional snapshot lookup and observable collection queries; any other query is `STAGE-ESM-010`) | queries, projections | C (executable); C (render admission, renderable only) |
184
184
  | H3 | One builder per read model; projection `key` only on `from` | projections | C |
185
185
  | H4 | Screens show one actor's point of view; a form submits one command | screens, forms | D |
186
186
 
@@ -192,7 +192,7 @@ artifact is `N/A: <reason>`.
192
192
 
193
193
  | Id | Check (the rejected pattern) | Signal to look for | Severity |
194
194
  |---|---|---|---|
195
- | R1 | Code-first change that silently outranks accepted model intent | behaviour added in code with no `.play` counterpart; the model edited to match existing code; the model left stale after a code change | major (critical when the code contradicts a protection) |
195
+ | R1 | Code-first change that silently outranks accepted model intent | behaviour added in code with no `.play` counterpart; the model edited to match existing code; the model left stale after a code change; optional structural evidence: `cratis screenplay conform <model-root> --project <path>` (CLI 3.42.0+, exit 0/1/2, exact structural addresses only, never a behavioral or V4 verdict; MSBuild runs, so a trusted clone) | major (critical when the code contradicts a protection) |
196
196
  | R2 | A diagram, board or document in place of executable semantics | a rule only in a board note, a description or a wiki page; no property, validation, constraint or spec behind it (E8) | major |
197
197
  | R3 | Claims of universal low-code, lossless recovery or target parity | words like "fully generated", "lossless", "any target" in a report or description | minor; major when it hides a gap |
198
198
  | R4 | Framework machinery in the domain vocabulary (saga, aggregate, passive objects, HTTP or broker detail) or syntax wanted because a framework API is common | declarations named after saga, handler classes, topics, endpoints; a request to add language syntax to mirror a framework API | minor; major when it shapes the model |
@@ -0,0 +1,75 @@
1
+ # Model inventory report
2
+
3
+ Use this for a read-only "what is in this model and where are the gaps" report on an
4
+ existing, extracted or inherited `.play` model, before or without a full checklist run. It is
5
+ the inventory the audit pass in `SKILL.md` produces, in a fixed shape a maintainer can read
6
+ in a minute. It never changes the model. Adapted from Martin Dilger and Nebulit GmbH's
7
+ analyze-existing-model (see `provenance.md`), with board, status and placement steps replaced by
8
+ the Screenplay MCP views.
9
+
10
+ ## Gather (read-only)
11
+ 1. Scope. A named module narrows the report to that module; otherwise report the whole
12
+ model, one block per module. If the named module does not exist, say so and list the modules
13
+ that do.
14
+ 2. Structure: `describe-application` (view `summary`) gives modules, features and slices by kind.
15
+ 3. Elements: counts of `event`, `command`, `readmodel`, `screen`, `reaction` and `trigger`
16
+ per module from `search-declarations`; fall back to the source files when a view is
17
+ unavailable and say which.
18
+ 4. Specifications: `find-assertion-gaps` for slices without an assertion; `find-specification-obligations`
19
+ for obligations with no matching specification. These read authored examples, not executed
20
+ coverage (`../../cratis-screenplay-model-authoring/references/mcp-tools.md`).
21
+ 5. Gaps and orphans: `find-references` and `dependencies` for declarations referenced by nothing;
22
+ `find-modeling-smells` for the candidate shapes.
23
+
24
+ ## Report
25
+ ```
26
+ ## Model inventory: <model root or module>
27
+ Inspected: <date>, Screenplay <tool version>, source identity <revision>
28
+
29
+ ### Modules (n)
30
+ - <module>: <n> features, <n> slices
31
+
32
+ ### Elements (per module)
33
+ | Kind | Count |
34
+ |---|---|
35
+ | event | |
36
+ | command | |
37
+ | readmodel | |
38
+ | screen | |
39
+ | reaction / trigger | |
40
+ | capture | |
41
+
42
+ ### Specification coverage
43
+ - n of total slices have at least one assertion (pct)
44
+ - Without: <names, at most 10, then "and N more">
45
+
46
+ ### Structural gaps (per slice)
47
+ <slice: what is missing>, or "none"
48
+
49
+ ### Orphans
50
+ <declarations nothing references>, or "none"
51
+
52
+ ### Shapes
53
+ <left chair, right chair, bed, shelf only as candidates that held up against the domain; see
54
+ anti-patterns.md>, or "none"
55
+
56
+ ### Summary
57
+ <2 to 4 sentences: maturity, the most important gap or risk, one concrete suggestion>
58
+ ```
59
+
60
+ ## Structural gaps to look for
61
+ | Slice kind | Expect | Flag when missing |
62
+ |---|---|---|
63
+ | StateChange | an origin (screen action, form, or reaction), a `command`, at least one `event` | any of the three |
64
+ | StateView | a `readmodel` with a projection (or reducer) and a `query` or screen that reads it | projection or reader |
65
+ | Automation | a `reaction` or `trigger` and what it produces or invokes | either |
66
+ | Translate | inbound: a `capture` or a translating reaction, and the private events it produces; outbound: a reaction or an event-target projection/reducer publishing the public event contract (no capture) | the direction's source or the produced or published events |
67
+
68
+ Do not flag a gap the documentation or the slice name marks intentional (an internal slice
69
+ with no screen). Judge unintentional gaps against the slice title, and surface only those.
70
+ Orphans that a documented terminal reason explains are not findings.
71
+
72
+ ## Not carried over
73
+ Slice status counts (`Planned`, `InProgress`, `Done`) are not in the report: `.play` has no
74
+ status field. Delivery status lives in the GitHub issue or `STATE.md`. An orphan that a board
75
+ tool could not see is skipped with a note, never guessed.
@@ -12,11 +12,10 @@ MIT, Copyright (c) 2025 Straw Hat, LLC. The complete notice is in this skill's `
12
12
  | `eventmodeling-validating-event-models` | `checklist.md` T (allowed and refused transitions per entity), C7 and C8 (unique semantics, corrections name what they correct), F3, G (role attribution and coverage), D and E (read models serve real queries, regenerable), `report-template.md` (critical and warning findings, completeness table) | Adapted; the command-state rule is not adopted as such (Screenplay decisions read stored state through `reads`; see `anti-patterns.md`) |
13
13
  | `eventmodeling-checking-completeness` | `checklist.md` A (origin and destination for every field, every command input, every read-model field), A8 (step contracts), G (role coverage), `references/worked-example.md` (field-trace format) | Adapted; matrices replaced by lineage over `.play` declarations |
14
14
 
15
- ## Adapted closely (Martin Dilger and Nebulit GmbH, with agreement)
15
+ ## Adapted closely (Martin Dilger and Nebulit GmbH)
16
16
 
17
17
  Source: https://github.com/Nebulit-GmbH/agentic-engineer at commit `07b0f30648d663cb588d7e2c7aa031af9dfc21f2`,
18
- by Martin Dilger and Nebulit GmbH (https://nebulit.de). The repository carries no licence file; this material
19
- is adapted with the agreement of Martin Dilger and Nebulit GmbH.
18
+ by Martin Dilger and Nebulit GmbH (https://nebulit.de), used with the explicit consent of Martin Dilger and Nebulit GmbH.
20
19
 
21
20
  | Source file | Used in | How |
22
21
  |---|---|---|
@@ -24,7 +23,7 @@ is adapted with the agreement of Martin Dilger and Nebulit GmbH.
24
23
  | `.claude/skills/eventmodeling-designing-automation-chains/SKILL.md`: every automation needs a todo list, translation versus worker, redundant second stage, no status field, closing path, quality checklist | `checklist.md` F8 to F12 and the automation-chain audit, `report-template.md` "Automation chains", `review-questions.md` | Restored from #493 (the automation-chain audit) as review checks translated to `Automation` and `Translate` slices. Not adopted: a translation's todo list is never closed; here a translation holding real pending work needs a terminal disposition (the audit format of `cratis-screenplay-automations-and-translations`), and an artificial never-closing queue is flagged instead |
25
24
  | `.claude/skills/eventmodeling-core-rules/SKILL.md`: Critic Mode, Flow and Causality, Open Questions vs. Decided Failures, Offline-First Thinking | `SKILL.md` "Procedure" (stance), `checklist.md` E9 and F13, `report-template.md` "Defect or business question?", `review-questions.md` | Adapted closely; the single-issuer command rule, lanes, linked copies and board mechanics are not adopted |
26
25
  | `.claude/skills/handle-comment/SKILL.md`: one remark per node with a kind, resolving means answering | `SKILL.md` "Findings" | Adapted; the board place, resolve and delete actions are dropped, the remark is a finding pinned to one declaration |
27
- | `.claude/skills/analyze-existing-model/SKILL.md`: spec coverage with names, structural gaps per slice type, summary in 2 to 4 sentences | `SKILL.md` "Audit pass", `report-template.md` Inventory | Now adapted closely; slice status breakdown dropped (Screenplay has none) |
26
+ | `.claude/skills/analyze-existing-model/SKILL.md`: spec coverage with names, structural gaps per slice type, summary in 2 to 4 sentences | `SKILL.md` "Audit pass", `report-template.md` Inventory, `model-inventory-report.md` (gather steps, report shape, structural-gap table) | Adapted closely; board and slice-status steps replaced by the Screenplay MCP views, slice status breakdown dropped (Screenplay has none), `validate_model` replaced by `find-modeling-smells` and `find-assertion-gaps` |
28
27
  | `.claude/skills/eventmodeling-validating-event-models/SKILL.md`, `-checklist/SKILL.md`: event-entity mapping (Check 6.2), report with blockers and next steps, common issues, closing questions that gate the verdict | `checklist.md` B2, `report-template.md` Verdict, `review-questions.md` | Martin Dilger and Nebulit GmbH's changes to the TrogonStack base, adapted; the "exactly one issuer" and "screen wired to more than one command always fails" rules are not adopted (Screenplay commands may have several origins and a screen several actions) |
29
28
  | `.claude/skills/eventmodeling-checking-completeness/SKILL.md`: field matrix, slice coverage, "search before calling data missing" | `checklist.md` A1 to A8 | Already adapted from the TrogonStack base (role coverage is TrogonStack's, credited above); Martin Dilger and Nebulit GmbH's slice-border and linked-copy checks are not adopted (no columns or linked copies in `.play`) |
30
29
 
@@ -16,7 +16,7 @@ Add these to the element sweep, with evidence pinned to the declaration:
16
16
  - Is the view identity explicitly marked `key` or unambiguously inferred? Does each
17
17
  single-instance query/read supply every part exactly once, with compatible types,
18
18
  and do state fixtures contain all parts? Do PDL keys align with the view's key?
19
- Composite view keys still refuse binding at 4.135.0 (PLAY0268, #599); compilation
19
+ Composite view keys still refuse binding at 4.139.0 (PLAY0268, #599); compilation
20
20
  is not executable evidence. Read read-surface `references/named-keys.md`.
21
21
  - Does a production override replace the whole source/stream/id route, rather than
22
22
  assume partial inheritance? Is its `for` destination still explicit and compatible?
@@ -12,8 +12,9 @@
12
12
  A small model with one seeded design defect, reviewed in critic mode. The model file is
13
13
  `berths.play`; line numbers below refer to it. The report follows `report-template.md` and is
14
14
  shortened: it shows the flagged checks of each phase and elides the passing ones, which a real
15
- report lists in full. The model compiles in design mode: the `ListBerths` list query blocks V3
16
- (`PLAY0268`), which is why the report below does not run V3.
15
+ report lists in full. The model compiles and, on the standalone 4.139.0 tool, binds and runs one specification (the
16
+ `ListBerths` list query binds since Screenplay 4.105.0). The report works in design mode, so it
17
+ does not run V3 or V4.
17
18
 
18
19
  ## The model under review
19
20
 
@@ -171,7 +172,7 @@ Confidence: medium (design mode; V2 to V5 not run)
171
172
 
172
173
  ## After the fix
173
174
  The same scope after the modeler applied the edit request and added denial specifications.
174
- The review is re-run only on the changed scope. The query contract is unchanged: no edit request asked for a different query, so `ListBerths => BerthSummary[]` stays. This document compiles (design mode), but the list query blocks V3 (binding reports PLAY0268, a query must declare one caller-supplied `by` argument), so its specifications do not run here. Adding a keyed `BerthById` next to the list would not unblock binding; replacing the list would change the contract and needs its own domain-justified edit request.
175
+ The review is re-run only on the changed scope. The query contract is unchanged: no edit request asked for a different query, so `ListBerths => BerthSummary[]` stays. This document compiles and binds, and its four specifications pass in `screenplay test` (4.139.0). Replacing the list with a keyed lookup would change the contract and needs its own domain-justified edit request. Stage 4.73.1 would refuse the snapshot list (`STAGE-ESM-010`); only an `observable` list or a keyed lookup renders.
175
176
 
176
177
  ```screenplay
177
178
  concept BerthId : Uuid
@@ -33,5 +33,5 @@ SOFTWARE.
33
33
 
34
34
  This skill also adapts material from agentic-engineer by Martin Dilger and Nebulit GmbH
35
35
  (https://github.com/Nebulit-GmbH/agentic-engineer, commit 07b0f30648d663cb588d7e2c7aa031af9dfc21f2;
36
- https://nebulit.de), used with the agreement of Martin Dilger and Nebulit GmbH. That repository
37
- carries no licence file; the adapted material remains credited to Martin Dilger and Nebulit GmbH.
36
+ https://nebulit.de), used with the explicit consent of Martin Dilger and Nebulit GmbH. The adapted
37
+ material remains credited to Martin Dilger and Nebulit GmbH.
@@ -43,7 +43,7 @@ an unproven pass.
43
43
  | An accepted model covers the scope | **Model** | Change the `.play`, verify V1-V3, review, then render or gap-fill |
44
44
  | Opted in, but this scope has no model yet | **Model** | New behavior starts in discovery, then slice design |
45
45
  | A computed rule inside a modeled slice | **Model + code attachment** | `csharp`/`file` block; it binds only as the construct allows (`cratis-screenplay-model-authoring`) |
46
- | Scope Stage cannot render yet, including every modeled automation and translation (Stage `v4.24.2` renders neither; the whole behavior is gap-fill, not just its outside call) | **Gap-fill code** | Hand-written; the `.play` slice and specs are the contract. `cratis-screenplay-render-and-gap-fill` separates an authorized existing generated base from fully hand-written delivery |
46
+ | Scope Stage cannot render yet, including every modeled automation and translation (Stage 4.73.1 renders neither; the whole behavior is gap-fill, not just its outside call; a reaction that produces and invokes stays one reaction, `STAGE-ESM-037`, hand-written as one reactor on Arc 22.72.0 or later) | **Gap-fill code** | Hand-written; the `.play` slice and specs are the contract. `cratis-screenplay-render-and-gap-fill` separates an authorized existing generated base from fully hand-written delivery |
47
47
  | Outside call, transport or credentials | **Adapter code** | `Customizations/` or the host, applying `cratis-engineering-effect-boundaries` |
48
48
  | Infrastructure, clients, framework-profile repositories, brownfield not opted in | **Code** | Arc, Chronicle, spec and React skills; trivial changes keep the proportional-delegation policy |
49
49
 
@@ -210,10 +210,12 @@ labelled as such. The user decides whether it is enough
210
210
  | Critic review, business-question pass | `cratis-screenplay-model-review` |
211
211
  | Existing system into a model | `cratis-screenplay-legacy-extraction` |
212
212
  | Render, gap-fill, fallback, drift | `cratis-screenplay-render-and-gap-fill` |
213
+ | Estimate, order or split delivery of an accepted model | `cratis-screenplay-delivery-planning` |
213
214
 
214
215
  Construct mechanics stay in the `cratis-screenplay-*` construct skills; term clashes:
215
216
  `references/vocabulary-map.md`; worked example: `references/worked-example.md`; done checklist: `references/phases.md`.
216
217
  Read `references/worked-example.md` when needing an example of reasoning documentation, constraints, and decided rejections.
218
+ Read `references/core-rules-digest.md` when you need the one-page card of element names, causality, open-question-versus-decided-failure and the anti-patterns to reject early.
217
219
 
218
220
  ## Gate
219
221
  Done when: the mode's "done when" holds with fresh verdict lines; every open question has an
@@ -221,13 +223,13 @@ address and assumption; every decided rejection is a specification; no protectio
221
223
  the packet opens with `Outcome:`; STATE.md is current.
222
224
 
223
225
  ## Verified product sources
224
- Full pin table: `cratis-screenplay-toolchain/references/versions.md`. Read `cratis-screenplay-toolchain/references/versions.md` when selecting or reverifying tool versions. Used here: Screenplay
226
+ Full pin table: `cratis-screenplay-toolchain/references/versions.md`. Read `cratis-screenplay-toolchain/references/versions.md` when selecting or reverifying tool versions. Current pins (Stage 4.73.1, cratis CLI 3.53.1 and the rest) are in that file. Older source reads used here: Screenplay
225
227
  `v4.66.0` (`c89198b`): `Source/DotNET/Tool/Program.cs` (`--warnaserror`, folder mode),
226
228
  `Source/DotNET/Screenplay/Semantics/SemanticModelBinder.cs:209-216` (personas are report-only),
227
229
  `Documentation/screenplay/{constraints,specifications}.md`, `mcp/reference.md` (`modelRevision`);
228
- cratis CLI `v3.28.3` (`cratis screenplay validate --warnings-as-errors`, bundled Screenplay 4.66.0);
229
- Stage `v4.24.2` (admits ESM v1-v4 and refuses evolved events with `STAGE-ESM-026`); opt-in key `mcpServers.screenplay.root` in cratis CLI `v3.28.3`
230
- `Documentation/reference/screenplay-mcp.md`. The worked example compiles with both tools.
230
+ cratis CLI `v3.28.3` (`cratis screenplay validate --warnings-as-errors`; bundled Screenplay 4.66.0 then, 4.137.0 in 3.53.1);
231
+ opt-in key `mcpServers.screenplay.root` in cratis CLI `v3.28.3`
232
+ `Documentation/reference/screenplay-mcp.md`. The 4.66.0 and 3.28.3 reads are historical, not current pins. The worked example compiles with the standalone tool.
231
233
  ## Verify
232
234
  ```shell
233
235
  screenplay <model-folder> --warnaserror --no-color