@cratis/pi 7.29.1 → 7.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +9 -4
  2. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/audit-format.md +4 -2
  3. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +3 -3
  4. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +5 -2
  5. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/public-events-and-direction.md +137 -0
  6. package/package/corpus/skills/cratis-screenplay-automations-and-translations/verification.json +5 -1
  7. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +15 -16
  8. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +4 -4
  9. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/product-sources.md +15 -0
  10. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/verification.json +3 -1
  11. package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +8 -9
  12. package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +1 -1
  13. package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +4 -4
  14. package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +2 -2
  15. package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +1 -1
  16. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +2 -2
  17. package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +4 -4
  18. package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +7 -1
  19. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +7 -2
  20. package/package/corpus/skills/cratis-screenplay-model-authoring/references/screen-authoring-workflow.md +5 -3
  21. package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +1 -1
  22. package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +10 -11
  23. package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +1 -1
  24. package/package/corpus/skills/cratis-screenplay-model-review/references/public-keys-and-routes.md +32 -0
  25. package/package/corpus/skills/cratis-screenplay-model-review/verification.json +1 -0
  26. package/package/corpus/skills/cratis-screenplay-projections/SKILL.md +11 -0
  27. package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +19 -16
  28. package/package/corpus/skills/cratis-screenplay-read-surface/references/named-keys.md +122 -0
  29. package/package/corpus/skills/cratis-screenplay-read-surface/verification.json +3 -0
  30. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +9 -6
  31. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +3 -3
  32. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/verification.json +1 -1
  33. package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +11 -0
  34. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +2 -2
  35. package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +32 -9
  36. package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md +20 -13
  37. package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +12 -10
  38. package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +3 -2
  39. package/package/corpus/skills/cratis-screenplay-specifications/references/source-notes.md +16 -0
  40. package/package/corpus/skills/cratis-screenplay-specifications/verification.json +2 -2
  41. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +2 -2
  42. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +2 -2
  43. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/verification.json +1 -1
  44. package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +19 -10
  45. package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +12 -1
  46. package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +55 -3
  47. package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +7 -4
  48. package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +30 -10
  49. package/package/corpus/skills/cratis-screenplay-toolchain/references/production-routes-and-filters.md +119 -0
  50. package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +8 -1
  51. package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +11 -5
  52. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +813 -0
  53. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
  54. package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +7 -5
  55. package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +6 -6
  56. package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +6 -5
  57. package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +56 -28
  58. package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +7 -1
  59. package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +4 -3
  60. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +11 -12
  61. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +14 -3
  62. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/case-tables-and-whole-numbers.md +8 -6
  63. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +3 -1
  64. package/package.json +1 -1
@@ -15,13 +15,15 @@ Sources, streams and command/specification routes bind and reference-execute as
15
15
  `specifications.md`, `Versions.cs`; the complete example below compiled with
16
16
  `--warnaserror` and passed `screenplay test` on 4.125.0.
17
17
 
18
- CLI 3.46.1 renders only model versions up to v7: routed v8 models receive
19
- `CLI-RENDER-004` before planning/publication. This is not a source-validation or
20
- binder refusal. Keep the routed model as contract and gap-fill its realization;
21
- never remove routing to obtain a render. Pins: `versions.md`.
18
+ CLI 3.50.0/Stage 4.67.0 admits through v10 to construct checks, including v8
19
+ routes. Routed read-model/query replay scenarios can still refuse STAGE-ESM-030;
20
+ run admission before promising parity. Previous CLI 3.46.1/Stage 4.52.0 refused
21
+ above v7 with CLI-RENDER-004. Keep routing intact when a target refuses it;
22
+ never remove routing to obtain a render. Pins: `versions.md`. Per-production
23
+ v10 overrides and observer filters: `production-routes-and-filters.md`.
22
24
 
23
25
  The 4.68.0 historical binder refusal (`PLAY0268`, no admitted version then) is
24
- not the current disposition. Systems/operations and exact numbers still report
26
+ not the current disposition. Systems/operations and `numbers exact` source mode still report
25
27
  PLAY0268; they are separate capabilities, not evidence against v8 routing.
26
28
 
27
29
  ## Declare and route
@@ -1,6 +1,6 @@
1
1
  # Traps (one line each, with the fix)
2
2
 
