@cratis/pi 7.32.0 → 7.33.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 (51) hide show
  1. package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +2 -2
  2. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/audit-format.md +1 -1
  3. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +2 -2
  4. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +3 -3
  5. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/public-events-and-direction.md +2 -2
  6. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +2 -2
  7. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +2 -2
  8. package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +8 -6
  9. package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +1 -1
  10. package/package/corpus/skills/cratis-screenplay-command-surface/references/enum-numbers.md +93 -0
  11. package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +3 -4
  12. package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +3 -2
  13. package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +1 -1
  14. package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +25 -25
  15. package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +6 -0
  16. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +5 -0
  17. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +36 -8
  18. package/package/corpus/skills/cratis-screenplay-model-authoring/references/property-links.md +126 -0
  19. package/package/corpus/skills/cratis-screenplay-model-authoring/references/screen-authoring-workflow.md +3 -4
  20. package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +1 -1
  21. package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +1 -1
  22. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +6 -5
  23. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +2 -2
  24. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +3 -3
  25. package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +1 -1
  26. package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +2 -2
  27. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +5 -2
  28. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/evolution.md +17 -0
  29. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +1 -1
  30. package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +15 -6
  31. package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +6 -3
  32. package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +21 -2
  33. package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +2 -2
  34. package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +9 -3
  35. package/package/corpus/skills/cratis-screenplay-toolchain/references/production-routes-and-filters.md +1 -1
  36. package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +1 -1
  37. package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +5 -4
  38. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract-exceptions.json +1 -1
  39. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +1092 -17
  40. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
  41. package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +1 -1
  42. package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +3 -3
  43. package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +4 -4
  44. package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +32 -17
  45. package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +3 -1
  46. package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +2 -2
  47. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +8 -9
  48. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +4 -5
  49. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/case-tables-and-whole-numbers.md +2 -2
  50. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +1 -1
  51. package/package.json +1 -1
@@ -148,10 +148,9 @@ Historical verified public vector and executable checks:
148
148
  `cratis/stage:4.52.0` and which bundled Screenplay 4.127.0. Published since,
149
149
  and not verified by this vector: Scene 4.17.0, Screenplay 4.133.1, Stage 4.64.0,
150
150
  previous CLI 3.46.1 (bundling Screenplay 4.130.0, then-default Stage 4.52.0) and
151
- Studio 0.152.2. Current pins are CLI 3.50.0 (Screenplay 4.131.0 / Stage 4.67.0)
152
- and standalone Screenplay 4.135.0; see toolchain `references/versions.md`.
153
- Compiler claims from this `cratis` probe are 4.127.0 claims, not current CLI
154
- 3.50.0/Screenplay 4.131.0 claims;
151
+ Studio 0.152.2. Current pins: `cratis-screenplay-toolchain/references/versions.md`.
152
+ Compiler claims from this `cratis` probe are 4.127.0 claims, not current
153
+ bundled-compiler claims;
155
154
  - fixture root: `Source/DotNET/Screenplay.CanonicalCorpus/Corpus/ScreenComposition/v1/source/folder`
156
155
  in the Screenplay repository;
