@cratis/pi 7.22.0 → 7.24.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/skills/cratis-application-slice-conformance/SKILL.md +1 -1
- package/package/corpus/skills/cratis-application-slice-conformance/references/contract-and-precedence.md +5 -5
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +13 -4
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +3 -3
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/cases-to-specify.md +1 -1
- 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/integration-contracts.md +1 -1
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/realization-and-gap-fill.md +5 -3
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/translation-patterns.md +1 -1
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +4 -3
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +37 -36
- package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +154 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +48 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +1 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/verification.json +6 -0
- package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +16 -8
- package/package/corpus/skills/cratis-screenplay-discovery/references/event-naming.md +1 -1
- package/package/corpus/skills/cratis-screenplay-discovery/references/facilitation.md +5 -4
- package/package/corpus/skills/cratis-screenplay-discovery/references/human-workshop.md +1 -1
- package/package/corpus/skills/cratis-screenplay-discovery/references/interview-questions.md +2 -2
- package/package/corpus/skills/cratis-screenplay-discovery/references/personas-and-causes.md +7 -4
- package/package/corpus/skills/cratis-screenplay-discovery/references/plotting-and-handoff.md +8 -7
- package/package/corpus/skills/cratis-screenplay-discovery/references/storming-loop.md +2 -2
- package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +13 -3
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/naming-primitives.md +5 -3
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/nine-steps.md +1 -2
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +3 -1
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +11 -3
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/loss-report-template.md +1 -1
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/rule-modeling.md +4 -4
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/signal-to-intent.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +10 -6
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +33 -6
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +28 -6
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +108 -9
- package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +23 -7
- package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +11 -10
- package/package/corpus/skills/cratis-screenplay-model-review/references/report-template.md +5 -1
- package/package/corpus/skills/cratis-screenplay-model-review/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/SKILL.md +5 -5
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/completeness-self-check.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/opt-in.md +7 -5
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/phases.md +4 -4
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/provenance.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/reasoning-notes.md +24 -19
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/stop-or-assume.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/verdicts-and-modes.md +5 -3
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/vocabulary-map.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/worked-example.md +15 -9
- package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +11 -1
- package/package/corpus/skills/cratis-screenplay-read-surface/references/guarded-actions.md +4 -0
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +7 -6
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/drift-and-ledger.md +1 -1
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +3 -3
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +25 -9
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/coverage-matrix.md +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-design.md +5 -0
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-catalogue.md +7 -4
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-examples.md +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-workshop.md +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +22 -8
- package/package/corpus/skills/cratis-screenplay-slice-design/references/command-inventory.md +6 -4
- package/package/corpus/skills/cratis-screenplay-slice-design/references/field-lineage.md +2 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/references/model-reasoning.md +87 -0
- package/package/corpus/skills/cratis-screenplay-slice-design/references/provenance.md +1 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md +2 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/references/review-questions.md +2 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/references/rule-layers.md +12 -11
- package/package/corpus/skills/cratis-screenplay-slice-design/references/slicing.md +3 -3
- package/package/corpus/skills/cratis-screenplay-slice-design/references/worked-example.md +9 -3
- package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +23 -6
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +67 -1
- package/package/corpus/skills/cratis-screenplay-specifications/references/persona-callers-and-cases.md +117 -0
- package/package/corpus/skills/cratis-screenplay-specifications/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +32 -17
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/boundaries.md +3 -3
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/chronicle-boundaries.md +11 -6
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/consistency-and-concurrency.md +24 -11
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/evolution.md +2 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +9 -0
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +3 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +12 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +12 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +124 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +8 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +19 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +7 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +22 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +21 -0
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +22 -5
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +7 -6
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +20 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +6 -0
- package/package/corpus/skills/cratis-screenplay-ui-composition/SKILL.md +4 -2
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/guarded-interactions.md +71 -0
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +7 -4
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/rendered-application.md +17 -6
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
- Admission
|
|
6
6
|
- Declare and route
|
|
7
7
|
- Specification routes
|
|
8
|
+
- Canonical keys and evolution
|
|
8
9
|
- Boundaries
|
|
9
10
|
|
|
10
11
|
## Admission
|
|
@@ -82,6 +83,26 @@ Typed event examples may supply a route, replaced as a whole by step overrides;
|
|
|
82
83
|
`for` is independent. No spelling restores a wildcard after an example supplies
|
|
83
84
|
a route. See `cratis-screenplay-specifications` for fixture provenance.
|
|
84
85
|
|
|
86
|
+
## Canonical keys and evolution
|
|
87
|
+
|
|
88
|
+
At Screenplay 4.127.0, stream-id literals on command routes (PLAY0504) and
|
|
89
|
+
specification routes (PLAY0549) must be nonempty, well-formed Unicode NFC text;
|
|
90
|
+
invalid text is refused, never normalized. In Double numeric mode integer ids
|
|
91
|
+
are within ±(2^53−1); Exact mode has no such bound but still refuses binding.
|
|
92
|
+
Known routed command identifiers and production destination types must equal
|
|
93
|
+
the source's nominal identifier type (PLAY0504 is an error, not a warning).
|
|
94
|
+
Allocation is typed by the generated identifier, or without one requires a
|
|
95
|
+
UUID-based source. Unrouted commands are unaffected.
|
|
96
|
+
|
|
97
|
+
Composite schemas declare `streamId` with at least two named scalar parts.
|
|
98
|
+
Command routes map every part once; specification parts are literals only.
|
|
99
|
+
Format each part by the portable scalar rules, escape `%` to `%25` and `|` to
|
|
100
|
+
`%7C`, then join with `|` in declaration order; decoding is strict. Specification
|
|
101
|
+
route contradictions compare canonical values part by part (UUID case variants
|
|
102
|
+
are equal). Changing a stored stream's key schema needs a new stream identity
|
|
103
|
+
or migration. Keep hand-joined legacy ids as scalar text: never split by guesswork.
|
|
104
|
+
Authority: v4.127.0 `event-sources.md`, `diagnostics.md`, decision 0033.
|
|
105
|
+
|
|
85
106
|
## Boundaries
|
|
86
107
|
|
|
87
108
|
Reference routing does not prove target deployment, concurrency or protected
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Traps (one line each, with the fix)
|
|
2
2
|
|
|
3
|
-
Current pins: Screenplay 4.
|
|
3
|
+
Current pins: Screenplay 4.127.0 / CLI 3.41.0 (`versions.md`). Unless explicitly
|
|
4
4
|
updated below, [probed]/[source] rows retain their historical v4.66.0/CLI 3.28.2
|
|
5
5
|
scope; negative capability claims there are not current verdicts. Current routes
|
|
6
6
|
bind as v8, v7 reaches Stage planning, reference tests have CLI/MCP routes, and
|
|
@@ -29,7 +29,7 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
|
|
|
29
29
|
21. Quoted `import "x/*.play"` = my files; unquoted `import Ctx.Event` = another context's contract (does not bind: PLAY0268). [probed]
|
|
30
30
|
22. Construct keywords are closed (`aggregate`, `saga`, `workflow` do not exist): PLAY0029 or PLAY0001/0022/0024.
|
|
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
|
-
24.
|
|
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
34
|
26. Operations/systems and exact numbers remain unadmitted. Sources/streams/routes bind and reference-execute as ESM v8 at 4.125.0; generated values/responses bind as v7. CLI 3.41.0 renders through v7 only, with construct-specific Stage refusals. Consult released grammar rather than inventing syntax from decisions.
|
|
35
35
|
27. Translate vs Automation is semantic: external facts become local facts in `Translate`; in-app event-to-event goes in `Automation`.
|
|
@@ -43,8 +43,25 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
|
|
|
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
44
|
35. `description`/`documentation` are authoring metadata: board, MCP and Prologue show them; `cratis render` never does (Stage#178). A rule only in prose is unenforced in rendered code; make it a rule layer, a spec or a recorded target requirement.
|
|
45
45
|
36. One unadmitted construct (operations, exact numbers, refusal/redelivery) blocks whole-model binding. Routing is admitted v8, not one of those constructs; CLI render's v7 boundary is a separate refusal. Do not remove routing or authorization to render a model.
|
|
46
|
-
37. Personas
|
|
47
|
-
38. A rule that depends on stored state is `reads <View>` + `require <expr> message "..."` (stated intent; PLAY0268/0271 at binding are expected in design mode). The slice `description` must mark it NOT enforced in the model today (Screenplay#129/#209) and name the target: Arc `[ProtectedDecision]` + `DecisionRead<T>` (Arc v22.39.0 and later;
|
|
46
|
+
37. Personas remain outside ESM bytes, but 4.127.0 specifications accept `given caller as <Persona>`: one authenticated deterministic policy witness, not every matching caller. Inspect the chosen `or` branch; use explicit callers when synthesis is refused.
|
|
47
|
+
38. A rule that depends on stored state is `reads <View>` + `require <expr> message "..."` (stated intent; PLAY0268/0271 at binding are expected in design mode). The slice `description` must mark it NOT enforced in the model today (Screenplay#129/#209) and name the target: Arc `[ProtectedDecision]` + `DecisionRead<T>` (Arc v22.39.0 and later; available to gap-fill on Stage 4.51.3's Arc 22.50.5/Chronicle 19.32.0, not emitted protection), Chronicle DCB (`concurrency` scope), or a constraint where one fits. Forbidden: caller-supplied copies of state in `require`, boolean attestation inputs (`confirmsX == true`), rules hidden in `handler`/implementation-hint prose. An unguarded materialized read is unsafe for a protected decision.
|
|
48
|
+
|
|
49
|
+
Current identity/compliance traps (v4.127.0 `identity.md`, `concepts.md`, `events.md`,
|
|
50
|
+
`purposes.md`, `diagnostics.md`):
|
|
51
|
+
- `$identity` built-ins alias `$context.identity`; declared detail reads are PLAY0268,
|
|
52
|
+
while an identity block alone does not block readiness. `scoped to` is opaque,
|
|
53
|
+
not a detail reference. Query sources need keyed single compatible results and
|
|
54
|
+
token-only keys/gates that do not depend on details.
|
|
55
|
+
- `pii personal` repeats one marker (PLAY0653). Legacy markers are accepted but
|
|
56
|
+
deprecated (PLAY0565); repairs preserve notes, never invent legal content.
|
|
57
|
+
- Event `subject` is report-only (PLAY0270), not emitted C# `[Subject]` or runtime
|
|
58
|
+
lineage. Keep stream identity, data subject, encryption scope and policy subject apart.
|
|
59
|
+
- Purpose metadata/checks/records declare processing, not lawfulness or retention.
|
|
60
|
+
- PLAY0504 is an error; stream-id text is nonempty well-formed NFC (refuse, never
|
|
61
|
+
normalize), Double integer ids are within ±(2^53−1); canonical UUID comparison
|
|
62
|
+
ignores case. Protected concepts cannot be stream ids/parts/mapping sources (PLAY0515).
|
|
63
|
+
- Run `--check privilege` on elevated event-trigger paths; opaque producers are
|
|
64
|
+
unknown, not safe. Arc needs `[ExecuteCommandsAsSystem]` to supply a principal.
|
|
48
65
|
|
|
49
66
|
The SKILL.md top 12: 1, 4, 5, 6, 7, 10, 12, 13, 17, 18, 20, 21 (+ mode/version notes there). Traps 39 to 44 are tool traps added at the 4.66.0 pin.
|
|
50
67
|
39. A handler never binds: PLAY0268 "Command '<n>' handler requires a constrained implementation attachment", with a file, a fence, `implementation` or `hint` alike. `implementation` and `hint` are accepted on a command handler, an operation execute/compensate phase and (from 4.65.0) a command property named rule, and are rejected on concept rules, built-in property rules and whole-command `require`/`validate` bodies; on a handler they are authoring intent only (no execution, lock or confirmation). A handler slice is gap-fill, not a customization of a rendered slice. [source, probed]
|
|
@@ -52,4 +69,4 @@ The SKILL.md top 12: 1, 4, 5, 6, 7, 10, 12, 13, 17, 18, 20, 21 (+ mode/version n
|
|
|
52
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]
|
|
53
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]
|
|
54
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]
|
|
55
|
-
44. `cratis render` neither builds nor tests; `--name` is required for plain source; `.cratis-render/` is control state and is never staged; Stage
|
|
72
|
+
44. `cratis render` neither builds nor tests; `--name` is required for plain source; `.cratis-render/` is control state and is never staged; Stage 4.51.3 rendered apps pin Arc 22.50.5/Chronicle 19.32.0 (`[ProtectedDecision]` available to gap-fill, not automatically emitted). `cratis` file mode versus folder mode (trap 6) and a stale `cratis` on `PATH` (`which -a cratis`) both silently change what a verdict means. [source]
|
|
@@ -28,7 +28,7 @@ V3 are read from the MCP server or from a render, V1 and V5 from the CLIs.
|
|
|
28
28
|
|
|
29
29
|
| Tool | Command | Pass | Fail |
|
|
30
30
|
| --- | --- | --- | --- |
|
|
31
|
-
| Standalone 4.
|
|
31
|
+
| Standalone 4.127.0 (preferred) | `screenplay <model-root> --warnaserror --no-color` | exit 0 and a nonzero compiled file count | exit 1 defects; exit 2 could not run/invalid arguments or input |
|
|
32
32
|
| cratis (fallback) | `cratis screenplay validate <model-folder> --warnings-as-errors -o json-compact` | exit 0 | exit 5; exit 1 means missing path or no files |
|
|
33
33
|
|
|
34
34
|
- Validate the complete application root, not an independently selected fragment.
|
|
@@ -40,7 +40,8 @@ V3 are read from the MCP server or from a render, V1 and V5 from the CLIs.
|
|
|
40
40
|
Exit/`--warnaserror` apply to that reported set; inspect the separate whole
|
|
41
41
|
application counts before a whole-model claim. Unknown/ambiguous scopes exit 2.
|
|
42
42
|
- `--check <names>` (repeatable) or `--check all` opts into completeness warnings
|
|
43
|
-
PLAY0530–PLAY0537
|
|
43
|
+
including PLAY0530–PLAY0537, purposes (PLAY0602–0606) and privilege (PLAY0652).
|
|
44
|
+
Whole-source errors skip them; a skipped check is not passed.
|
|
44
45
|
Names/codes, coverage limits and editor support: `diagnostics.md`.
|
|
45
46
|
- Warnings are failures here. PLAY0029 (a construct dropped silently) and the unresolved-name
|
|
46
47
|
warnings are the defects this verdict exists to catch.
|
|
@@ -62,7 +63,7 @@ MCP reports `V2 not run: no MCP in this agent` unless the brief supplies fresh o
|
|
|
62
63
|
source revision).
|
|
63
64
|
4. Report the codes with counts, blocking (error severity) apart from informational. A list
|
|
64
65
|
with blocking entries is a valid V2 result (`V2 read: 6 blocking, PLAY0268 x3 list query,
|
|
65
|
-
|
|
66
|
+
pii ...`); it is the evidence for a "V3 blocked" report. The view also lists
|
|
66
67
|
information-severity diagnostics (PLAY0269 deferred UI, PLAY0270 authoring metadata such as
|
|
67
68
|
descriptions, personas and screens) on models that bind; they do not block.
|
|
68
69
|
|
|
@@ -79,9 +80,9 @@ comparison needs it). Binding is what makes a model renderable at all. V3 means
|
|
|
79
80
|
never "specifications pass".
|
|
80
81
|
|
|
81
82
|
- Report the ESM version the model needs: `V3 ready (screenplay 4.68.0, ESM v6)`,
|
|
82
|
-
`V3 blocked: PLAY0268 x3 (list query,
|
|
83
|
-
- A blocked V3 is not repaired by deleting protection or domain rules. Never remove
|
|
84
|
-
|
|
83
|
+
`V3 blocked: PLAY0268 x3 (list query, pii) - design scope kept`.
|
|
84
|
+
- A blocked V3 is not repaired by deleting protection or domain rules. Never remove `pii`,
|
|
85
|
+
`secret`, authorization, list queries, automations or rules to reach V3; record the
|
|
85
86
|
slice and the code in the gap list.
|
|
86
87
|
- A model is executable only on the compiler that bound it. V3 does not carry
|
|
87
88
|
to render admission: CLI 3.41.0 passes up to ESM v7 to Stage, refuses newer
|
|
@@ -17,12 +17,13 @@ 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.
|
|
20
|
+
| Screenplay language, standalone tool and MCP | **4.127.0** (`e70435a4`) | Released tag `v4.127.0`; installed `screenplay --version`; changed identity/compliance examples compiled |
|
|
21
21
|
| cratis CLI | **3.41.0** | Released tag `v3.41.0`; installed `cratis --version` |
|
|
22
22
|
| Screenplay bundled by CLI | **4.114.0** | CLI `v3.41.0:Directory.Packages.props` |
|
|
23
23
|
| Stage bundled by CLI | **4.51.3** | Same file; the CLI's runtime image follows its Stage package version |
|
|
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
|
+
| 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 |
|
|
26
27
|
|
|
27
28
|
Check the actual executable before relying on this table: `screenplay --version`,
|
|
28
29
|
`cratis --version`, MCP `initialize` → `serverInfo.version`. An older executable
|
|
@@ -30,7 +31,7 @@ on PATH can shadow a newer install; inspect `which -a cratis`.
|
|
|
30
31
|
|
|
31
32
|
## Two compilers, one rule
|
|
32
33
|
|
|
33
|
-
Standalone Screenplay 4.
|
|
34
|
+
Standalone Screenplay 4.127.0 and the CLI's 4.114.0 bundle are different releases.
|
|
34
35
|
Prefer standalone for the current language checks; CLI owns generation, Prologue
|
|
35
36
|
and rendering. Name the tool/version with every verdict. No verdict transfers
|
|
36
37
|
between differing compilers without checking the same inputs there.
|
|
@@ -62,7 +63,7 @@ for identity-stable selection.
|
|
|
62
63
|
|
|
63
64
|
## Admission boundaries
|
|
64
65
|
|
|
65
|
-
Screenplay `v4.
|
|
66
|
+
Screenplay `v4.127.0:Source/DotNET/Screenplay/Semantics/Versions.cs` supports schema
|
|
66
67
|
pairs through v10. Generated values/responses and policy negation select v7;
|
|
67
68
|
sources/streams and command/specification routes select v8; reaction
|
|
68
69
|
`runs as system [role "<Role>"]` selects v10 and reference-executes on 4.125.0.
|
|
@@ -86,6 +87,22 @@ The renderable-subset and Stage references retain older probes explicitly;
|
|
|
86
87
|
read them as tested snapshots, not as a claim that Stage 4.51.3 shares every
|
|
87
88
|
4.24.2 limitation. Query the actual bundled renderer before a V5 claim.
|
|
88
89
|
|
|
90
|
+
At 4.127.0, `$identity` aliases built-in caller paths; declared identity details
|
|
91
|
+
remain metadata and their executable reads report PLAY0268. Bare `pii`/`secret`
|
|
92
|
+
still block binding; `personal` aliases `pii`. Legacy markers are accepted with
|
|
93
|
+
PLAY0565 information, duplicates warn PLAY0653. Event `subject` and processing
|
|
94
|
+
purposes are report-only metadata (PLAY0270); purpose checks/reports do not prove
|
|
95
|
+
lawfulness or enforce retention. See command-surface context/compliance references.
|
|
96
|
+
|
|
97
|
+
Authoring features source-checked in standalone 4.127.0: `propose-source`,
|
|
98
|
+
`find-specification-obligations`, `find-modeling-smells`, specification descriptions,
|
|
99
|
+
container/command/read-model/reaction documentation, routed redelivery locators,
|
|
100
|
+
guarded item interactions, persona callers and named case tables. Discover schemas
|
|
101
|
+
in the older CLI bundle rather than assuming parity. Cases/persona callers expand
|
|
102
|
+
to ordinary ESM; metadata changes no executable bytes. Redelivery remains
|
|
103
|
+
unadmitted even when its route is valid. Details: model-authoring MCP references,
|
|
104
|
+
specifications, UI composition and `diagnostics.md`.
|
|
105
|
+
|
|
89
106
|
## Historical probes
|
|
90
107
|
|
|
91
108
|
- Screenplay 4.68.0 admitted v7; CLI 3.28.2/3.28.3 bundled 4.66.0 (v6 at most),
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
"input": "Check a Screenplay model folder: which compiler should I run, what do V1 to V3 mean, and what does the cratis CLI do with my Automation slice?",
|
|
4
4
|
"fixtures": [],
|
|
5
5
|
"assertions": [
|
|
6
|
+
{ "kind": "skill-contains", "value": "4.127.0" },
|
|
7
|
+
{ "kind": "skill-contains", "value": "PLAY0653", "file": "references/diagnostics.md" },
|
|
8
|
+
{ "kind": "skill-contains", "value": "PLAY0646", "file": "references/diagnostics.md" },
|
|
9
|
+
{ "kind": "skill-contains", "value": "PLAY0595", "file": "references/diagnostics.md" },
|
|
10
|
+
{ "kind": "skill-contains", "value": "PLAY0652", "file": "references/diagnostics.md" },
|
|
11
|
+
{ "kind": "skill-contains", "value": "PLAY0504 | E", "file": "references/diagnostics.md" },
|
|
6
12
|
{ "kind": "skill-contains", "value": "references/versions.md" },
|
|
7
13
|
{ "kind": "skill-contains", "value": "PLAY0029" },
|
|
8
14
|
{ "kind": "skill-contains", "value": "--warnaserror" },
|
|
@@ -240,8 +240,10 @@ acts. Three words carry it:
|
|
|
240
240
|
| **Action** | a closed set: `execute`, `navigate to`/`navigate back`, `open dialog`/`close dialog`, `refresh`, `set … to`, `notify`, `confirm`, `raise` |
|
|
241
241
|
| **Behavior** | a bundle of trigger-to-action bindings; inline (`on …`) or named (`behavior` + `uses`) |
|
|
242
242
|
|
|
243
|
-
|
|
244
|
-
|
|
243
|
+
Guarded alternatives and `where` deprecation:
|
|
244
|
+
[guarded interactions](references/guarded-interactions.md).
|
|
245
|
+
|
|
246
|
+
Complete named/inline behavior example:
|
|
245
247
|
|
|
246
248
|
```screenplay
|
|
247
249
|
concept InvoiceId : Uuid
|
package/package/corpus/skills/cratis-screenplay-ui-composition/references/guarded-interactions.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<!-- Copyright (c) Cratis. All rights reserved. -->
|
|
2
|
+
<!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
|
|
3
|
+
|
|
4
|
+
# Choose a gesture's whole action list
|
|
5
|
+
|
|
6
|
+
`on click`, `on double click` and `on select` accept ordered block-form `when`
|
|
7
|
+
alternatives and an optional final `otherwise`. Use the same strict condition
|
|
8
|
+
language and data-item subject as [guarded screen actions](../../cratis-screenplay-read-surface/references/guarded-actions.md):
|
|
9
|
+
`item.<path>` compared with a literal, joined by `and`, `or` and parentheses.
|
|
10
|
+
At least one `when` and a nonempty action list in every branch are required.
|
|
11
|
+
Do not mix alternatives with plain actions or `where`; a one-line
|
|
12
|
+
`when … execute …` belongs to labeled actions, not interactions.
|
|
13
|
+
|
|
14
|
+
This complete model validates on standalone Screenplay 4.127.0:
|
|
15
|
+
|
|
16
|
+
```screenplay
|
|
17
|
+
module Billing
|
|
18
|
+
feature Invoices
|
|
19
|
+
slice StateView InvoiceHistory
|
|
20
|
+
event InvoiceRecorded
|
|
21
|
+
status String
|
|
22
|
+
readmodel InvoiceView
|
|
23
|
+
invoiceId String
|
|
24
|
+
status String
|
|
25
|
+
projection Invoices => InvoiceView
|
|
26
|
+
from InvoiceRecorded
|
|
27
|
+
invoiceId = $eventSourceId
|
|
28
|
+
status = status
|
|
29
|
+
query InvoiceById => InvoiceView optional
|
|
30
|
+
by invoiceId String
|
|
31
|
+
screen InvoiceDetails
|
|
32
|
+
data InvoiceView via query InvoiceById by invoiceId
|
|
33
|
+
table InvoiceView
|
|
34
|
+
column status
|
|
35
|
+
on double click
|
|
36
|
+
when item.status == "draft"
|
|
37
|
+
notify info "The draft can be edited"
|
|
38
|
+
refresh InvoiceById
|
|
39
|
+
otherwise
|
|
40
|
+
notify info "Only drafts can be edited"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The first matching branch runs once on the rendered item at gesture time, without
|
|
44
|
+
refetch or re-evaluation while its list runs. No match uses fallback or does
|
|
45
|
+
nothing; **no subject does nothing, including fallback**. Failure, denial or an
|
|
46
|
+
unavailable command never falls through; backend commands retain their rules.
|
|
47
|
+
Unlike labeled actions, no choice was displayed beforehand to refresh at click.
|
|
48
|
+
|
|
49
|
+
A table click/double click uses the activated row; select uses the newly selected
|
|
50
|
+
item, and clearing selection runs nothing. Elsewhere use the nearest enclosing
|
|
51
|
+
single item or selected row, with guarded actions' sibling precedence. Check named
|
|
52
|
+
behaviors at each `uses` site. Component `context` or `selectedItem` bindings do
|
|
53
|
+
not supply the subject in this version; unresolved/equally near subjects report
|
|
54
|
+
PLAY0346.
|
|
55
|
+
|
|
56
|
+
Submit, event, change, interval and application triggers have no alternatives.
|
|
57
|
+
The one-line `on row-click navigate to … by …` remains unchanged. Opaque `where`
|
|
58
|
+
on click/double click/select is deprecated (PLAY0564): strict item conditions warn
|
|
59
|
+
and C# offers a typed repair to one `when` with no fallback; other guard text is
|
|
60
|
+
Information without repair. Other triggers' `where` remains unchanged. Repairs
|
|
61
|
+
require individual review, canonical formatting, preserve comments and refuse
|
|
62
|
+
comment loss; TypeScript diagnoses but offers no repair. PLAY0563 has a C# repair
|
|
63
|
+
expanding a one-line alternative to the block form. Neither repair supports
|
|
64
|
+
pinned evidence.
|
|
65
|
+
|
|
66
|
+
UI is deferred from backend ESM (PLAY0269), not executable gesture proof. The
|
|
67
|
+
board draws a static prototype; renderers must explicitly admit alternatives or
|
|
68
|
+
report unsupported, never flatten them into plain actions.
|
|
69
|
+
|
|
70
|
+
Authority: Screenplay v4.127.0 `interactions.md`, `diagnostics.md`,
|
|
71
|
+
`mcp/authoring-tools.md`; decision 0048.
|
|
@@ -52,8 +52,11 @@ Everything below was read at those tags (`Source/Rendering.Cratis/**`, `README.m
|
|
|
52
52
|
[references/render-example.md](references/render-example.md) was rendered, built and
|
|
53
53
|
tested with cratis 3.28.2 (re-run on 3.28.3). Read `references/render-example.md` when you need a complete renderable model and the observed render, build, and test results. The full version table (Screenplay 4.66.0, Arc 22.50.5,
|
|
54
54
|
Chronicle 19.32.0 and the tool split) is in the `cratis-screenplay-toolchain` skill,
|
|
55
|
-
`references/versions.md`.
|
|
56
|
-
|
|
55
|
+
`references/versions.md`. Stage 4.51.3 scaffolds Arc `22.50.5` and Chronicle
|
|
56
|
+
`19.32.0`, with `CratisEmbeddedScreenplayEnabled=false`. `[ProtectedDecision]` and
|
|
57
|
+
`DecisionRead<T>` are available to gap-fill code, not automatically emitted or
|
|
58
|
+
protected by Stage; admission and unit-of-work enrollment still matter. See
|
|
59
|
+
[rendered application](references/rendered-application.md) for the source checks. Screen render
|
|
57
60
|
publication and browser behavior for the canonical corpus are verified on public
|
|
58
61
|
CLI 3.40.7 / `cratis/stage:4.51.1`. Studio 0.141 is released and production runs
|
|
59
62
|
v0.139.0 or later, but production UI automation is pending a
|
|
@@ -68,7 +71,7 @@ The `.play` model is the source of truth; Stage-managed output is derived from i
|
|
|
68
71
|
- Hand-written code goes in `Customizations/` (unmanaged), in a separate project, or in
|
|
69
72
|
an explicitly authorized gap-fill for scope Stage cannot render (`cratis-screenplay-render-and-gap-fill`).
|
|
70
73
|
- A customization never makes a rejected model renderable, and never weakens modeled
|
|
71
|
-
authorization, validation or
|
|
74
|
+
authorization, validation or personal-data and secret markers to get past a refusal.
|
|
72
75
|
- Never claim a whole-application result from a subset of the model.
|
|
73
76
|
|
|
74
77
|
## Publication and recovery
|
|
@@ -135,7 +138,7 @@ Facts that surprise:
|
|
|
135
138
|
|
|
136
139
|
## Historical Stage 4.24 admission
|
|
137
140
|
|
|
138
|
-
Current pins are standalone Screenplay 4.
|
|
141
|
+
Current pins are standalone Screenplay 4.127.0 / CLI 3.41.0 / Stage 4.51.3.
|
|
139
142
|
Routes bind/reference-execute as v8; reaction `runs as` identity as v10.
|
|
140
143
|
CLI renders through v7 only (CLI-RENDER-004 for newer model versions) and its
|
|
141
144
|
older 4.114.0 parser rejects `runs as` (PLAY0137). Stage 4.51.3's direct planner
|
package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/rendered-application.md
CHANGED
|
@@ -7,18 +7,29 @@ render (see [render-example.md](render-example.md)).
|
|
|
7
7
|
|
|
8
8
|
## Scaffold pins
|
|
9
9
|
|
|
10
|
+
The pin rows below are source-checked at Stage `v4.51.3`,
|
|
11
|
+
`Source/Rendering.Cratis/Scaffolding/CratisBackendApplicationScaffoldProfile.cs`,
|
|
12
|
+
`CratisBackendApplicationScaffold.cs` and `CratisFrontendPackageSet.cs`.
|
|
13
|
+
Earlier runtime/customization probes above keep their original labels.
|
|
14
|
+
|
|
10
15
|
| Item | Value |
|
|
11
16
|
| --- | --- |
|
|
12
17
|
| Target framework | .NET 10 (`net10.0`), `Microsoft.NET.Sdk.Web` |
|
|
13
|
-
| Arc packages (`Cratis`, `Cratis.Arc.MongoDB`, Arc testing) | `22.
|
|
14
|
-
| Chronicle client | `Cratis.Chronicle` and `.
|
|
18
|
+
| Arc packages (`Cratis`, `Cratis.Arc.MongoDB`, Arc testing) | `22.50.5` |
|
|
19
|
+
| Chronicle client | `Cratis.Chronicle`, `.AspNetCore` and `.Testing` `19.32.0`, matched to the `cratis/chronicle:19.32.0-development` image in the compose file |
|
|
20
|
+
| Embedded reverse extraction | `CratisEmbeddedScreenplayEnabled=false`: the source `.play` is authoritative |
|
|
15
21
|
| Test packages | xunit, NSubstitute, Cratis.Specifications; **Debug configuration only** (`IsTestProject` when Debug) |
|
|
16
|
-
| Frontend | Vite and React, Components `4.14.0`, Scene `4.
|
|
22
|
+
| Frontend | Vite and React, Components `4.14.0`, Scene `4.10.0`, Fundamentals `7.19.8` |
|
|
17
23
|
| Package management | central package management **off**; `Directory.Packages.props` is managed, do not edit it |
|
|
18
24
|
|
|
19
|
-
Consequences: `[ProtectedDecision]`
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
Consequences: `[ProtectedDecision]` (`Cratis.Arc.Chronicle.ReadModels`) and
|
|
26
|
+
`DecisionRead<T>` / `IDecisionReads` (`Cratis.Chronicle.ReadModels`) are available
|
|
27
|
+
in this scaffold's package set, as is `[ExecuteCommandsAsSystem]`. This is API
|
|
28
|
+
availability, not Stage emission or runtime protection: gap-fill must opt into
|
|
29
|
+
the protected command profile and enroll an admitted projection/key read in the
|
|
30
|
+
active unit of work. Source-checked at Arc v22.50.5 `ProtectedDecisionAttribute.cs`
|
|
31
|
+
and `CommandDecisionReads.cs`, Chronicle v19.32.0 `DecisionRead.cs`/`IDecisionReads.cs`.
|
|
32
|
+
Stage does not turn `.play` `reads`/`require` into protected decisions. Upgrading Arc or Chronicle inside a rendered application is a re-render under a newer
|
|
22
33
|
Stage, not an edit of the managed files. The compose file binds local ports `27017` and
|
|
23
34
|
`35000`, keeps data in the named volumes `chronicle-data` and `chronicle-config`, and
|
|
24
35
|
`docker compose down --volumes` is the only thing that deletes them.
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{ "kind": "skill-contains", "value": "means stop and reconcile" },
|
|
11
11
|
{ "kind": "skill-contains", "value": "STAGE-ESM-016" },
|
|
12
12
|
{ "kind": "skill-contains", "value": "**Render never builds, tests or runs**" },
|
|
13
|
-
{ "kind": "skill-contains", "value": "Arc `22.
|
|
13
|
+
{ "kind": "skill-contains", "value": "Arc `22.50.5`" },
|
|
14
14
|
{ "kind": "skill-contains", "value": "`[ProtectedDecision]`" },
|
|
15
15
|
{ "kind": "skill-contains", "value": "`Customizations/`" },
|
|
16
16
|
{ "kind": "skill-contains", "value": "`Stage__Runtime__Engine=semantic`" },
|