3
- Current pins: Screenplay 4.131.0 / CLI 3.46.1 (`versions.md`). Unless explicitly
3
+ Current pins: Screenplay 4.135.0 / CLI 3.50.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
@@ -15,9 +15,9 @@ 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); current CLI 3.46.1 instead refuses its v10 at render admission (CLI-RENDER-004), and Stage 4.52.0 audits through v7 only. Arc gap-fill uses `[ExecuteCommandsAsSystem]` for returned commands, not a fictional `given caller`.
18
+ 10. Without a declared actor an invocation is caller-less. At 4.125.0 declare reaction `runs as system role "<Role>"` (ESM v10), keep its gate, and reference-test the trusted path. The historical CLI 3.41.0/4.114.0 parser rejected this syntax (PLAY0137); previous CLI 3.46.1 refused v10 at its version gate; CLI 3.50.0/Stage 4.67.0 reaches construct checks but still refuses reaction identity (STAGE-ESM-034). Arc gap-fill uses `[ExecuteCommandsAsSystem]` for returned commands, not a fictional `given caller`.
19
19
  11. A reaction `produces` without `for` lands on the trigger's event source; clock and application triggers need an explicit `for`.
20
- 12. Read-model identity comes from its keyed queries, which must all use the same `by` property: `query XById => RM optional` + `by xId XId` with `xId` a read-model property, and 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`. (PLAY0268 when the keyed queries do not share one `by` property; PLAY0351 when a `given`/`then` readmodel block omits that property.)
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]
22
22
  14. AutoMap is on by default: same-named event properties fill read-model properties silently (scoped: case-insensitive, same type only; flat-bound: exact name, no type check, so a type mismatch invalidates the model). Use `no automap` for control.
23
23
  15. `given readmodel` bypasses the projection; prove a projection with `given` events + `when append`/command + `then readmodel`/`then query`.
@@ -31,8 +31,8 @@ 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 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.46.1 renders through v7 only, with construct-specific Stage refusals. Consult released grammar rather than inventing syntax from decisions.
35
- 27. Translate vs Automation is semantic: external facts become local facts in `Translate`; in-app event-to-event goes in `Automation`.
34
+ 26. Operations/systems and `numbers exact` source mode remain unadmitted. Qualifying retained non-route Double literals instead select published v11 at 4.135.0. Sources/streams/routes bind as v8, public/direction forms v9, identity/overrides/filters v10. CLI 3.50.0 reaches Stage construct checks through v10; v11 needs explicit consumer admission. See `versions.md`.
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.
38
38
  30. Claims compare with `matches` (`claim "dept" matches "Finance"`); `==` is PLAY0120. Conditions with `contains`/`starts with` compile but do not bind. [probed]
@@ -42,7 +42,7 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
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
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
- 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.
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
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
48
 
@@ -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.131.0 (preferred) | `screenplay <model-root> --warnaserror --no-color` | exit 0 and a nonzero compiled file count | exit 1 defects; exit 2 could not run/invalid arguments or input |
31
+ | Standalone 4.135.0 (preferred) | `screenplay <model-root> --warnaserror --no-color` | exit 0 and a nonzero compiled file count | exit 1 defects; exit 2 could not run/invalid arguments or input |
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.
@@ -85,8 +85,9 @@ never "specifications pass".
85
85
  `secret`, authorization, list queries, automations or rules to reach V3; record the
86
86
  slice and the code in the gap list.
87
87
  - A model is executable only on the compiler that bound it. V3 does not carry
88
- to render admission: CLI 3.46.1 passes up to ESM v7 to Stage, refuses newer
89
- models with CLI-RENDER-004, and its v7 corpus receives STAGE-ESM-028/029.
88
+ to render admission: CLI 3.50.0 passes through ESM v10 to Stage construct
89
+ checks; newer models receive CLI-RENDER-004. Public publication and reaction
90
+ identity/filters/production overrides still receive typed Stage refusals.
90
91
  The old 3.28.x/Stage 4.24.x probes remain historical in the subset references.
91
92
 
92
93
  ## V4: reference specifications run
@@ -151,9 +152,9 @@ source change makes earlier verdicts stale.
151
152
 
152
153
  Historical corpus fences were checked with standalone 4.68.0 and CLI 3.28.2.
153
154
  Do not promote those results to current pins without rerunning. Check each changed
154
- complete fence with standalone 4.131.0 `--warnaserror`; run `screenplay test` for
155
+ complete fence with standalone 4.135.0 `--warnaserror`; run `screenplay test` for
155
156
  specification examples, and verify expected-diagnostic examples against their
156
- claimed codes. Where bundle compatibility matters, also check CLI 3.46.1.
157
+ claimed codes. Where bundle compatibility matters, also check CLI 3.50.0.
157
158
  The `// Needs the standalone screenplay compiler (ESM v6)` first-line marker belonged to cratis