157
156
  - Screenplay repo tool (available checkout): `dotnet run --project Source/DotNET/Tool
@@ -6,7 +6,7 @@
6
6
  { "kind": "play-compiles" },
7
7
  {
8
8
  "kind": "skill-contains",
9
- "value": "Screenplay v4.135.0"
9
+ "value": "Screenplay v4.139.0"
10
10
  },
11
11
  {
12
12
  "kind": "skill-contains",
@@ -31,7 +31,7 @@ adapted to `.play` declarations (`references/provenance.md`).
31
31
  |---|---|---|
32
32
  | Screenplay | `v4.66.0` (`c89198b`) | MCP catalog (29 tools: `describe-application`, `search-declarations`, `dependencies`, `find-assertion-gaps`, `read-workspace`, `declaration-details`) in `Source/DotNET/Screenplay.Mcp/McpToolCatalog.cs`; diagnostics PLAY0029, PLAY0191, PLAY0268, PLAY0271, PLAY0350, PLAY0381, PLAY0469 in `Source/DotNET/Screenplay/Diagnostics/DiagnosticCodes.cs`; decision 0008 (one data subject per event) |
33
33
  | Screenplay | `v4.127.0` | `find-specification-obligations` (SPEC001–SPEC008 authored presence), `find-modeling-smells` (SMELL001–SMELL005 advisory questions); neither proves executed behavior or complete lineage |
34
- | Screenplay | `v4.131.0` | `semantic-diff` source objects and revision-pinned pages: `Source/DotNET/Screenplay.Mcp/{McpRevisionDiff,McpWorkspaces.Comparison,McpToolCatalog}.cs`, `Documentation/screenplay/mcp/reference.md`; previous CLI 3.46.1 predates these; CLI 3.50.0 bundles them |
34
+ | Screenplay | `v4.131.0` | `semantic-diff` source objects and revision-pinned pages: `Source/DotNET/Screenplay.Mcp/{McpRevisionDiff,McpWorkspaces.Comparison,McpToolCatalog}.cs`, `Documentation/screenplay/mcp/reference.md`; previous CLI 3.46.1 predates these; see pin table below |
35
35
  | cratis CLI | `v3.28.3` | bundles Screenplay 4.66.0 and Stage 4.24.2; see the toolchain skill |
36
36
 
37
37
  The full pin table lives in `cratis-screenplay-toolchain` `references/versions.md`; do not copy
@@ -25,9 +25,9 @@ Version pins live once in `cratis-screenplay-toolchain` `references/versions.md`
25
25
 
26
26
  | Source | Pin | Used for |
27
27
  | --- | --- | --- |
28
- | cratis CLI | `3.50.0` (`v3.50.0`) | Source-checked `Directory.Packages.props`: Stage 4.67.0, Screenplay 4.131.0, `Cratis.Arc.Screenplay` 22.54.0, Chronicle 19.32.0, Fundamentals 7.22.8; default runtime image `cratis/stage:4.67.0`. Previous CLI 3.46.1 used Stage 4.52.0/Screenplay 4.130.0. No new render/browser probe. UI-profile rejection (`CLI-RENDER-007` to `CLI-RENDER-010`) and render-then-recover shipped in 3.41.0 (Cratis/cli#301). Historical screens release vector: 3.40.7 (`af9f18e`) with `cratis/stage:4.51.1`. Reading baselines: 3.40.3, 3.39.0 and 3.28.3 (`8b43fef`) |
29
- | Stage | `4.67.0` (CLI 3.50.0 default) | Source-checked, not executed as a new vector. Previous Stage 4.52.0 was executed on CLI 3.43.0. Admission (`STAGE-ESM-*`, and `PLAY0268` render refusals surfaced by the CLI), ownership manifest, `Customizations/` seams, Debug-only specifications, guarded actions (`STAGE-SCENE-ACTION-001`) and interactions (`STAGE-SCENE-INTERACTION-001`) were source-checked at 4.51.3. Older baselines: 4.49.5, 4.43.0 and `v4.24.2` (`32dcac4`) |
30
- | Screenplay | bundled `4.131.0`; standalone `4.135.0` | Standalone compiler for V1 to V3; binding codes `PLAY0268` and code-attachment rules were read at `v4.66.0`. Historical CLI 3.41.0 probes used bundled 4.114.0; current `cratis` compiler claims require checking 4.131.0 |
28
+ | cratis CLI | See `cratis-screenplay-toolchain/references/versions.md` | Historical source check at `v3.50.0:Directory.Packages.props`: Stage 4.67.0, Screenplay 4.131.0, `Cratis.Arc.Screenplay` 22.54.0, Chronicle 19.32.0, Fundamentals 7.22.8; default runtime image `cratis/stage:4.67.0`. Previous CLI 3.46.1 used Stage 4.52.0/Screenplay 4.130.0. No new render/browser probe. UI-profile rejection (`CLI-RENDER-007` to `CLI-RENDER-010`) and render-then-recover shipped in 3.41.0 (Cratis/cli#301). Historical screens release vector: 3.40.7 (`af9f18e`) with `cratis/stage:4.51.1`. Reading baselines: 3.40.3, 3.39.0 and 3.28.3 (`8b43fef`) |
29
+ | Stage | See `cratis-screenplay-toolchain/references/versions.md` | Historical source check: 4.67.0 under CLI 3.50.0, not executed as a new vector. Previous Stage 4.52.0 was executed on CLI 3.43.0. Admission (`STAGE-ESM-*`, and `PLAY0268` render refusals surfaced by the CLI), ownership manifest, `Customizations/` seams, Debug-only specifications, guarded actions (`STAGE-SCENE-ACTION-001`) and interactions (`STAGE-SCENE-INTERACTION-001`) were source-checked at 4.51.3. Older baselines: 4.49.5, 4.43.0 and `v4.24.2` (`32dcac4`) |
30
+ | Screenplay | See `cratis-screenplay-toolchain/references/versions.md` | Standalone compiler for V1 to V3; binding codes `PLAY0268` and code-attachment rules were read at `v4.66.0`. Historical CLI 3.41.0 probes used bundled 4.114.0; check the pinned bundled compiler before making `cratis` claims |
31
31
  | Rendered apps (historical check) | Arc `22.50.5`, Chronicle `19.32.0`, Scene packages | Stage 4.51.3 scaffold; `[ProtectedDecision]` / `DecisionRead<T>` available to gap-fill, not emitted enforcement. Embedded reverse extraction disabled; verify generated packages before claiming exact Scene runtime parity |
32
32
 
33
33
  Historical facts retain their checked tags; current pins are source-checked, not new runtime probes.
@@ -77,8 +77,9 @@ the model, hand-write the command and its response with the model (and its fixtu
77
77
  specifications) as the contract, and report V3 from the standalone tool and V5 as `not run: no render`.
78
78
 
79
79
  Models with event sources, streams or command routes bind and reference-execute as ESM v8 on standalone
80
- Screenplay 4.125.0, so report V3 and V4 from that tool. Previous CLI 3.46.1 refused above v7 with CLI-RENDER-004. Current CLI 3.50.0/Stage
81
- 4.67.0 reaches v8 route checks and construct admission through v10. Public publication,
80
+ Screenplay 4.125.0, so report V3 and V4 from that tool. Previous CLI 3.46.1 refused above v7 with CLI-RENDER-004. The pinned CLI/Stage pair
81
+ (`cratis-screenplay-toolchain/references/versions.md`) reaches v8 route checks
82
+ and construct admission through v10. Public publication,
82
83
  foreign events/event captures and v10 reaction identity/filters/production overrides
83
84
  still receive typed refusals; reducer filters render. Keep refused scope as case A/C,
84
85
  never infer target support from binding. Read Stage's `references/admission.md` and
@@ -77,8 +77,8 @@ not bind a modeled reaction or capture. Case C (no generated application): there
77
77
  composition conventions (`rules/vertical-slices.md`, `cratis-chronicle-reactor`).
78
78
  Declare the trusted actor with reaction `runs as system role "<Role>"`
79
79
  (standalone 4.125.0, ESM v10); `given caller` is not an invocation actor.
80
- Historical CLI 3.41.0's older compiler rejected the syntax. CLI 3.50.0/Stage 4.67.0
81
- reaches v10 construct admission but still refuses reaction identity
80
+ Historical CLI 3.41.0's older compiler rejected the syntax. The pinned CLI/Stage pair
81
+ (`cratis-screenplay-toolchain/references/versions.md`) reaches v10 construct admission but still refuses reaction identity
82
82
  (STAGE-ESM-034); previous CLI 3.46.1 admitted through v7 only. Gap-fill retains the declared role and uses Arc
83
83
  `[ExecuteCommandsAsSystem]` for returned commands. Checked model and diagnostics:
84
84
  captures-and-reactions `references/invocation-identity.md`.
@@ -4,8 +4,8 @@ The subsets themselves (what binds, what renders) are owned by `cratis-screenpla
4
4
  (its executable and renderable subset references); version facts by its `references/versions.md`. This file
