@cratis/pi 7.32.0 → 7.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +16 -11
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/audit-format.md +1 -1
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +7 -7
- 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 +5 -6
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/public-events-and-direction.md +2 -3
- 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 +16 -15
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +2 -2
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +20 -19
- package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +3 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +1 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/references/enum-numbers.md +93 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +5 -6
- 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 +30 -29
- 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 +13 -10
- 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/SKILL.md +25 -25
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +8 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +8 -3
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +38 -8
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/property-links.md +126 -0
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/screen-authoring-workflow.md +3 -4
- package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +1 -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 +60 -47
- 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 +24 -6
- 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 +11 -10
- 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 +7 -5
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +4 -3
- 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 +14 -11
- 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 +18 -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/stream-patterns.md +1 -1
- 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 +29 -18
- 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 +7 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +21 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +5 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +32 -18
- package/package/corpus/skills/cratis-screenplay-toolchain/references/production-routes-and-filters.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +3 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +46 -16
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract-exceptions.json +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +1092 -17
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +8 -8
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +18 -13
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +41 -20
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +7 -2
- 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 +41 -16
- 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 +85 -77
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +65 -16
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/case-tables-and-whole-numbers.md +2 -2
- 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 +9 -4
- package/package/profile-catalog.json +1 -0
- package/package.json +1 -1
package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.
|
|
1
|
+
4.139.0
|
|
@@ -15,7 +15,7 @@ Sources, streams and command/specification routes bind and reference-execute as
|
|
|
15
15
|
`specifications.md`, `Versions.cs`; the complete example below compiled with
|
|
16
16
|
`--warnaserror` and passed `screenplay test` on 4.125.0.
|
|
17
17
|
|
|
18
|
-
CLI
|
|
18
|
+
The pinned CLI/Stage pair (`versions.md`) admits through v10 to construct checks, including v8
|
|
19
19
|
routes. Routed read-model/query replay scenarios can still refuse STAGE-ESM-030;
|
|
20
20
|
run admission before promising parity. Previous CLI 3.46.1/Stage 4.52.0 refused
|
|
21
21
|
above v7 with CLI-RENDER-004. Keep routing intact when a target refuses it;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Traps (one line each, with the fix)
|
|
2
2
|
|
|
3
|
-
Current pins:
|
|
3
|
+
Current pins: `versions.md`. Unless explicitly
|
|
4
4
|
updated below, [probed]/[source] rows retain their historical v4.66.0/CLI 3.28.2
|
|
5
5
|
scope; negative capability claims there are not current verdicts. Current routes
|
|
6
6
|
bind as v8, v7 reaches Stage planning, reference tests have CLI/MCP routes, and
|
|
7
7
|
exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
|
|
8
8
|
|
|
9
|
-
1. Clean V1 is not executable: binding errors appear
|
|
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]
|
|
@@ -15,7 +15,7 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
|
|
|
15
15
|
7. Current V1 warns on absent projection/children/nested targets (PLAY0514) and unknown removal/capture events (PLAY0166). Opt-in field-origins checks find unmapped declared fields (PLAY0534) where coverage is known; still walk lineage for skipped/opaque shapes.
|
|
16
16
|
8. Severity does not soften a rule: `severity warning` still rejects the command.
|
|
17
17
|
9. Authorization (module AND feature AND construct) runs before validation; unauthorized is `then denied`, never `then error`.
|
|
18
|
-
10. Without a declared actor an invocation is caller-less. At 4.125.0 declare reaction `runs as system role "<Role>"` (ESM v10), keep its gate, and reference-test the trusted path. The historical CLI 3.41.0/4.114.0 parser rejected this syntax (PLAY0137); previous CLI 3.46.1 refused v10 at its version gate; CLI
|
|
18
|
+
10. Without a declared actor an invocation is caller-less. At 4.125.0 declare reaction `runs as system role "<Role>"` (ESM v10), keep its gate, and reference-test the trusted path. The historical CLI 3.41.0/4.114.0 parser rejected this syntax (PLAY0137); previous CLI 3.46.1 refused v10 at its version gate; the pinned CLI/Stage pair (`versions.md`) reaches construct checks but still refuses reaction identity (STAGE-ESM-034). Arc gap-fill uses `[ExecuteCommandsAsSystem]` for returned commands, not a fictional `given caller`.
|
|
19
19
|
11. A reaction `produces` without `for` lands on the trigger's event source; clock and application triggers need an explicit `for`.
|
|
20
20
|
12. Explicit trailing `key` marks replace inference (never `identifier`); multipart read-model keys remain PLAY0268 (#599). Without marks, single-instance queries in the owning slice must agree on `by xId XId`, where `xId` is a read-model property. Only with no such identifier and an admitted list query does `*Id` inference run (collection-key exclusions: read-surface `references/named-keys.md`); queryless views need explicit `key`. The identifier equals the projection's effective key (table in slice-design `references/read-model-design.md`; full rule, including Stage's narrower admission and `STAGE-ESM-017`, in `cratis-stage-rendering-and-sandbox` `references/admission.md`). Never mark a read-model property `identifier`. (Without explicit `key`, PLAY0268 when identity inference is ambiguous or absent; PLAY0351 when a `given`/`then` readmodel block omits that property.)
|
|
21
21
|
13. Projection `key` routes only on `from` (projection-level: PLAY0381). `all` is per event source. Joins never create instances and match the joined event's source id. [probed]
|
|
@@ -31,7 +31,7 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
|
|
|
31
31
|
23. `@` escapes are mandatory for `tag`, `authorize`, `produces`, `reads`, `file`, `validate`, `sequence`, `occurred`, `causedBy`, `namespace`, `correlation`, `causation`, and projection `key`/`parent`/`with` as names.
|
|
32
32
|
24. Canonicalizing edits can drop unplaceable comments (PLAY0288; inspect `droppedCommentCount`); keep durable rationale in fenced Markdown `documentation`, not `//`, and summaries in `description`. Documentation survives canonical printing but changes neither executable bytes nor `modelRevision`; it is not rendered code.
|
|
33
33
|
25. MCP writes: propose, review, approval, apply by the identity owner (the session that owns the MCP connection); other subagents return edit requests; proposals are connection-local, at most 16 (`cratis-screenplay-model-authoring`).
|
|
34
|
-
26. Operations/systems and `numbers exact` source mode remain unadmitted. Qualifying retained non-route Double literals instead select published v11 at 4.135.0. Sources/streams/routes bind as v8, public/direction forms v9, identity/overrides/filters v10. CLI
|
|
34
|
+
26. Operations/systems and `numbers exact` source mode remain unadmitted. Qualifying retained non-route Double literals instead select published v11 at 4.135.0. Sources/streams/routes bind as v8, public/direction forms v9, identity/overrides/filters v10. The pinned CLI (`versions.md`) reaches Stage construct checks through v10; v11 needs explicit consumer admission. See `versions.md`.
|
|
35
35
|
27. Translate crosses the public boundary: inbound foreign/data to private local facts; outbound private facts to one local public type. Public metadata needs explicit direction; a quoted origin is an unverified store name, not a path. Commands never publish public events. In-app private follow-up is Automation; see public-events-and-direction in the method skill.
|
|
36
36
|
28. Personas drive the board: a persona must list every policy on the path, including module-level `IsAuthenticated`.
|
|
37
37
|
29. A sample's source check is not execution. Run selected admitted specifications through `screenplay test`/MCP; given==when clock still fires no scheduled occurrence.
|
|
@@ -41,10 +41,10 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
|
|
|
41
41
|
33. Which compiler matters: cratis before 3.28.2 bundle Screenplay 4.60.1, which rejects ESM v6 (Automation/Translate) and reports a false PLAY0285 on cascades; cratis 3.28.2 bundles 4.66.0 and behaves like the standalone tool. Check `cratis --version` and name the tool in every verdict. [probed on both tools]
|
|
42
42
|
|
|
43
43
|
34. A `from <Event> key <property>` routes only if every such event carries that property: an event that frees or updates a row keyed by another stream's id must carry that id in its payload, or the row never changes. Whether the compiler reports a missing key property is unverified [to probe]; check by hand.
|
|
44
|
-
35. `description`/`documentation` are authoring metadata: board, MCP and Prologue show them; `cratis render`
|
|
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]
|
|
@@ -28,7 +28,7 @@ V3 are read from the MCP server or from a render, V1 and V5 from the CLIs.
|
|
|
28
28
|
|
|
29
29
|
| Tool | Command | Pass | Fail |
|
|
30
30
|
| --- | --- | --- | --- |
|
|
31
|
-
| Standalone
|
|
31
|
+
| Standalone (preferred; pin: `versions.md`) | `screenplay <model-root> --warnaserror --no-color` | exit 0 and a nonzero compiled file count | exit 1 defects; exit 2 could not run/invalid arguments or input |
|
|
32
32
|
| cratis (fallback) | `cratis screenplay validate <model-folder> --warnings-as-errors -o json-compact` | exit 0 | exit 5; exit 1 means missing path or no files |
|
|
33
33
|
|
|
34
34
|
- Validate the complete application root, not an independently selected fragment.
|
|
@@ -46,12 +46,17 @@ V3 are read from the MCP server or from a render, V1 and V5 from the CLIs.
|
|
|
46
46
|
- Warnings are failures here. PLAY0029 (a construct dropped silently) and the unresolved-name
|
|
47
47
|
warnings are the defects this verdict exists to catch.
|
|
48
48
|
- Syntax and consistency checks (PLAY0282 to PLAY0294) run; binding does not.
|
|
49
|
-
- Report: `V1 pass (screenplay 4.
|
|
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,13 +84,13 @@ do not block. The ESM then binds (and `read-workspace view=executable-model` rep
|
|
|
79
84
|
comparison needs it). Binding is what makes a model renderable at all. V3 means "binds",
|
|
80
85
|
never "specifications pass".
|
|
81
86
|
|
|
82
|
-
- Report the ESM version the model needs: `V3 ready (screenplay 4.
|
|
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.
|
|
87
92
|
- A model is executable only on the compiler that bound it. V3 does not carry
|
|
88
|
-
to render admission: CLI
|
|
93
|
+
to render admission: the pinned CLI (`versions.md`) passes through ESM v10 to Stage construct
|
|
89
94
|
checks; newer models receive CLI-RENDER-004. Public publication and reaction
|
|
90
95
|
identity/filters/production overrides still receive typed Stage refusals.
|
|
91
96
|
The old 3.28.x/Stage 4.24.x probes remain historical in the subset references.
|
|
@@ -137,11 +142,11 @@ What Stage admits: `renderable-subset.md`.
|
|
|
137
142
|
One line per verdict, tool and version first, evidence second:
|
|
138
143
|
|
|
139
144
|
```text
|
|
140
|
-
V1 pass (screenplay 4.
|
|
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
|
|
@@ -152,9 +157,9 @@ source change makes earlier verdicts stale.
|
|
|
152
157
|
|
|
153
158
|
Historical corpus fences were checked with standalone 4.68.0 and CLI 3.28.2.
|
|
154
159
|
Do not promote those results to current pins without rerunning. Check each changed
|
|
155
|
-
complete fence with standalone
|
|
160
|
+
complete fence with the pinned standalone tool (`versions.md`) `--warnaserror`; run `screenplay test` for
|
|
156
161
|
specification examples, and verify expected-diagnostic examples against their
|
|
157
|
-
claimed codes. Where bundle compatibility matters, also check CLI
|
|
162
|
+
claimed codes. Where bundle compatibility matters, also check the pinned CLI (`versions.md`).
|
|
158
163
|
The `// Needs the standalone screenplay compiler (ESM v6)` first-line marker belonged to cratis
|
|
159
164
|
before 3.28.2, which could not validate those fences; no fence carries it now, and a
|
|
160
165
|
checker that still skips marked fences under `cratis` skips nothing. Examples meant to execute are also opened through MCP and
|
|
@@ -17,12 +17,14 @@ probe; older probes retain their original labels in the other references.
|
|
|
17
17
|
|
|
18
18
|
| Source | Pin | Evidence |
|
|
19
19
|
| --- | --- | --- |
|
|
20
|
-
| Screenplay language, standalone tool and MCP | **4.
|
|
21
|
-
| cratis CLI | **3.
|
|
22
|
-
| Screenplay bundled by CLI | **4.
|
|
23
|
-
| Stage bundled by CLI | **4.
|
|
20
|
+
| Screenplay language, standalone tool and MCP | **4.139.0** (`dcd84574`) | Released tag `v4.139.0` and its unchanged published contract; enum numbers/ESM v12 and property references |
|
|
21
|
+
| cratis CLI | **3.53.1** | Released tag `v3.53.1`; source-checked, not a new render/browser probe |
|
|
22
|
+
| Screenplay bundled by CLI | **4.137.0** | CLI `v3.53.1:Directory.Packages.props`; enum-number authoring, not v12 binding |
|
|
23
|
+
| Stage bundled by CLI | **4.73.1** | Same file; Stage's own `Directory.Packages.props` also pins Screenplay 4.137.0 |
|
|
24
24
|
| Cratis.Arc.Screenplay bundled by CLI | **22.54.0** | Same file; this is the generator package, not a blanket rendered-app dependency pin |
|
|
25
25
|
| Chronicle / Fundamentals bundled by CLI | **19.32.0 / 7.22.8** | Same file |
|
|
26
|
+
| Latest Arc / Chronicle / Fundamentals released when this was checked | **22.72.0 / 19.50.0 / 7.23.0** | Released tags; newer than the CLI bundle and than Stage's scaffold. Arc 22.72.0 and later run a reactor returning events and commands (absent through 22.71.0); the Stage 4.73.1 scaffold pins Arc 22.68.0, whose command handler accepts a collection only when every element is a command, so a rendered app needs a proven dependency override to 22.72.0 or later |
|
|
27
|
+
| Stage 4.73.1 rendered backend and frontend | **Arc 22.68.0 / Chronicle 19.45.0**; Components 4.26.2, Scene 4.21.0, `@cratis/arc` 22.58.2, Fundamentals 7.22.8 | Stage `v4.73.1:Source/Rendering.Cratis/Scaffolding/CratisBackendApplicationScaffoldProfile.cs` and `CratisFrontendPackageSet.cs` (`Current`); not the latest releases and not bumped by hand |
|
|
26
28
|
| Historical Stage 4.51.3 rendered backend | **Arc 22.50.5 / Chronicle 19.32.0** | Stage `v4.51.3:Source/Rendering.Cratis/Scaffolding/CratisBackendApplicationScaffoldProfile.cs`; client/testing/image match; scaffold disables embedded reverse extraction |
|
|
27
29
|
|
|
28
30
|
The published `screenplay-contract.json` beside this reference is the machine-readable authority for PLAY codes, MCP tools and parameters, and standalone CLI commands/options. Its unchanged release bytes are pinned by `screenplay-contract.version` to the standalone version above. Before adding a claim, search this large JSON file by exact `code` in `diagnostics`, or by exact `name` in `mcpTools`/`cliCommands`, and inspect that object's retirement flag, parameters or options; do not load the full file into context. For example, search for `"code": "PLAY0029"` or `"name": "read-workspace"`; `screenplay-contract-exceptions.json` preserves explicitly reasoned historical statements, not current-release exceptions. Coverage gaps are mention inventories, not proof that a skill teaches a feature.
|
|
@@ -44,7 +46,7 @@ or renderer probes below as results from the newer bundle.
|
|
|
44
46
|
|
|
45
47
|
## Two compilers, one rule
|
|
46
48
|
|
|
47
|
-
Standalone Screenplay 4.
|
|
49
|
+
Standalone Screenplay 4.139.0 and CLI 3.53.1's 4.137.0 bundle are different releases.
|
|
48
50
|
Prefer standalone for the current language checks; CLI owns generation, Prologue
|
|
49
51
|
and rendering. Name the tool/version with every verdict. No verdict transfers
|
|
50
52
|
between differing compilers without checking the same inputs there.
|
|
@@ -76,8 +78,8 @@ for identity-stable selection.
|
|
|
76
78
|
|
|
77
79
|
## Admission boundaries
|
|
78
80
|
|
|
79
|
-
Screenplay `v4.
|
|
80
|
-
schema pairs through
|
|
81
|
+
Screenplay `v4.139.0:Source/DotNET/Screenplay/Semantics/Versions.cs` supports
|
|
82
|
+
schema pairs through v12. Admission selects by use:
|
|
81
83
|
|
|
82
84
|
- v7: generated values/responses and policy negation.
|
|
83
85
|
- v8: sources/streams and command/specification routes.
|
|
@@ -100,23 +102,38 @@ schema pairs through v11. Admission selects by use:
|
|
|
100
102
|
admit `numbers exact` source mode or arbitrary precision. At this tag,
|
|
101
103
|
interoperability documentation still says "claimed, unreleased"; this corpus
|
|
102
104
|
follows Versions.cs and decision 0066's publication boundary.
|
|
105
|
+
- **Published, frozen v12 in 4.139.0:** non-positional explicit enum numbers
|
|
106
|
+
select v12, carrying optional canonical last `numbers` parallel to `values`.
|
|
107
|
+
Positional pins retain earlier executable bytes/version/revision; unnumbered
|
|
108
|
+
enums retain positional meaning. Names remain fixture/condition/specification
|
|
109
|
+
values. Strict reading rejects arrays in older versions, without enum values,
|
|
110
|
+
with mismatched length, duplicates, non-int32 entries or positional numbers
|
|
111
|
+
(non-canonical). Consumers must admit v12 explicitly. Authoring shipped in
|
|
112
|
+
4.137.0 (decision 0065); syntax/example: command-surface `references/enum-numbers.md`.
|
|
103
113
|
|
|
104
114
|
Decision 0066 freezes a version when any exposing NuGet/npm package is published,
|
|
105
115
|
including prereleases. Later byte-changing features take the next version at
|
|
106
116
|
admission; a byte-preserving extension under 0004 is the exception. Published
|
|
107
|
-
numbers never change or get reused. Enum member numbers
|
|
108
|
-
|
|
109
|
-
and freshness (decision 0054, #616) are accepted but not implemented. Operations,
|
|
117
|
+
numbers never change or get reused. Enum member numbers are admitted as v12;
|
|
118
|
+
this does not admit flags or numeric values in name-based specifications.
|
|
119
|
+
Concept generation strategies and freshness (decision 0054, #616) are accepted but not implemented. Operations,
|
|
110
120
|
exact source numeric mode and reaction refusals/redelivery remain PLAY0268.
|
|
111
121
|
Composite read-model keys/query blocks are also still PLAY0268 (#599), not
|
|
112
122
|
admitted by the 4.129.0 authoring delivery; a single explicit key preserves bytes.
|
|
113
123
|
Never delete these contracts to obtain a green bind.
|
|
114
124
|
|
|
115
|
-
CLI 3.
|
|
116
|
-
`Source/Cli/Commands/Render/RenderedSemanticVersions.cs`. Stage 4.
|
|
117
|
-
EsmSchemaV10Support in `SemanticVersionFeatures.cs`
|
|
118
|
-
`SemanticVersionFeatureAdmission.cs`.
|
|
119
|
-
|
|
125
|
+
CLI 3.53.1 `RenderedSemanticVersions.Newest` is **v10**:
|
|
126
|
+
`Source/Cli/Commands/Render/RenderedSemanticVersions.cs`. Stage 4.73.1 uses
|
|
127
|
+
EsmSchemaV10Support in `Source/Rendering.Cratis/Semantics/SemanticVersionFeatures.cs`
|
|
128
|
+
and construct checks in `SemanticVersionFeatureAdmission.cs`. Both bundle
|
|
129
|
+
Screenplay 4.137.0: non-positional enum numbers pass source validation but
|
|
130
|
+
fail executable binding with PLAY0268, before renderer version admission.
|
|
131
|
+
Standalone >= 4.139.0 binds them as v12; that verdict does not transfer to
|
|
132
|
+
`cratis render`. The bundled compiler and Stage do not support reading v12 ESM.
|
|
133
|
+
A compiler upgrade alone would not lift the CLI/Stage v10 admission ceiling.
|
|
134
|
+
Bound v11 models get CLI-RENDER-004 before planning (STAGE-ESM-016 at the
|
|
135
|
+
Stage version gate); this is not the diagnostic path for v12 source on these pins.
|
|
136
|
+
Through v10 is not blanket
|
|
120
137
|
render support: public publication STAGE-ESM-032, foreign events/event captures
|
|
121
138
|
033, reaction identity 034, reaction filters 035 and production overrides 036
|
|
122
139
|
remain refused; reducer filters render. ESM v8 routes reach their own checks.
|
|
@@ -130,8 +147,8 @@ read them as tested snapshots, not as a claim that Stage 4.52.0 shares every
|
|
|
130
147
|
4.24.2 limitation. Query the actual bundled renderer before a V5 claim.
|
|
131
148
|
|
|
132
149
|
Stage case tables require 4.59.0; ESM v8 whole numbers as `long` and the
|
|
133
|
-
pre-v8 out-of-`int` refusal STAGE-ESM-031 require 4.61.0. CLI 3.50.0
|
|
134
|
-
to Stage 4.67.0, so both rules apply. Previous CLI 3.46.1 bundled Screenplay
|
|
150
|
+
pre-v8 out-of-`int` refusal STAGE-ESM-031 require 4.61.0. Historical CLI 3.50.0
|
|
151
|
+
defaulted to Stage 4.67.0; current CLI 3.53.1 defaults to 4.73.1, so both rules apply. Previous CLI 3.46.1 bundled Screenplay
|
|
135
152
|
4.130.0 and Stage 4.52.0; neither rule applied there. `cratis run --tag 4.63.2`
|
|
136
153
|
selects a newer sandbox image only (`RunSettings.cs`), not a renderer package.
|
|
137
154
|
`cratis render` has a statically bundled target (`RenderSettings.cs`,
|
|
@@ -160,8 +177,9 @@ specifications, UI composition and `diagnostics.md`.
|
|
|
160
177
|
Stage 4.24.1/4.24.2. Those old negative v7 probes do not describe CLI 3.41.0.
|
|
161
178
|
- CLI before 3.28.2 bundled Screenplay 4.60.1: false cascade PLAY0285, v6 refusal
|
|
162
179
|
and dynamic-root initialization bug. The roots bug was fixed in 4.63.2.
|
|
163
|
-
- CLI 3.28.2 file validation ignored imports
|
|
164
|
-
|
|
180
|
+
- CLI 3.28.2 file validation ignored imports (cli#244, closed by PR #258): later CLI releases compile
|
|
181
|
+
the file as an application root together with its imports. Folder mode stays the recommended check;
|
|
182
|
+
validate the complete root.
|
|
165
183
|
- Older standalone empty-folder probes exited 0. Current validation still needs
|
|
166
184
|
a nonzero file count, and specification execution needs an expected selection.
|
|
167
185
|
|
|
@@ -174,7 +192,10 @@ preserve assigned identities; do not reconstruct them from names.
|
|
|
174
192
|
|
|
175
193
|
A render manifest's `semanticRevision` is a different provenance value, made
|
|
176
194
|
with the render name and bundled compiler. Do not compare it directly to MCP
|
|
177
|
-
`modelRevision`. Compare successive renders with the same identity and inputs
|
|
195
|
+
`modelRevision`. Compare successive renders with the same identity and inputs, or use
|
|
196
|
+
`cratis render ... --check` (CLI 3.44.0 or later). Descriptions and event documentation render as XML
|
|
197
|
+
doc comments, so editing them changes managed-file hashes (a `--check` exit 6) but not the executable
|
|
198
|
+
model revision.
|
|
178
199
|
|
|
179
200
|
## Upgrade checklist
|
|
180
201
|
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
{ "kind": "skill-contains", "value": "Composite read-model keys/query blocks are also still PLAY0268", "file": "references/versions.md" },
|
|
11
11
|
{ "kind": "skill-contains", "value": "the **whole source, stream and stream id**", "file": "references/production-routes-and-filters.md" },
|
|
12
12
|
{ "kind": "play-compiles" },
|
|
13
|
-
{ "kind": "skill-contains", "value": "4.
|
|
13
|
+
{ "kind": "skill-contains", "value": "4.139.0" },
|
|
14
|
+
{ "kind": "skill-contains", "value": "Published v12" },
|
|
15
|
+
{ "kind": "skill-contains", "value": "PLAY0671", "file": "references/diagnostics.md" },
|
|
14
16
|
{ "kind": "skill-contains", "value": "PLAY0653", "file": "references/diagnostics.md" },
|
|
15
17
|
{ "kind": "skill-contains", "value": "PLAY0646", "file": "references/diagnostics.md" },
|
|
16
18
|
{ "kind": "skill-contains", "value": "PLAY0595", "file": "references/diagnostics.md" },
|
|
@@ -23,7 +25,10 @@
|
|
|
23
25
|
{ "kind": "skill-contains", "value": "4.66.0" },
|
|
24
26
|
{ "kind": "skill-contains", "value": "references/generated-responses-example.md" },
|
|
25
27
|
{ "kind": "skill-contains", "value": "Operations and exact numeric" },
|
|
26
|
-
{ "kind": "skill-contains", "value": "
|
|
28
|
+
{ "kind": "skill-contains", "value": "`STAGE-ESM-028`/`029`, not a blanket compiler refusal" },
|
|
29
|
+
{ "kind": "skill-contains", "value": "cratis screenplay validate --executable" },
|
|
30
|
+
{ "kind": "skill-contains", "value": "XML doc comments" },
|
|
31
|
+
{ "kind": "skill-contains", "value": "Stage 4.73.1 rendered backend", "file": "references/versions.md" },
|
|
27
32
|
{ "kind": "skill-contains", "value": "cratis screenplay validate" },
|
|
28
33
|
{ "kind": "skill-contains", "value": "cli#244" },
|
|
29
34
|
{ "kind": "skill-contains", "value": "`notifications/initialized`" },
|
|
@@ -5,5 +5,5 @@ Third-party notices
|
|
|
5
5
|
|
|
6
6
|
This skill adapts material from agentic-engineer by Martin Dilger and Nebulit GmbH
|
|
7
7
|
(https://github.com/Nebulit-GmbH/agentic-engineer, commit 07b0f30648d663cb588d7e2c7aa031af9dfc21f2;
|
|
8
|
-
https://nebulit.de), used with the
|
|
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.
|
|
@@ -37,8 +39,8 @@ CLI 3.43.0 with its default `cratis/stage:4.52.0` and bundled Screenplay 4.127.0
|
|
|
37
39
|
the executed vector renders on Scene 4.15.0. Packages published since are newer than
|
|
38
40
|
that vector and are not claimed verified: Scene 4.17.0, Screenplay 4.133.1, Stage
|
|
39
41
|
4.64.0, previous CLI 3.46.1 (bundled Screenplay 4.130.0; its then-default Stage was
|
|
40
|
-
4.52.0) and Studio 0.152.2. Current pins
|
|
41
|
-
|
|
42
|
+
4.52.0) and Studio 0.152.2. Current pins:
|
|
43
|
+
`cratis-screenplay-toolchain/references/versions.md`.
|
|
42
44
|
All three levels hold for the canonical `ScreenComposition` corpus on the historical vector:
|
|
43
45
|
|
|
44
46
|
- authoring and executable admission: MCP opens it with `sourceSuccess true`,
|
|
@@ -55,22 +57,25 @@ Still true: a guarded Close action and a double-click interaction are refused
|
|
|
55
57
|
(`STAGE-SCENE-ACTION-001`, `STAGE-SCENE-INTERACTION-001`, defined from Stage
|
|
56
58
|
4.51 through 4.57) and recorded as unsupported, never emulated; Studio production
|
|
57
59
|
Play proof is pending a test-account decision. Refusing an unresolvable UI
|
|
58
|
-
profile and recovering a rendered application shipped in Cratis/cli#301.
|
|
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).
|