158
159
  before 3.28.2, which could not validate those fences; no fence carries it now, and a
159
160
  checker that still skips marked fences under `cratis` skips nothing. Examples meant to execute are also opened through MCP and
@@ -17,10 +17,10 @@ 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.131.0** (`71f3ef37`) | Released tag `v4.131.0` and its published contract; `semantic-diff` source selections in `Source/DotNET/Screenplay.Mcp/McpRevisionDiff.cs` |
21
- | cratis CLI | **3.46.1** (`73578fbf`) | Released tag `v3.46.1`; source-checked, not a new render/browser probe |
22
- | Screenplay bundled by CLI | **4.130.0** | CLI `v3.46.1:Directory.Packages.props`; predates the 4.131.0 `semantic-diff` source objects |
23
- | Stage bundled by CLI | **4.52.0** | Same file; default runtime image `cratis/stage:4.52.0`, confirmed by `Source/Cli.Specs/for_RunCommand/when_running/with_a_folder_and_the_default_stage_tag.cs` |
20
+ | Screenplay language, standalone tool and MCP | **4.135.0** (`b4e46130`) | Released tag `v4.135.0` and its unchanged published contract |
21
+ | cratis CLI | **3.50.0** (`546dea12`) | Released tag `v3.50.0`; source-checked, not a new render/browser probe |
22
+ | Screenplay bundled by CLI | **4.131.0** | CLI `v3.50.0:Directory.Packages.props`; includes `semantic-diff` source objects, not v11 literal lowering |
23
+ | Stage bundled by CLI | **4.67.0** | Same file; renderer and default sandbox image use the same Stage release |
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
26
  | 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 |
@@ -44,7 +44,7 @@ or renderer probes below as results from the newer bundle.
44
44
 
45
45
  ## Two compilers, one rule
46
46
 
47
- Standalone Screenplay 4.131.0 and the CLI's 4.130.0 bundle are different releases.
47
+ Standalone Screenplay 4.135.0 and CLI 3.50.0's 4.131.0 bundle are different releases.
48
48
  Prefer standalone for the current language checks; CLI owns generation, Prologue
49
49
  and rendering. Name the tool/version with every verdict. No verdict transfers
50
50
  between differing compilers without checking the same inputs there.
@@ -76,35 +76,63 @@ for identity-stable selection.
76
76
 
77
77
  ## Admission boundaries
78
78
 