5
5
  says what that means for writing specs. A form outside the chosen mode is never deleted from a
6
6
  design model: keep it and record the gap. The detailed Stage 4.24.x rows below
7
- retain historical admission evidence; current pins are standalone Screenplay
8
- 4.135.0 / CLI 3.50.0 (Screenplay 4.131.0 / Stage 4.67.0). Run actual target admission instead of assuming old restrictions carry over.
7
+ retain historical admission evidence; current pins are in
8
+ `cratis-screenplay-toolchain/references/versions.md`. Run actual target admission instead of assuming old restrictions carry over.
9
9
  Typed example/override forms: `cratis-screenplay-specifications`
10
10
  `references/examples-and-routes.md`.
11
11
 
@@ -23,7 +23,7 @@ Typed example/override forms: `cratis-screenplay-specifications`
23
23
  | Command spec listing reaction cascade events | yes (v6 semantics) | false PLAY0285 on a cratis before 3.28.2 bundle only; see SKILL.md "Version skew" | no (no reactions) |
24
24
  | `generated <name> = <value>` under `when`, `then returns` (ESM v7) | yes | yes on standalone Screenplay 4.68.0 or later; not on the 4.66.0 bundled in cratis 3.28.x (`PLAY0268`) | historically no at Stage 4.24.x; check current target admission |
25
25
  | `then events in any order` | yes | yes | yes |
26
- | Event `stream` / `no stream`, typed `for` and stream ids | yes | ESM v8 at 4.125.0 | CLI 3.50.0 reaches Stage route checks; routed read-model/query replay can still refuse STAGE-ESM-030 |
26
+ | Event `stream` / `no stream`, typed `for` and stream ids | yes | ESM v8 at 4.125.0 | The pinned CLI reaches Stage route checks (toolchain `references/versions.md`); routed read-model/query replay can still refuse STAGE-ESM-030 |
27
27
  | Typed examples and overrides | yes | expanded and type-checked before binding; required fields remain required | depends on expanded contract, not fixture reuse |
28
28
  | `given operation ... fails`, `then operation`, `then compensated` | yes | unadmitted PLAY0268 | gap-fill |
29
29
  | Refusal branches, `when redelivered`, `then no events` | yes | unadmitted PLAY0268 | gap-fill |
@@ -280,7 +280,7 @@ For view specifications:
280
280
  ## Verify
281
281
 
282
282
  - [ ] Validate the complete root with warnings as errors, naming tool/version.
283
- Current standalone pin: 4.135.0. Run specification examples through
283
+ Standalone pin: `cratis-screenplay-toolchain/references/versions.md`. Run specification examples through
284
284
  `screenplay test`; expected unadmitted syntax reports unbound, not passed.
285
285
  - [ ] Executable diagnostics are clean too: `PLAY0350`, `PLAY0352`, `PLAY0388`,
286
286
  `PLAY0389` and `PLAY0273` are only reported at binding.
@@ -94,8 +94,8 @@ so UUID casing is immaterial. Composite mappings supply each named part once,
94
94
  using literals only; encoding escapes `%`/`|` and preserves declaration order.
95
95
  Source: v4.127.0 `event-sources.md`, `specifications.md`, `diagnostics.md`.
96
96
 
