@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.
- package/package/corpus/agents/screenplay-modeler.md +1 -1
- package/package/corpus/agents/screenplay-renderer.md +1 -1
- package/package/corpus/agents/screenplay-reviewer.md +1 -1
- package/package/corpus/agents/slice-implementer.md +1 -1
- package/package/corpus/rules/profiles.md +1 -0
- package/package/corpus/skills/cratis-application-slice-conformance/LICENSE +2 -2
- package/package/corpus/skills/cratis-application-slice-conformance/SKILL.md +5 -0
- package/package/corpus/skills/cratis-application-slice-conformance/references/checklists.md +12 -0
- package/package/corpus/skills/cratis-application-slice-conformance/references/provenance.md +3 -4
- package/package/corpus/skills/cratis-application-slice-specifications/LICENSE +2 -2
- package/package/corpus/skills/cratis-application-slice-specifications/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-arc-react-page/LICENSE +2 -2
- package/package/corpus/skills/cratis-arc-react-page/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-chronicle-event-modeling/SKILL.md +12 -6
- package/package/corpus/skills/cratis-chronicle-reactor/LICENSE +2 -2
- package/package/corpus/skills/cratis-chronicle-reactor/SKILL.md +5 -2
- package/package/corpus/skills/cratis-chronicle-reactor/references/provenance.md +3 -3
- package/package/corpus/skills/cratis-chronicle-reactor/references/slice-delivery-checklist.md +93 -0
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/LICENSE +2 -2
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/SKILL.md +1 -1
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/references/provenance.md +3 -3
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/references/view-lifecycle-checks.md +79 -0
- package/package/corpus/skills/cratis-event-model-diagram/LICENSE +7 -0
- package/package/corpus/skills/cratis-event-model-diagram/SKILL.md +26 -2
- package/package/corpus/skills/cratis-event-model-diagram/references/provenance.md +19 -0
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +14 -9
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +5 -5
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/effects-and-idempotency.md +1 -1
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/public-events-and-direction.md +1 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/realization-and-gap-fill.md +9 -5
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/todo-list-example.md +6 -6
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/translate-example.md +1 -1
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +14 -13
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +12 -13
- package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +3 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +2 -2
- package/package/corpus/skills/cratis-screenplay-command-surface/references/validate-rules.md +4 -2
- package/package/corpus/skills/cratis-screenplay-delivery-planning/LICENSE +9 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/SKILL.md +118 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/references/parallel-delivery.md +45 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/references/provenance.md +29 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/references/slice-counting.md +43 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/references/velocity-and-capacity.md +48 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/verification.json +16 -0
- package/package/corpus/skills/cratis-screenplay-discovery/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +6 -5
- package/package/corpus/skills/cratis-screenplay-discovery/references/divergent-sweep.md +1 -0
- package/package/corpus/skills/cratis-screenplay-discovery/references/domain-analysis-template.md +92 -0
- package/package/corpus/skills/cratis-screenplay-discovery/references/personas-and-causes.md +2 -2
- package/package/corpus/skills/cratis-screenplay-discovery/references/provenance.md +4 -3
- package/package/corpus/skills/cratis-screenplay-discovery/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-event-modeling/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +28 -28
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/nine-steps.md +7 -5
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +12 -9
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +26 -13
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/candidate-inventory.md +6 -1
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +7 -0
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/prologue-safety.md +22 -17
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/rule-modeling.md +2 -2
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/side-car-migration.md +1 -0
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +2 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +3 -3
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +3 -1
- package/package/corpus/skills/cratis-screenplay-model-review/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +8 -8
- package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +2 -2
- package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +4 -4
- package/package/corpus/skills/cratis-screenplay-model-review/references/model-inventory-report.md +75 -0
- package/package/corpus/skills/cratis-screenplay-model-review/references/provenance.md +3 -4
- package/package/corpus/skills/cratis-screenplay-model-review/references/public-keys-and-routes.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/references/worked-example.md +4 -3
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/SKILL.md +7 -5
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/core-rules-digest.md +131 -0
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/phases.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/provenance.md +25 -4
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/reasoning-notes.md +2 -2
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/verdicts-and-modes.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/vocabulary-map.md +5 -4
- package/package/corpus/skills/cratis-screenplay-projections/SKILL.md +9 -5
- package/package/corpus/skills/cratis-screenplay-projections/references/pdl-grammar.md +4 -2
- package/package/corpus/skills/cratis-screenplay-read-surface/LICENSE +7 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +16 -8
- package/package/corpus/skills/cratis-screenplay-read-surface/references/provenance.md +21 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/references/screen-patterns.md +130 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +58 -46
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/delivery-protocol.md +17 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/drift-and-ledger.md +19 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +22 -4
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +21 -16
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/worked-example.md +34 -29
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +5 -4
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/berth-reservations.md +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-design.md +5 -4
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-example.md +32 -3
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/provenance.md +3 -4
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-catalogue.md +7 -6
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-examples.md +3 -3
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-workshop.md +15 -7
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +8 -7
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/view-and-story-specs.md +6 -4
- package/package/corpus/skills/cratis-screenplay-slice-design/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +4 -3
- package/package/corpus/skills/cratis-screenplay-slice-design/references/command-inventory.md +2 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/references/derived-condition-events.md +68 -0
- package/package/corpus/skills/cratis-screenplay-slice-design/references/field-lineage.md +1 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/references/provenance.md +5 -5
- package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md +17 -0
- package/package/corpus/skills/cratis-screenplay-slice-design/references/rule-layers.md +6 -6
- package/package/corpus/skills/cratis-screenplay-slice-design/references/worked-example.md +3 -3
- package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +6 -4
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +2 -1
- package/package/corpus/skills/cratis-screenplay-specifications/references/generated-fixtures.md +3 -2
- package/package/corpus/skills/cratis-screenplay-specifications/references/persona-callers-and-cases.md +3 -0
- package/package/corpus/skills/cratis-screenplay-specifications/references/reactions-and-cascades.md +3 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +9 -9
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/boundaries.md +31 -3
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/chronicle-boundaries.md +6 -6
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/consistency-and-concurrency.md +12 -11
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/evolution.md +1 -1
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/provenance.md +4 -4
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +14 -12
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +3 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +3 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +24 -16
- package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +41 -12
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +5 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +14 -9
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +9 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +4 -1
- package/package/corpus/skills/cratis-screenplay-ui-composition/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-ui-composition/SKILL.md +10 -10
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/flow-review.md +1 -1
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +39 -14
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/worked-flow.md +17 -9
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +83 -74
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +62 -12
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/render-example.md +3 -1
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/rendered-application.md +30 -15
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/sandbox-and-specrunner.md +21 -1
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +8 -3
- package/package/profile-catalog.json +1 -0
- package/package.json +1 -1
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
## Contents
|
|
4
4
|
|
|
5
|
-
-
|
|
5
|
+
- Current admission (Stage 4.73.1)
|
|
6
|
+
- Historical: what Stage 4.24 admitted
|
|
6
7
|
- Authoring consequences in renderable mode
|
|
7
8
|
- Ownership, publication and recovery
|
|
8
9
|
- Reading V5
|
|
@@ -30,12 +31,35 @@ render itself before claiming renderability: this table is a reading of the sour
|
|
|
30
31
|
render result.
|
|
31
32
|
|
|
32
33
|
Renderable is a strict subset of executable (`executable-subset.md`). Order of events in
|
|
33
|
-
`cratis render`: the CLI binds the model with its **bundled Screenplay** (4.
|
|
34
|
-
and friends appear first), then Stage admits or
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
`cratis render`: the CLI binds the **whole** model with its **bundled Screenplay** (4.137.0 in cratis
|
|
35
|
+
3.53.1, so PLAY0268 and friends appear first, even with `--scope`), then Stage admits or rejects
|
|
36
|
+
members of the selected scope. (Historical, cratis 3.28.2: an ESM v6 model bound but Stage refused it
|
|
37
|
+
whole with `STAGE-ESM-016`.)
|
|
37
38
|
|
|
38
|
-
##
|
|
39
|
+
## Current admission (Stage 4.73.1)
|
|
40
|
+
|
|
41
|
+
Read at Stage `v4.73.1` (`Documentation/guides/build-renderer-target.md`, `SemanticVersionFeatures.cs`,
|
|
42
|
+
`SemanticCratisAdmission*.cs`) and cli `v3.53.1`; source reading, not a render run (the worked
|
|
43
|
+
example in `cratis-screenplay-render-and-gap-fill` was probed). Stage admits ESM v1 to v10 by
|
|
44
|
+
version; each construct it does not render refuses with its own code before any artifact is planned.
|
|
45
|
+
|
|
46
|
+
| Area | Renders at 4.73.1 | Refused (code) |
|
|
47
|
+
| --- | --- | --- |
|
|
48
|
+
| Slice kinds | `StateChange`, `StateView` | `Automation`, `Translate`, every reaction, capture, application trigger and clock specification (`STAGE-ESM-001`/`-024`); a reaction that both produces and invokes (`-037`, Stage#207; Arc 22.72.0+ can run it, and the scaffold's Arc 22.68.0 needs a proven override; hand-write one reactor, never split the reaction) |
|
|
49
|
+
| Queries | optional keyed snapshot lookups; observable collections, keyed or unkeyed (since 4.49.0) | a snapshot list: `STAGE-ESM-010`; `filter`, `scoped to`, `performer`, composite `by`: `PLAY0268` at binding |
|
|
50
|
+
| Authorization | role-only, authenticated, opaque pure policies, claim conditions with Uuid, Date, DateTime or text targets (numeric and Boolean claim matches render as always false; Stage 4.73.1 `IsSupportedClaimPath`), `not`/and/or; roles read through the identity's `RoleClaimType` | role-claim URIs, nested opaque policies, unresolved or non-portable policies, no single identifier, opaque-policy subjects that are not text, Uuid, Date or DateTime (`STAGE-ESM-015`; Stage 4.73.1 `IsTextualSubject`, a restriction separate from declarative claim targets) |
|
|
51
|
+
| Event sources, streams, routes (ESM v8) | rendered, with routed specifications | reserved stored names, unformattable routed fixtures, unsupported routed replay (`STAGE-ESM-030`) |
|
|
52
|
+
| Numbers, case tables | whole numbers as `long` from ESM v8; case tables | out-of-`int` literals below v8 (`STAGE-ESM-031`) |
|
|
53
|
+
| Generated values and responses (v7) | not rendered | `STAGE-ESM-028`/`-029` (Stage#175) |
|
|
54
|
+
| Specifications | as in Stage's `admission.md` | `then no readmodel` (`-027`); an unauthenticated caller carrying roles or claims, `$context.occurred`-derived fixed values asserted (`-011`) |
|
|
55
|
+
| v9 and v10 | reducer observer `from` filters | public events and event-target projections (`-032`); foreign origins and event-source captures (`-033`); directed Translate (`-024`); reaction `runsAs` (`-034`); reaction `from` filters (`-035`); per-production route overrides (`-036`) |
|
|
56
|
+
| Evolved events | initial revisions only | `STAGE-ESM-026` (Stage#204) |
|
|
57
|
+
| Descriptions, documentation | XML `<summary>`/`<remarks>` doc comments only (Stage#178 closed) | characters invalid in XML: `CLI-RENDER-005`; never behavior |
|
|
58
|
+
|
|
59
|
+
Still bind-refused (not Stage): `reads` and `concurrency` (`PLAY0271`), command `handler`s, `pii`/`secret`
|
|
60
|
+
(`PLAY0268`). Other rows of the table below that name 4.24 behavior are history.
|
|
61
|
+
|
|
62
|
+
## Historical: what Stage 4.24 admitted
|
|
39
63
|
|
|
40
64
|
Models using `eventsource`, `stream` or command routes are not renderable: they fail
|
|
41
65
|
binding (`PLAY0268`) and Stage refuses their ESM version (`STAGE-ESM-016`); rendered
|
|
@@ -80,11 +104,14 @@ legacy ids or drop protected ids into routing to fit a renderer (PLAY0515).
|
|
|
80
104
|
readmodel`). The seeded when-less `then query` only checks a lookup over a given read-model
|
|
81
105
|
state; it proves no projection (Stage `SemanticSpecificationAdmission.Callers.cs`).
|
|
82
106
|
- Use `$context.occurred` only; no `$context.identity.*` mappings.
|
|
83
|
-
- A list
|
|
107
|
+
- A list query binds (unfiltered, or narrowed by one `by` key); Stage 4.73.1 renders it only as an
|
|
108
|
+
`observable` collection, and refuses a snapshot list with `STAGE-ESM-010`. `filter`, `scoped to` and
|
|
109
|
+
`performer` queries block binding of the whole application. Keep a list the domain needs and report
|
|
110
|
+
the capability gap; marking it `observable` or keying it is a modeling decision for the user.
|
|
84
111
|
- A `handler` (with or without `implementation` or `hint`) never binds; the slice is
|
|
85
112
|
gap-fill, never "customized into" rendering.
|
|
86
|
-
- Descriptions and documentation
|
|
87
|
-
prose is unenforced in rendered code.
|
|
113
|
+
- Descriptions and documentation render only as XML doc comments (Stage#178 closed), never as
|
|
114
|
+
behavior: a rule that exists only in prose is unenforced in rendered code.
|
|
88
115
|
|
|
89
116
|
## Ownership, publication and recovery
|
|
90
117
|
|
|
@@ -104,8 +131,9 @@ legacy ids or drop protected ids into routing to fit a renderer (PLAY0515).
|
|
|
104
131
|
`Customizations/styles.css`. The planner never reads it, and it never binds a modeled
|
|
105
132
|
reaction or capture. A customization never makes a rejected model renderable.
|
|
106
133
|
- `cratis render` does **not** build, test or run the application.
|
|
107
|
-
- Stage 4.
|
|
108
|
-
and emits a `.frontend/` React/Vite app (Components 4.
|
|
134
|
+
- Stage 4.73.1's scaffold pins .NET 10, Arc 22.68.0, Chronicle client/kernel 19.45.0
|
|
135
|
+
and emits a `.frontend/` React/Vite app (Components 4.26.2, Scene 4.21.0); these are not the latest
|
|
136
|
+
releases (`cratis-stage-rendering-and-sandbox` `references/rendered-application.md`).
|
|
109
137
|
`CratisEmbeddedScreenplayEnabled=false`; `Directory.Packages.props` is managed,
|
|
110
138
|
never edit it. `[ProtectedDecision]` / `DecisionRead<T>` are available to gap-fill,
|
|
111
139
|
not Stage-emitted enforcement; projection/key admission and unit-of-work enrollment
|
|
@@ -117,7 +145,8 @@ V5 is four separate results (admission, publication, build, tests), plus runtime
|
|
|
117
145
|
was exercised; formats and the Debug-only spec classes are in `verdicts.md`. Three cases
|
|
118
146
|
stay distinct: admission failure (nothing rendered); an existing generated base plus
|
|
119
147
|
separately authorized hand-written gap-fill; and a fully hand-written delivery. Never claim a
|
|
120
|
-
whole-application V5 from a subset
|
|
148
|
+
whole-application V5 from a subset (`cratis render --scope` renders an admitted part; state the scope).
|
|
149
|
+
Drift: `cratis render ... --check` (CLI 3.44.0+; exit 6 means pending changes), or compare successive `.cratis-render.json`
|
|
121
150
|
`semanticRevision` values from renders with the same `--name` and inputs (see `versions.md`,
|
|
122
151
|
"Revisions and descriptions"); not the MCP `modelRevision`, not `open-workspace.revision`.
|
|
123
152
|
|
|
@@ -6,8 +6,8 @@ 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
|
|
10
|
-
2. The Screenplay samples validate clean but are not all executable; copying their idioms (
|
|
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]
|
|
@@ -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`
|
|
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
|
|
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
|
|
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]
|
|
@@ -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.
|
|
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
|
|
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,8 +84,8 @@ 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.
|
|
83
|
-
`V3 blocked: PLAY0268 x3 (
|
|
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.
|
|
@@ -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.
|
|
141
|
-
V2 read (screenplay 4.
|
|
142
|
-
V3 ready (screenplay 4.
|
|
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.
|
|
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
|
|
@@ -23,6 +23,8 @@ probe; older probes retain their original labels in the other references.
|
|
|
23
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.
|
|
@@ -175,8 +177,9 @@ specifications, UI composition and `diagnostics.md`.
|
|
|
175
177
|
Stage 4.24.1/4.24.2. Those old negative v7 probes do not describe CLI 3.41.0.
|
|
176
178
|
- CLI before 3.28.2 bundled Screenplay 4.60.1: false cascade PLAY0285, v6 refusal
|
|
177
179
|
and dynamic-root initialization bug. The roots bug was fixed in 4.63.2.
|
|
178
|
-
- CLI 3.28.2 file validation ignored imports
|
|
179
|
-
|
|
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.
|
|
180
183
|
- Older standalone empty-folder probes exited 0. Current validation still needs
|
|
181
184
|
a nonzero file count, and specification execution needs an expected selection.
|
|
182
185
|
|
|
@@ -189,7 +192,10 @@ preserve assigned identities; do not reconstruct them from names.
|
|
|
189
192
|
|
|
190
193
|
A render manifest's `semanticRevision` is a different provenance value, made
|
|
191
194
|
with the render name and bundled compiler. Do not compare it directly to MCP
|
|
192
|
-
`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.
|
|
193
199
|
|
|
194
200
|
## Upgrade checklist
|
|
195
201
|
|
|
@@ -25,7 +25,10 @@
|
|
|
25
25
|
{ "kind": "skill-contains", "value": "4.66.0" },
|
|
26
26
|
{ "kind": "skill-contains", "value": "references/generated-responses-example.md" },
|
|
27
27
|
{ "kind": "skill-contains", "value": "Operations and exact numeric" },
|
|
28
|
-
{ "kind": "skill-contains", "value": "
|
|
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" },
|
|
29
32
|
{ "kind": "skill-contains", "value": "cratis screenplay validate" },
|
|
30
33
|
{ "kind": "skill-contains", "value": "cli#244" },
|
|
31
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
|
|
9
|
-
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
⚠️
|
|
226
|
-
|
|
227
|
-
|
|
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")
|
|
290
|
-
Stage 4.
|
|
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:
|
|
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
|
|
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)
|
|
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.
|
|
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.
|
|
@@ -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.
|
|
59
|
-
renderers
|
|
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
|
-
|
|
67
|
+
released syntax (canonical fixture `fixtures/screen-release-ui.play`) is:
|
|
65
68
|
|
|
66
69
|
```screenplay excerpt
|
|
67
70
|
component <Package.Component> <instanceName>
|
|
68
|
-
|
|
69
|
-
|
|
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 <
|
|
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.
|
|
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
|
|
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
|
|
230
|
+
parameter invoiceId from component invoices.selectedItem.id
|
|
231
|
+
item compose dialog InvoiceComposer
|
|
208
232
|
```
|
|
209
233
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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
|
|
4
|
-
|
|
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
|
-
|
|
35
|
-
|
|
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
|
|
62
|
-
on the 4.66.0 bundled in `cratis` 3.28.x; Stage 4.
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
|
|
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).
|