79
- Screenplay `v4.131.0:Source/DotNET/Screenplay/Semantics/Versions.cs` supports schema
80
- pairs through v10. Generated values/responses and policy negation select v7;
81
- sources/streams and command/specification routes select v8; reaction
82
- `runs as system [role "<Role>"]` selects v10 and reference-executes on 4.125.0.
83
- The checked trusted-actor scenario is in captures-and-reactions
84
- `references/invocation-identity.md`. The historical CLI 3.41.0/Screenplay 4.114.0
85
- validation probe rejected its source with PLAY0137 (exit 5); that is not a
86
- 3.46.1 parser claim. Stage 4.52.0's direct planner uses EsmSchemaV7Support
87
- (`Source/Rendering.Cratis/Semantics/SemanticCratisAdmission.cs`) and refuses v10
88
- with STAGE-ESM-016; CLI's version gate separately refuses above v7 with
89
- CLI-RENDER-004. A source construct
90
- still requires explicit binder/runner/provider admission: operations, exact
91
- numeric mode and reaction refusals/redelivery remain authorable but unadmitted
92
- (`PLAY0268`). Never delete those contracts to obtain a green bind.
93
-
94
- CLI 3.46.1 `RenderedSemanticVersions.Newest` is **v7**:
95
- `Source/Cli/Commands/Render/RenderedSemanticVersions.cs`. Models above it get
96
- `CLI-RENDER-004` before planning/publication. v7 generated values/responses reach
97
- Stage admission; they are not universally refused until CLI#261. That issue is
98
- closed. Each unsupported construct still needs a Stage diagnostic, not a silent
99
- omission or inferred support from package versions.
79
+ Screenplay `v4.135.0:Source/DotNET/Screenplay/Semantics/Versions.cs` supports
80
+ schema pairs through v11. Admission selects by use:
81
+
82
+ - v7: generated values/responses and policy negation.
83
+ - v8: sources/streams and command/specification routes.
84
+ - **Released v9 (4.117.0):** public events/origins, Translate direction,
85
+ event-target projections/reducers and events-source captures. Publication folds
86
+ reference-execute; captures and reached opaque reducers return typed Unsupported.
87
+ Public/foreign imports without local shapes remain PLAY0268. See
88
+ automations-and-translations `references/public-events-and-direction.md`.
89
+ - **Released, frozen v10:** reaction `runs as system [role "<Role>"]` first
90
+ shipped in 4.125.0; production route overrides and observer filters shipped in
91
+ 4.129.0. Marked released by #647 in 4.133.2. Decision 0066 records the shipped
92
+ extension as a retroactive exception: consumers admit all three together.
93
+ Checked actor scenario: captures-and-reactions `references/invocation-identity.md`;
94
+ route/filter contract: [production routes and filters](production-routes-and-filters.md).
95
+ - **Published v11 in 4.135.0:** qualifying retained non-route Double-mode literals
96
+ select v11 and execute with corrected decimal lowering (decision 0064). This
97
+ includes whole numbers such as `9007199254740991` and qualifying fractions;
98
+ unused/overridden examples and validation-only values do not select it.
99
+ Already-lossless routes/route-feeding inputs do not select v11. This does not
100
+ admit `numbers exact` source mode or arbitrary precision. At this tag,
101
+ interoperability documentation still says "claimed, unreleased"; this corpus
102
+ follows Versions.cs and decision 0066's publication boundary.
103
+
104
+ Decision 0066 freezes a version when any exposing NuGet/npm package is published,
105
+ including prereleases. Later byte-changing features take the next version at
106
+ admission; a byte-preserving extension under 0004 is the exception. Published
107
+ numbers never change or get reused. Enum member numbers (decision 0065) remain
108
+ unimplemented/unadmitted and have no numbered claim. Concept generation strategies
109
+ and freshness (decision 0054, #616) are accepted but not implemented. Operations,
110
+ exact source numeric mode and reaction refusals/redelivery remain PLAY0268.
111
+ Composite read-model keys/query blocks are also still PLAY0268 (#599), not
112
+ admitted by the 4.129.0 authoring delivery; a single explicit key preserves bytes.
113
+ Never delete these contracts to obtain a green bind.
114
+
115
+ CLI 3.50.0 `RenderedSemanticVersions.Newest` is **v10**:
116
+ `Source/Cli/Commands/Render/RenderedSemanticVersions.cs`. Stage 4.67.0 uses
117
+ EsmSchemaV10Support in `SemanticVersionFeatures.cs` and construct checks in
118
+ `SemanticVersionFeatureAdmission.cs`. v11 gets CLI-RENDER-004 before planning
119
+ (and STAGE-ESM-016 at the direct Stage version gate). Through v10 is not blanket
120
+ render support: public publication STAGE-ESM-032, foreign events/event captures
121
+ 033, reaction identity 034, reaction filters 035 and production overrides 036
122
+ remain refused; reducer filters render. ESM v8 routes reach their own checks.
123
+ Previous CLI 3.46.1/Stage 4.52.0 admitted only through v7 (CLI-RENDER-004 and
124
+ STAGE-ESM-016 respectively). Historical CLI 3.41.0/Screenplay 4.114.0 rejected
125
+ `runs as` at parsing (PLAY0137, exit 5), not a current parser claim. Each unsupported
126
+ construct needs a diagnostic, not silent omission or guessed package support.
100
127
 
101
128
  The renderable-subset and Stage references retain older probes explicitly;
102
129
  read them as tested snapshots, not as a claim that Stage 4.52.0 shares every
103
130
  4.24.2 limitation. Query the actual bundled renderer before a V5 claim.
104
131
 
105
132
  Stage case tables require 4.59.0; ESM v8 whole numbers as `long` and the
106
- pre-v8 out-of-`int` refusal STAGE-ESM-031 require 4.61.0. CLI 3.46.1 defaults
107
- to Stage 4.52.0, so neither new rule applies there. `cratis run --tag 4.63.2`
133
+ pre-v8 out-of-`int` refusal STAGE-ESM-031 require 4.61.0. CLI 3.50.0 defaults
134
+ to Stage 4.67.0, so both rules apply. Previous CLI 3.46.1 bundled Screenplay
135
+ 4.130.0 and Stage 4.52.0; neither rule applied there. `cratis run --tag 4.63.2`
108
136
  selects a newer sandbox image only (`RunSettings.cs`), not a renderer package.
109
137
  `cratis render` has a statically bundled target (`RenderSettings.cs`,
110
138
  `CratisRenderTarget.cs`); a newer renderer needs a CLI release that pins it.
@@ -3,8 +3,14 @@
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": "PLAY0614", "file": "references/diagnostics.md" },
7
+ { "kind": "skill-contains", "value": "PLAY0666", "file": "references/diagnostics.md" },
8
+ { "kind": "skill-contains", "value": "Published v11", "file": "references/versions.md" },
9
+ { "kind": "skill-contains", "value": "Decision 0066 freezes", "file": "references/versions.md" },
10
+ { "kind": "skill-contains", "value": "Composite read-model keys/query blocks are also still PLAY0268", "file": "references/versions.md" },
11
+ { "kind": "skill-contains", "value": "the **whole source, stream and stream id**", "file": "references/production-routes-and-filters.md" },
6
12
  { "kind": "play-compiles" },
7
- { "kind": "skill-contains", "value": "4.131.0" },
13
+ { "kind": "skill-contains", "value": "4.135.0" },
8
14
  { "kind": "skill-contains", "value": "PLAY0653", "file": "references/diagnostics.md" },
9
15
  { "kind": "skill-contains", "value": "PLAY0646", "file": "references/diagnostics.md" },
10
16
  { "kind": "skill-contains", "value": "PLAY0595", "file": "references/diagnostics.md" },
@@ -36,9 +36,10 @@ the package/version you are using proves the new level. Historical verified vect
36
36
  CLI 3.43.0 with its default `cratis/stage:4.52.0` and bundled Screenplay 4.127.0;
37
37
  the executed vector renders on Scene 4.15.0. Packages published since are newer than
38
38
  that vector and are not claimed verified: Scene 4.17.0, Screenplay 4.133.1, Stage
39
- 4.64.0, CLI 3.46.1 (bundled Screenplay 4.130.0; its default Stage is still 4.52.0) and
40
- Studio 0.152.2. All three levels hold for the canonical `ScreenComposition` corpus on
41
- the historical vector:
39
+ 4.64.0, previous CLI 3.46.1 (bundled Screenplay 4.130.0; its then-default Stage was
40
+ 4.52.0) and Studio 0.152.2. Current pins are CLI 3.50.0 (Screenplay 4.131.0 / Stage
41
+ 4.67.0) and standalone Screenplay 4.135.0; see toolchain `references/versions.md`.
42
+ All three levels hold for the canonical `ScreenComposition` corpus on the historical vector:
42
43
 
43
44
  - authoring and executable admission: MCP opens it with `sourceSuccess true`,
44
45
  `semanticSuccess true`, `executableReady true`, and the stdio MCP harness sends
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: cratis-stage-rendering-and-sandbox
3
- description: "What Cratis Stage and `cratis render` actually do with a Screenplay `.play` model today: the narrow model shape Stage 4.52 admits and refuses (`STAGE-ESM-*`, `PLAY0268` render refusals), what it emits (C# Arc/Chronicle backend, React/Vite scaffold with Arc `CommandForm` shell emission over Scene 4.12 typed bindings, Debug specifications), managed publication, `--force` and recovery, authored-UI omission/parity checks, the unmanaged `Customizations/` seam, and the `cratis/stage` sandbox and `cratis/stage-specrunner` job. Use when deciding whether Stage can render a model, reading a blocked render, re-rendering safely, checking generated/runtime screen parity, or running the sandbox. Not for: authoring the model (use `cratis-screenplay-model-authoring`) or the render and gap-fill workflow (use `cratis-screenplay-render-and-gap-fill`)."
3
+ description: "What Cratis Stage and `cratis render` actually do with a Screenplay `.play` model today: the model shape Stage 4.67 admits and refuses (`STAGE-ESM-*`, `PLAY0268` render refusals), what it emits (C# Arc/Chronicle backend, React/Vite scaffold with Arc `CommandForm` shell emission over Scene 4.12 typed bindings, Debug specifications), managed publication, `--force` and recovery, authored-UI omission/parity checks, the unmanaged `Customizations/` seam, and the `cratis/stage` sandbox and `cratis/stage-specrunner` job. Use when deciding whether Stage can render a model, reading a blocked render, re-rendering safely, checking generated/runtime screen parity, or running the sandbox. Not for: authoring the model (use `cratis-screenplay-model-authoring`) or the render and gap-fill workflow (use `cratis-screenplay-render-and-gap-fill`)."
4
4
  license: MIT
5
5
  ---
6
6
 
@@ -42,9 +42,9 @@ argument or an invalid semantic option.
42
42
 
43
43
  | Source | Pin | Notes |
44
44
  | --- | --- | --- |
45
- | Stage | `4.52.0` (`v4.52.0`, `0e4fd87`) as the CLI 3.46.1 default; latest public `4.64.0` (Scene 4.16.0) is not in the verified vector | Default image `cratis/stage:4.52.0`; defines `STAGE-SCENE-ACTION-001` and `STAGE-SCENE-INTERACTION-001`. Case tables need 4.59.0, whole numbers as `long` need 4.61.0; the CLI default renderer applies neither. 4.52.0 was executed on CLI 3.43.0. Earlier executed baselines: 4.51.3, 4.51.1, 4.49.5 and `v4.24.2` (`32dcac4`) |
46
- | cratis CLI | `3.46.1` (`v3.46.1`, `73578fbf`) | Source-checked `Directory.Packages.props` pins Stage 4.52.0 and Screenplay 4.130.0. `cratis run --tag` changes only the sandbox image; newer rendering needs a CLI pinning newer Stage. Executed render/browser/MCP baseline remains 3.43.0 (Stage 4.52.0, Screenplay 4.127.0), not a 3.46.1 probe; refusing an unresolvable UI profile and recovering a rendered application shipped in Cratis/cli#301. Older baselines: 3.41.0, 3.40.7, `v3.28.2` (`141c499`, Cratis/cli#253) |
47
- | Screenplay | bundled `4.130.0`; standalone pin `4.131.0` | Claims through CLI 3.46.1 are 4.130.0 claims; 4.131.0 `semantic-diff` source objects need the standalone MCP |
45
+ | Stage | `4.67.0` as CLI 3.50.0's renderer and default sandbox image | Source-checked, not a new executed vector. Case tables (4.59.0+) and whole numbers as `long` from ESM v8 (4.61.0+) apply to this default. Previous CLI 3.46.1 used Stage 4.52.0 (`0e4fd87`) and applied neither. Stage 4.52.0 defines `STAGE-SCENE-ACTION-001`/`STAGE-SCENE-INTERACTION-001` and was executed on CLI 3.43.0. Earlier executed baselines: 4.51.3, 4.51.1, 4.49.5 and `v4.24.2` (`32dcac4`) |
46
+ | cratis CLI | `3.50.0` (`546dea12`) | `v3.50.0:Directory.Packages.props` pins Stage 4.67.0, Screenplay 4.131.0, Arc.Screenplay 22.54.0, Chronicle 19.32.0, Fundamentals 7.22.8. `cratis run --tag` changes only the sandbox image. Executed render/browser/MCP baseline remains 3.43.0 (Stage 4.52.0, Screenplay 4.127.0), not a 3.50.0 probe; UI-profile refusal and rendered recovery shipped in Cratis/cli#301. Older baselines: 3.41.0, 3.40.7, `v3.28.2` (`141c499`, Cratis/cli#253) |
47
+ | Screenplay | bundled `4.131.0`; standalone pin `4.135.0` | Name the compiler: bundled 4.131.0 lacks v11 literal lowering; `semantic-diff` source objects are in both current tools |
48
48
  | Rendered applications | Arc, Chronicle, Scene 4.15.0, .NET 10 | CLI 3.43.0 renders the canonical corpus to `.cratis-render.json`, backend artifacts, `.frontend/**`, `scene.json`, `src/bindings.ts`. Verify the generated package set for each render before claiming exact Scene runtime parity |
49
49
 
50
50
  The retained admission and runtime evidence below was read at its named tags (`Source/Rendering.Cratis/**`, `README.md`,
@@ -140,13 +140,11 @@ Facts that surprise:
140
140
 
141
141
  ## Historical Stage 4.24 admission
142
142
 
143
- Current pins are standalone Screenplay 4.131.0 / CLI 3.46.1 / Stage 4.52.0.
144
- Routes bind/reference-execute as v8; reaction `runs as` identity as v10.
145
- CLI renders through v7 only (CLI-RENDER-004 for newer model versions).
146
- The historical CLI 3.41.0/4.114.0 parser rejected `runs as` (PLAY0137);
147
- that is not a current parser refusal. Stage 4.52.0's direct planner also audits
148
- only through v7 (STAGE-ESM-016 otherwise). Source/identity contracts
149
- stay intact for gap-fill; source acceptance is not target admission.
143
+ CLI 3.50.0/Stage 4.67.0 reaches construct checks through v10; v11 gets
144
+ CLI-RENDER-004 (direct Stage: STAGE-ESM-016). Public/foreign events, reaction
145
+ identity/filters and production overrides still refuse. Reducer filters render.
146
+ Read [admission](references/admission.md) for STAGE-ESM-032–036 and previous
147
+ CLI/version boundaries. Source acceptance is not V5; keep contracts for gap-fill.
150
148
 
151
149
  The following detailed 4.24.x probes are historical, not current pin claims.
152
150
 
@@ -200,7 +198,8 @@ Stage 4.59.0+ expands a case table to effective `<Specification>_<Case>` names
200
198
  and one generated class per case; normalized path collisions refuse the plan
201
199
  with `STAGE-CRATIS-004`. Failed case results include the case and effective fixtures.
202
200
  Stage 4.61.0+ renders whole numbers as `long` from ESM v8, retains `int` below
203
- v8 and refuses out-of-`int` literals there with `STAGE-ESM-031`. CLI 3.46.1's
201
+ v8 and refuses out-of-`int` literals there with `STAGE-ESM-031`. CLI 3.50.0's
202
+ Stage 4.67.0 default applies both rules. Previous CLI 3.46.1's
204
203
  Stage 4.52.0 renderer applies neither new rule. Read
205
204
  [case tables and whole numbers](references/case-tables-and-whole-numbers.md)
206
205
  for complete examples, stored-schema consequences and the sandbox-only `--tag` override.
@@ -10,9 +10,20 @@
10
10
  - Source disagreements (trust the code)
11
11
 
12
12
  Current pins are in `cratis-screenplay-toolchain` `references/versions.md`:
13
- Standalone Screenplay is 4.131.0; CLI 3.46.1 bundles Stage 4.52.0 / Screenplay
14
- 4.130.0 / Arc.Screenplay 22.54.0 / Chronicle 19.32.0 / Fundamentals 7.22.8.
15
- It admits through ESM v7 to Stage planning; above v7 is CLI-RENDER-004.
13
+ Standalone Screenplay is 4.135.0; CLI 3.50.0 bundles Stage 4.67.0 / Screenplay
14
+ 4.131.0 / Arc.Screenplay 22.54.0 / Chronicle 19.32.0 / Fundamentals 7.22.8.
15
+ It admits through ESM v10 to construct planning; above v10 is CLI-RENDER-004.
16
+ Stage 4.67.0 `SemanticVersionFeatures`/`SemanticVersionFeatureAdmission` refuse
17
+ public publication (STAGE-ESM-032), foreign events/events-source captures (033),
18
+ reaction identity (034), reaction filters (035) and production overrides (036).
19
+ Reducer filters render. ESM v8 routes have construct checks including refusal of
20
+ route-bearing read-model/query replay scenarios (STAGE-ESM-030); admitted routes
21
+ are not blanket scenario parity. Case tables and whole numbers as long apply to
22
+ the default; see `case-tables-and-whole-numbers.md`. Previous CLI 3.46.1's Stage
23
+ 4.52.0 audited only through v7 and applied neither new rule. Current version
24
+ checks are CLI `RenderedSemanticVersions.Newest` and Stage
25
+ `SemanticVersionFeatures.Supports`. The historical CLI 3.41.0/Screenplay 4.114.0
26
+ parser rejected `runs as` with PLAY0137; that is not a current parser refusal.
16
27
  The historical CLI 3.41.0 v7 canonical-corpus planning spec received
17
28
  STAGE-ESM-028/029 for generated values/responses.
18
29
  The detailed 4.24.x source/probe rows below have not been relabeled as current
@@ -12,11 +12,13 @@
12
12
 
13
13
  ## CLI default versus Stage release
14
14
 
15
- CLI 3.46.1 bundles Screenplay 4.130.0 and Stage 4.52.0. Its default renderer
16
- applies neither the case-table support introduced in Stage 4.59.0 nor the
17
- whole-number rule introduced in 4.61.0. It renders whole-number types as `int`
18
- and refuses models newer than ESM v7 with `CLI-RENDER-004` before Stage planning.
19
- A newer standalone Screenplay compiler does not upgrade the bundled renderer.
15
+ CLI 3.50.0 bundles Screenplay 4.131.0 and Stage 4.67.0. Its default renderer
16
+ applies case-table support introduced in Stage 4.59.0 and the whole-number rule
17
+ introduced in 4.61.0: v8+ whole numbers use `long`, earlier versions keep `int`.
18
+ CLI and Stage admit through v10 to construct checks; newer versions receive
19
+ CLI-RENDER-004 before planning (direct Stage: STAGE-ESM-016).
20
+ Previous CLI 3.46.1 bundled Screenplay 4.130.0/Stage 4.52.0, applied neither rule,
21
+ and refused above v7. A standalone compiler does not upgrade the bundled renderer.
20
22
 
21
23
  `cratis run ./model --tag 4.63.2` selects a newer **sandbox image**; it does not
22
24
  change `cratis render`. The renderer is statically bundled and has no Stage
@@ -122,6 +124,6 @@ Chronicle event generation; changing model version is not a safe schema migratio
122
124
  - Stage `v4.61.0`: `Source/Rendering.Cratis/Semantics/SemanticTypeSystem.cs`,
123
125
  `SemanticCratisAdmission.WholeNumbers.cs` and
124
126
  `Source/Rendering.Cratis/Semantics/for_SemanticCratisAdmission/when_admitting_whole_number_literals/with_a_pre_v8_model.cs`.
125
- - CLI `v3.46.1`: `Directory.Packages.props`,
127
+ - CLI `v3.50.0` (previous bundle `v3.46.1`): `Directory.Packages.props`,
126
128
  `Source/Cli/Commands/Render/{RenderSettings,CratisRenderTarget,RenderedSemanticVersions}.cs`,
127
129
  `Source/Cli/Commands/Run/{RunSettings,StageContainer}.cs`.
@@ -3,6 +3,8 @@
3
3
  "input": "Can Stage render this Screenplay model, and how do I re-render it safely after someone edited Program.cs?",
4
4
  "fixtures": [],
5
5
  "assertions": [
6
+ { "kind": "skill-contains", "value": "Stage 4.67.0 default applies both rules" },
7
+ { "kind": "skill-contains", "value": "Reducer filters render" },
6
8
  { "kind": "play-compiles" },
7
9
  { "kind": "skill-contains", "value": "`cratis render`" },
8
10
  { "kind": "skill-contains", "value": "`--name <NAME>` | **Required for plain source**" },
@@ -16,7 +18,7 @@
16
18
  { "kind": "skill-contains", "value": "`Customizations/`" },
17
19
  { "kind": "skill-contains", "value": "`Stage__Runtime__Engine=semantic`" },
18
20
  { "kind": "skill-contains", "value": "`--engine semantic`" },
19
- { "kind": "skill-contains", "value": "Routes bind/reference-execute as v8" },
21
+ { "kind": "skill-contains", "value": "through v10" },
20
22
  { "kind": "skill-contains", "value": "CLI-RENDER-004" },
21
23
  { "kind": "skill-contains", "value": "STAGE-ESM-024" },
22
24
  { "kind": "skill-contains", "value": "`v4.24.2`" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cratis/pi",
3
- "version": "7.29.1",
3
+ "version": "7.30.0",
4
4
  "description": "Configuration-aware Cratis AI integration for Pi",
5
5
  "type": "module",
6
6
  "files": [