97
- Previous CLI 3.46.1 refused above v7; CLI 3.50.0/Stage 4.67.0 reaches route
98
- checks through v10. Routed read-model/query replay can still refuse
97
+ Previous CLI 3.46.1 refused above v7; the pinned CLI/Stage pair
98
+ (`cratis-screenplay-toolchain/references/versions.md`) reaches route checks through v10. Routed read-model/query replay can still refuse
99
99
  STAGE-ESM-030. Source/reference success never establishes target parity.
100
100
 
101
101
  Command and read-model examples refuse routes (PLAY0526). Effective role and
@@ -88,7 +88,7 @@ option, mark it `ASSUMED` in the slice or module `documentation` and in the sess
88
88
  namespace, process-stream routing and concurrency scope apart
89
89
  (`references/chronicle-boundaries.md`). Declared `eventsource`/`stream`/`streamId` and
90
90
  command/specification routes bind and reference-execute as ESM v8 on 4.125.0.
91
- CLI 3.50.0 reaches Stage construct checks through v10; keep the routing
91
+ The pinned CLI (toolchain `references/versions.md`) reaches Stage construct checks through v10; keep the routing
92
92
  contract when target admission requires gap-fill. Forms/boundaries:
93
93
  toolchain `references/sources-and-streams.md`. A `generated identifier` (ESM v7, standalone 4.68.0; not rendered by Stage yet) is
94
94
  generated fresh on every acceptance: it is not a retry identity, and generated values give no
@@ -128,7 +128,10 @@ option, mark it `ASSUMED` in the slice or module `documentation` and in the sess
128
128
  `references/compliance.md` for allowed types and the policy/encryption distinction.
129
129
  5. **Plan evolution** with `references/evolution.md`: classify each event change (additive,
130
130
  meaning change, rename, removal, split or merge) and write its compatibility scenarios before
131
- editing. Renames and other identity-affecting edits are made by the identity owner (the
131
+ editing. Pin persisted/public enum member numbers before reordering or removing
132
+ members; never renumber or reuse a published number. Positional pins preserve
133
+ executable bytes; non-positional pins need ESM v12 consumer admission.
134
+ Renames and other identity-affecting edits are made by the identity owner (the
132
135
  identity procedure in `cratis-screenplay-modeling-lifecycle`).
133
136
  6. **Test ownership and interfaces** with `references/boundaries.md`: ownership interview,
134
137
  interface and processor inventory, one real interaction walked across each boundary, coupling
@@ -27,6 +27,23 @@ compatibility scenarios below first; the identity owner then applies the change
27
27
  A test for "generation or new event": a new version must be convertible from the old one
28
28
  without inventing facts. If it is not, it is a different event.
29
29
 
30
+ ## Enum identities are stored contracts
31
+
32
+ Unnumbered enums use zero-based declaration positions: a reorder or insertion can
33
+ reinterpret stored numbers. Before reordering or removing members, pin each to its
34
+ **existing stored number**, not its new position. `propose-number-enum-members`
35
+ pins an unnumbered enum to current positions; use it before changing order, only
36
+ when those positions match storage. Never renumber or reuse a published member's
37
+ number. Removing a member still needs replay and mixed-reader compatibility decisions.
38
+
39
+ Numbered members may have sparse or negative unique int32 values, all or none per
40
+ enum. Source authoring shipped in 4.137.0; non-positional numbers bind as ESM v12
41
+ in 4.139.0. Positional pins retain older executable bytes/version. CLI 3.53.1 and
42
+ Stage 4.73.1 bundle 4.137.0 and do not admit v12; keep the pins and report the gap.
43
+ Short-lived input/view-only enums may remain positional. Use opt-in
44
+ `--check enum-pinning` (PLAY0671) to find unnumbered enums used by event properties.
45
+ Syntax/example and source evidence: command-surface [enum numbers](../../cratis-screenplay-command-surface/references/enum-numbers.md).
46
+
30
47
  ## Compatibility scenarios (write before editing)
31
48
  For each changed event, answer in the slice `documentation` or `STATE.md`:
32
49
  1. **Replay**: does every projection still build from generation 1 facts? Which value do old
@@ -216,7 +216,7 @@ Some event stores decide consistency by a query over tagged events instead of on
216
216
  check to event types, source type or stream (`concurrency` block, Screenplay
217
217
  `commands.md`). Legacy concurrency metadata still fails binding (PLAY0271),
218
218
  but sources/streams/routes bind and reference-execute as ESM v8 on 4.125.0.
219
- Route admission does not make a view read protected. CLI 3.50.0 reaches Stage construct checks
219
+ Route admission does not make a view read protected. The pinned CLI (toolchain `references/versions.md`) reaches Stage construct checks
220
220
  through v10; see toolchain `references/versions.md`. Model the stream by business
221
221
  identity; when a rule truly needs a cross-stream decision, record it (see
222
222
  `consistency-and-concurrency.md`) rather than inventing a construct.
@@ -22,16 +22,16 @@ files is one application: always check the folder, never one file of it.
22
22
 
23
23
  When choosing or upgrading a tool, or checking version-specific capabilities, read `references/versions.md`; it is the only version table, and other skills point to it. For exact diagnostic codes, MCP names/parameters and standalone CLI options, search the large published [references/screenplay-contract.json](references/screenplay-contract.json), pinned by [references/screenplay-contract.version](references/screenplay-contract.version), rather than loading it in full. Locate a diagnostic by its exact `code` (for example `"code": "PLAY0029"`), a tool by its exact `name` (for example `"name": "read-workspace"`), or a command in `cliCommands`; read the matched object for retirement, parameters or options. [references/screenplay-contract-exceptions.json](references/screenplay-contract-exceptions.json) records reasoned exceptions for historical statements; it does not change the current contract.
24
24
 
25
- The standalone pin is Screenplay 4.135.0. CLI 3.50.0 bundles Screenplay 4.131.0,
26
- Stage 4.67.0 and Cratis.Arc.Screenplay 22.54.0. The single version table records
25
+ The standalone pin is Screenplay 4.139.0.
26
+ CLI and bundled package pins: `references/versions.md`. The single version table records
27
27
  released source evidence and historical probes separately; do not relabel an old
28
28
  render/browser result as a probe of the current packages.
29
29
 
30
30
  Historical screens-release evidence: CLI 3.40.7 / Stage 4.51.1 / bundled
31
31
  Screenplay 4.114.0 opened the canonical corpus with `executableReady true`
32
32
  and the stdio transcript exposed 37 tools; standalone language 4.122.0 was
33
- recorded in that vector. These retained results are not a rerun on CLI 3.50.0
34
- or Screenplay 4.135.0.
33
+ recorded in that vector. These retained results are not a rerun on CLI 3.53.1
34
+ or Screenplay 4.139.0.
35
35
 
36
36
  ## Ground rules
37
37
 
@@ -67,7 +67,7 @@ or Screenplay 4.135.0.
67
67
  | Scope/checks | `--scope <address>`, `--check <names>`; a scoped pass is not whole-application success | Discover installed validation options |
68
68
  | Reference execution | `screenplay test <root>` or MCP `run-specifications` | Discover bundled MCP capability; target tests are not V4 |
69
69
  | MCP | `screenplay mcp <root>`; discover schemas | `cratis screenplay mcp [root]`; registered by `cratis ai install` |
70
- | Render version boundary | Binder admission is not Stage admission | CLI 3.50.0 passes through ESM v10 to Stage construct admission; newer versions: `CLI-RENDER-004` |
70
+ | Render version boundary | Binder admission is not Stage admission | Pinned CLI (`versions.md`) passes through ESM v10 to Stage construct admission; bound newer models: `CLI-RENDER-004` |
71
71
 
72
72
  Read `references/versions.md` when you need the exact messages, exit codes or the MCP roots bug.
73
73
 
@@ -109,7 +109,7 @@ changes with the root folder name.
109
109
  Stage generated-value/response refusals `STAGE-ESM-028`/`029`, not a blanket
110
110
  compiler refusal. Run admission before claiming a particular model renders.
111
111
  - **Event sources, streams and routes** bind as ESM v8 at 4.125.0.
112
- CLI 3.50.0/Stage 4.67.0 reaches construct admission through v10, not blanket
112
+ The pinned CLI/Stage pair (`references/versions.md`) reaches admission through v10, not blanket
113
113
  rendering. Operations and exact numeric source mode remain unadmitted.
114
114
  Details: `references/sources-and-streams.md` and `references/versions.md`.
115
115
  - **Released v9/v10 and published v11:** public contracts and direction select v9;
@@ -119,6 +119,15 @@ changes with the root folder name.
119
119
  `key` binds. Read `references/production-routes-and-filters.md` and read-surface
120
120
  `references/named-keys.md`; version freeze and numeric boundaries: `references/versions.md`.
121
121
 
122
+ - **Published v12 (4.139.0):** non-positional enum numbers bind; canonical
123
+ `numbers` parallels `values`. Positional pins preserve earlier executable
124
+ bytes/version. Specifications still use names. The pinned CLI's compiler accepts source
125
+ authoring but refuses non-positional numbers at binding (PLAY0268), before
126
+ renderer admission. Neither its compiler nor Stage reads v12 ESM; upgrading
127
+ only the compiler would not lift their v10 admission ceiling (`references/versions.md`). Syntax:
128
+ command-surface `references/enum-numbers.md`; errors PLAY0667–0670 and opt-in
129
+ `enum-pinning` hint PLAY0671: `references/diagnostics.md`.
130
+
122
131
  - **Caller/compliance metadata** at 4.127.0: `$identity` aliases caller built-ins;
123
132
  additional identity details are metadata and executable reads still refuse.
124
133
  Bare `pii`/`secret` replace legacy spellings; `pii personal` repeats one marker
@@ -21,10 +21,13 @@ PLAY0268 (#599), not v10. Read [named keys](../../cratis-screenplay-read-surface
21
21
  Production `stream Source.Stream` overrides and reaction/reducer `from Source[.Stream]`
22
22
  select released v10: [routes and filters](production-routes-and-filters.md).
23
23
  Qualifying non-route Double literals select published v11 at 4.135.0;
24
- `numbers exact` does not bind. See `versions.md` for freeze and numeric boundaries.
24
+ `numbers exact` does not bind. Non-positional enum member numbers (`draft = 1`)
25
+ select published v12 at 4.139.0; positional pins keep earlier bytes/version,
26
+ while specifications still use names. The pinned CLI/Stage pair (`versions.md`) does not admit v12.
27
+ Syntax/example: command-surface `references/enum-numbers.md`.
28
+ See `versions.md` for freeze and numeric boundaries.
25
29
 
26
- Current pins: standalone Screenplay 4.135.0 / CLI 3.50.0; `versions.md` is the
27
- single table. Compile evidence below keeps its historical tool labels.
30
+ Current pins: `versions.md` (the single table). Compile evidence below keeps its historical tool labels.
28
31
 
29
32
  The syntax lives in compiled example files next to this one (each is a Markdown file holding
30
33
  one complete `screenplay` fence). Copy shapes from them; do not write a form that none of
@@ -5,6 +5,7 @@
5
5
  - Warnings that hide defects (always validate with `--warnings-as-errors`)
6
6
  - Source reference and identifier checks
7
7
  - Public events and translation direction
8
+ - Explicit enum member numbers
8
9
  - Named keys, production routes and observer filters
9
10
  - Caller identity, compliance and routes
10
11
  - Specification metadata, callers, cases and locators
@@ -53,7 +54,7 @@ Legacy compliance spellings (`@pii`/`@sensitive`) do not evade PLAY0515.
53
54
 
54
55
  ## Public events and translation direction
55
56
 
56
- Current at Screenplay 4.135.0; all are errors. These constructs bind as released
57
+ Source checked at Screenplay 4.135.0; all are errors. These constructs bind as released
57
58
  ESM v9, except public/foreign imports without local shapes (PLAY0268).
58
59
 
59
60
  | Code | Meaning / fix |
@@ -79,6 +80,24 @@ or non-Translate direction. Repair discovery uses `repair-capabilities`, workspa
79
80
  `repairs`, then revision-checked `propose-repair`; do not guess a direction.
80
81
  See automations-and-translations `references/public-events-and-direction.md`.
81
82
 
83
+ ## Explicit enum member numbers
84
+
85
+ Source errors from Screenplay 4.137.0; ESM v12 admission from 4.139.0:
86
+
87
+ | Code | Severity | Meaning / fix |
88
+ | --- | --- | --- |
89
+ | PLAY0667 | E | Mixed numbered/unnumbered members; number all or none |
90
+ | PLAY0668 | E | Duplicate enum number; aliases are not supported |
91
+ | PLAY0669 | E | Number outside int32 (-2147483648 through 2147483647) |
92
+ | PLAY0670 | E | Malformed number: decimal digits, optional minus, no leading zero, fraction, exponent or plus |
93
+ | PLAY0671 | I | Opt-in `enum-pinning` completeness hint for an unnumbered enum used by an event property; ordinary compilation does not report it |
94
+
95
+ Numbering errors have no automatic repair. PLAY0671 suggests the opt-in
96
+ `propose-number-enum-members` refactoring, not a correctness repair. Member names
97
+ remain specification values. Non-positional pins select v12; positional pins keep
98
+ older executable bytes/version. Consumer admission is separate (`versions.md`).
99
+ Source: `v4.139.0:Documentation/screenplay/diagnostics.md`, decision 0065.
100
+
82
101
  ## Named keys, production routes and observer filters
83
102
 
84
103
  | Code | Severity | Meaning / fix |
@@ -312,7 +331,7 @@ Report each as `code file:line one-line meaning`; never paste more than about 30
312
331
 
313
332
  ## Render admission (V5): `STAGE-*`, `CLI-RENDER-*`, `STAGE-CRATIS-*`
314
333
  Full table with causes: `renderable-subset.md`. The Stage 4.24.x rows below
315
- retain historical source/probe evidence. Current CLI 3.50.0/Stage 4.67.0 admits
334
+ retain historical source/probe evidence. The pinned CLI/Stage pair (`versions.md`) admits
316
335
  through v10 to construct checks; above it is CLI-RENDER-004 (direct Stage:
317
336
  STAGE-ESM-016). Publication STAGE-ESM-032, foreign facts/event captures 033,
318
337
  reaction identity 034, reaction filters 035 and production overrides 036 remain
@@ -1,6 +1,6 @@
1
1
  # Documentation contradictions and which side to trust
2
2
 
3
- Current pins are Screenplay 4.135.0 / CLI 3.50.0 (`versions.md`). This is a
3
+ Current pins: `versions.md`. This is a
4
4
  **historical** contradiction inventory, not a claim that all listed defects still
5
5
  exist. Current grammar documents exact numbers and free description placement;
6
6
  sources/routes bind as ESM v8; PLAY0515 is a source error; CLI admits through
@@ -42,7 +42,7 @@ read from source or documentation.
42
42
  | 14 | `$causedBy` | not evaluable (#4119), not ESM | showcase only |
43
43
  | 15 | literal keys | `key literal "global"` vs `key "global"` | both compile; prefer `literal` |
44
44
  | 16 | query admission | `D/queries.md:74` now says live, filtered, scoped and performer queries are not admitted | the binder also rejects collection queries and a missing `by`, which stay undocumented [probed] |
45
- | 17 | `@pii` | `D/concepts.md:3,33` "Chronicle applies `@pii` and `@sensitive` rules automatically" | the binder rejects any compliance attribute (PLAY0268); keep it, report V3 blocked. `@sensitive` means an operational secret (`[Encrypted]` + `[NotAudited]`; Screenplay decision 0034); the pinned tools (standalone 4.68.0, bundle 4.66.0) do **not** report `PLAY0515` (`@pii` from 4.69.1, `@sensitive` from 4.84.1): there only Chronicle catches either attribute on an event-source identifier, at build time of the generated code (CHR0034 for `@pii`, CHR0052 for `@sensitive`) |
45
+ | 17 | `@pii` | `D/concepts.md:3,33` "Chronicle applies `@pii` and `@sensitive` rules automatically" | the binder rejects any compliance attribute (PLAY0268); keep it, report V3 blocked. `@sensitive` means an operational secret (`[Encrypted]` + `[NotAudited]`; Screenplay decision 0034); the historically probed tools (standalone 4.68.0, bundle 4.66.0) do **not** report `PLAY0515` (`@pii` from 4.69.1, `@sensitive` from 4.84.1): there only Chronicle catches either attribute on an event-source identifier, at build time of the generated code (CHR0034 for `@pii`, CHR0052 for `@sensitive`) |
46
46
  | 18 | read-model identity | `D/readmodels.md:32` "from the keyed query" | at 4.135.0 explicit `key` wins; else single-instance queries agree on one read-model `by` property; only with none and an admitted list query does conventional `*Id` inference run (collection-key exclusions: read-surface `references/named-keys.md`). Queryless views need explicit `key` |
47
47
  | 19 | `$strings` constraint messages | `D/constraints.md:31` vs `D/internationalization.md:55` | the compiler keeps the key; realization localizes |
48
48
  | 20 | composite key braces | optional in the EBNF; both forms in docs | both fine |
@@ -12,7 +12,7 @@
12
12
  - Not refused, but do not rely on it
13
13
  - Never do this to reach V3
14
14
 
15
- Current pins are Screenplay 4.135.0 / CLI 3.50.0 (`versions.md`). Detailed
15
+ Current pins: `versions.md`. Detailed
16
16
  4.66.0/4.68.0 binder probes below retain their historical labels. Current source
17
17
  admits routes as ESM v8, public/direction constructs as v9, identity/overrides/filters
18
18
  as v10 and qualifying non-route Double literals as v11. Operations,
@@ -94,7 +94,7 @@ Authority: v4.127.0 `context.md`, `identity.md`, `concepts.md`, `events.md`, `pu
94
94
  ...` with an explicit `for`. Without a declared actor, a gated invocation denies.
95
95
  On 4.125.0 reaction `runs as system role "<Role>"` supplies the actor and
96
96
  selects ESM v10; keep the gate. CLI 3.41.0's older compiler rejected this syntax;
97
- CLI 3.50.0's bundle supports it, but Stage refuses reaction identity with STAGE-ESM-034.
97
+ The pinned CLI bundle (`versions.md`) supports it, but Stage refuses reaction identity with STAGE-ESM-034.
98
98
  Standalone reference execution admits it.
99
99
  - Application `trigger` declarations and `when trigger` specifications.
100
100
  - `slice Translate` with `capture` (`key`, `map ... translate`, `append ... when x from "a"
@@ -153,6 +153,12 @@ filters match routed source/stream names only. Read
153
153
  Qualifying retained non-route Double literals bind/reference-execute as v11 on
154
154
  4.135.0, unlike `numbers exact`; see `versions.md`.
155
155
 
156
+ Non-positional enum member numbers bind as ESM v12 from 4.139.0; positional
157
+ pins preserve the earlier executable version/bytes. The optional canonical last
158
+ `numbers` array parallels `values`; specifications still use member names.
159
+ Consumers must admit v12 explicitly; CLI 3.53.1/Stage 4.73.1 do not. Syntax:
160
+ command-surface `references/enum-numbers.md`; version contract: `versions.md`.
161
+
156
162
  ## Code attachments (what binds, what never does)
157
163
 
158
164
  Inline fences (`csharp`, `typescript`, `react`, `html`, `sql`) and `file <path>` attach
@@ -196,7 +202,7 @@ bodies still leave their owner non-executable.
196
202
  | `Automation` or `Translate` slice, `reaction`, `capture`, `trigger`; `given clock`, `when clock`, `when trigger`, `when capture` | PLAY0268 | **cratis before 3.28.2 bundles only** (4.60.1); messages in `versions.md` |
197
203
  | Unquoted `import Other.Contract` | PLAY0268 | external contract import is not bound |
198
204
  | `pii` or `secret` on any concept (also alias/legacy markers) | PLAY0268 | Compliance requires portable data-subject semantics; scopes/qualifiers do not admit it. Secret provider mapping is `[Encrypted]` + `[NotAudited]`, not a bind/render claim |
199
- | `query` returning a collection (`RM[]`), or without exactly one caller-supplied scalar `by` | PLAY0268 | Current 4.135.0 boundary: composite `by` blocks remain unadmitted (#599); optional scalar snapshot lookup binds |
205
+ | `query` returning a collection (`RM[]`), or without exactly one caller-supplied scalar `by` | PLAY0268 | Historical 4.135.0 source check: composite `by` blocks remain unadmitted (#599); optional scalar snapshot lookup binds |
200
206
  | `observable`, `filter`, `scoped to`, `performer` queries | PLAY0268 | "uses delivery, filtering, scope, or implementation behavior outside the first ESM v1 vertical." `observable` goes in the return position (`=> observable RM optional`); as a body line it is PLAY0048 |
201
207
  | `contains` or `starts with` in conditions | PLAY0268 | equality and numeric ordering only |
202
208
  | Date or DateTime comparison, `today` | PLAY0268 | no runtime date value |
@@ -108,7 +108,7 @@ contract. A consumer admitting v10 must include all three, not just identity.
108
108
  Composite **read-model** keys are separate and remain unadmitted (PLAY0268, #599).
109
109
 
110
110
  Previous CLI 3.46.1/Stage 4.52.0 refused versions above v7 before planning.
111
- CLI 3.50.0/Stage 4.67.0 admits through v10 to construct checks: production overrides
111
+ The pinned CLI/Stage pair (`versions.md`) admits through v10 to construct checks: production overrides
112
112
  still refuse STAGE-ESM-036 and reaction filters STAGE-ESM-035; reducer filters render.
113
113
  A supported version number alone never proves target support or a passing render.
114
114
 
@@ -28,7 +28,7 @@ is adapted with the agreement of Martin Dilger and Nebulit GmbH.
28
28
 
29
29
  ## Sources read for facts
30
30
 
31
- - Current public/keys/routes/version update: Screenplay `v4.135.0` (`b4e46130`),
31
+ - Historical public/keys/routes/version source check: Screenplay `v4.135.0` (`b4e46130`),
32
32
  unchanged release contract, `Semantics/Versions.cs`, `Documentation/screenplay/{events,slices,captures,readmodels,queries,event-sources,diagnostics,interoperability}.md`,
33
33
  decisions 0049–0051 and 0060–0066. Composite view keys remain PLAY0268 (#599);
34
34
  v11 literal lowering is admitted despite interoperability's unreleased label.
@@ -7,8 +7,7 @@
7
7
  - Ownership, publication and recovery
8
8
  - Reading V5
9
9
 
10
- Current pins: standalone Screenplay 4.135.0; CLI 3.50.0 bundles Screenplay
11
- 4.131.0 and Stage 4.67.0 (`versions.md`). CLI/Stage admit through v10 to construct
10
+ Current compiler/CLI/Stage pins: `versions.md`. CLI/Stage admit through v10 to construct
12
11
  checks, not blanket rendering; above v10 is CLI-RENDER-004 (direct Stage:
13
12
  STAGE-ESM-016). v9 publication/foreign facts and v10 reaction identity,
14
13
  reaction filters and production overrides still refuse STAGE-ESM-032–036;
@@ -19,7 +18,9 @@ admitted only through v7 and applied neither newer rule. The historical v7 canon
19
18
  STAGE-ESM-028/029 for generated values/responses
20
19
  (`v3.41.0:Source/Cli.Specs/for_ScreenplayPlanning/when_planning_an_esm_v7_model.cs`).
21
20
  The following detailed Stage 4.24.x results are **historical**, not reverified
22
- 4.67.0 claims. Run the bundled renderer before asserting current renderability.
21
+ 4.73.1 claims. Non-positional enum numbers select v12 on standalone 4.139.0,
22
+ but the CLI's 4.137.0 compiler does not bind them and Stage does not admit v12.
23
+ Keep the pins and report the consumer gap. Run the bundled renderer before asserting current renderability.
23
24
 
24
25
  Historical sources, all read at tags: Stage v4.24.1 `Source/Rendering.Cratis/Semantics/SemanticSurfaceLedger.cs`
25
26
  (an exhaustive map of every ESM member to Rendered, Rejected(code) or Ignored),
@@ -67,7 +68,7 @@ accepted with PLAY0565 information); either still refuses binding. Identity bloc
67
68
  purposes and event `subject` are authoring metadata, not provider realization;
68
69
  executing identity detail reads still refuses PLAY0268. Current source/stream
69
70
  routes are admitted as v8, including composite ids, not the historical binding
70
- refusal above; current CLI 3.50.0 reaches Stage's v8 route checks. Never split hand-joined
71
+ refusal above; the pinned CLI (`versions.md`) reaches Stage's v8 route checks. Never split hand-joined
71
72
  legacy ids or drop protected ids into routing to fit a renderer (PLAY0515).
72
73
 
73
74
  ## Authoring consequences in renderable mode
@@ -25,7 +25,7 @@
25
25
  "text": " remains on disk. On CLI 3.43.0: 9 requests and 9 responses, 37 tools,",
26
26
  "kind": "toolCount",
27
27
  "value": "37",
28
- "reason": "Measured CLI 3.43.0 transcript, whose bundled Screenplay 4.127.0 exposes 37 tools; the standalone pin's catalog has 38. Update with the transcript when the CLI bundle changes."
28
+ "reason": "Measured historical CLI 3.43.0 transcript, whose bundled Screenplay 4.127.0 exposes 37 tools. Current compiler and bundle pins are in references/versions.md; this count describes only that transcript. Remove when the transcript is removed or replaced."
29
29
  },
30
30
  {
31
31
  "file": ".cratis/ai/skills/cratis-screenplay-model-review/SKILL.md",