@cratis/pi 7.34.1 → 7.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/corpus/agents/security-reviewer.md +1 -0
- package/package/corpus/agents/spec-writer.md +1 -1
- package/package/corpus/harnesses/pi/extensions/shared/rules.ts +3 -1
- package/package/corpus/hooks/scripts/cratis-nuget-pins.txt +7 -6
- package/package/corpus/hooks/scripts/cratis-release-notes-reviewed.cjs +7 -6
- package/package/corpus/hooks/scripts/cratis-store-mutations.json +7 -3
- package/package/corpus/product-sync.json +896 -0
- package/package/corpus/prompts/add-business-rule.prompt.md +1 -1
- package/package/corpus/prompts/ship-changes.prompt.md +2 -2
- package/package/corpus/rules/ai-distribution.md +31 -3
- package/package/corpus/rules/application-profile.md +2 -1
- package/package/corpus/rules/components.md +66 -7
- package/package/corpus/rules/concepts.md +11 -3
- package/package/corpus/rules/csharp.md +3 -1
- package/package/corpus/rules/dialogs.md +9 -0
- package/package/corpus/rules/efcore.md +1 -1
- package/package/corpus/rules/elixir.md +49 -0
- package/package/corpus/rules/framework.md +5 -3
- package/package/corpus/rules/general.md +1 -0
- package/package/corpus/rules/glossary.md +4 -4
- package/package/corpus/rules/go-engineering.md +60 -0
- package/package/corpus/rules/go.md +115 -0
- package/package/corpus/rules/java.md +5 -2
- package/package/corpus/rules/kotlin.md +7 -5
- package/package/corpus/rules/orleans.md +65 -9
- package/package/corpus/rules/profiles.md +43 -6
- package/package/corpus/rules/pull-requests.md +3 -3
- package/package/corpus/rules/react.md +8 -1
- package/package/corpus/rules/reactors.md +27 -3
- package/package/corpus/rules/specs.csharp.md +11 -4
- package/package/corpus/rules/specs.scenarios.csharp.md +35 -4
- package/package/corpus/rules/specs.typescript.md +2 -1
- package/package/corpus/rules/storybook.md +1 -1
- package/package/corpus/rules/typescript.md +1 -1
- package/package/corpus/rules/vertical-slices.md +37 -5
- package/package/corpus/skills/cratis-application-react-specifications/SKILL.md +4 -2
- package/package/corpus/skills/cratis-application-slice-specifications/SKILL.md +18 -8
- package/package/corpus/skills/cratis-application-slice-specifications/references/query-and-decision-scenarios.md +65 -0
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/SKILL.md +53 -57
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/references/authentication.md +38 -42
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/references/authorization.md +18 -7
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/references/authproxy.md +30 -0
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/references/frontend.md +12 -9
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/references/local-development.md +9 -9
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/references/observable-emission-guards.md +8 -5
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/references/tenancy.md +20 -4
- package/package/corpus/skills/cratis-arc-command/SKILL.md +32 -10
- package/package/corpus/skills/cratis-arc-command/references/command-result.md +12 -5
- package/package/corpus/skills/cratis-arc-command/references/decisions-and-routing.md +95 -0
- package/package/corpus/skills/cratis-arc-command/references/generated-values.md +3 -2
- package/package/corpus/skills/cratis-arc-command/references/handler-shapes.md +8 -8
- package/package/corpus/skills/cratis-arc-command/references/proxy-generation.md +22 -3
- package/package/corpus/skills/cratis-arc-command/references/read-model-injection.md +13 -1
- package/package/corpus/skills/cratis-arc-command-execution/SKILL.md +19 -9
- package/package/corpus/skills/cratis-arc-command-kotlin/SKILL.md +44 -18
- package/package/corpus/skills/cratis-arc-command-kotlin/references/read-model-naming.md +29 -0
- package/package/corpus/skills/cratis-arc-command-operation/SKILL.md +10 -9
- package/package/corpus/skills/cratis-arc-command-operation/references/execution-and-recovery.md +2 -2
- package/package/corpus/skills/cratis-arc-command-operation/references/testing.md +4 -3
- package/package/corpus/skills/cratis-arc-command-typescript/SKILL.md +42 -22
- package/package/corpus/skills/cratis-arc-command-typescript/references/chronicle-events.md +36 -5
- package/package/corpus/skills/cratis-arc-command-typescript/references/command-operations.md +114 -0
- package/package/corpus/skills/cratis-arc-command-typescript/references/hosting-and-storage.md +37 -16
- package/package/corpus/skills/cratis-arc-command-typescript/references/identity-and-introspection.md +88 -0
- package/package/corpus/skills/cratis-arc-command-typescript/references/observability-and-host-scopes.md +25 -0
- package/package/corpus/skills/cratis-arc-command-typescript/references/proxy-generation.md +35 -4
- package/package/corpus/skills/cratis-arc-command-typescript/references/slice-layout.md +11 -0
- package/package/corpus/skills/cratis-arc-command-typescript/verification.json +8 -1
- package/package/corpus/skills/cratis-arc-command-validation/SKILL.md +49 -19
- package/package/corpus/skills/cratis-arc-ef-core-migration/SKILL.md +12 -6
- package/package/corpus/skills/cratis-arc-go/SKILL.md +148 -0
- package/package/corpus/skills/cratis-arc-go/references/queries.md +80 -0
- package/package/corpus/skills/cratis-arc-hosting/SKILL.md +96 -0
- package/package/corpus/skills/cratis-arc-hosting/references/integrations-and-publish.md +80 -0
- package/package/corpus/skills/cratis-arc-identity-and-tenancy-kotlin/SKILL.md +137 -0
- package/package/corpus/skills/cratis-arc-observable-query-http/SKILL.md +20 -2
- package/package/corpus/skills/cratis-arc-query-kotlin/SKILL.md +26 -6
- package/package/corpus/skills/cratis-arc-query-paging/SKILL.md +25 -20
- package/package/corpus/skills/cratis-arc-query-typescript/SKILL.md +32 -6
- package/package/corpus/skills/cratis-arc-query-typescript/references/storage-observation-and-compliance.md +66 -0
- package/package/corpus/skills/cratis-arc-query-typescript/verification.json +5 -1
- package/package/corpus/skills/cratis-arc-react-page/SKILL.md +24 -13
- package/package/corpus/skills/cratis-arc-react-page/references/data-page.md +20 -10
- package/package/corpus/skills/cratis-arc-react-page/references/data-tables.md +17 -3
- package/package/corpus/skills/cratis-arc-react-page/references/dialogs.md +14 -3
- package/package/corpus/skills/cratis-arc-react-page/references/from-screenplay.md +6 -1
- package/package/corpus/skills/cratis-arc-react-page/references/provenance.md +1 -1
- package/package/corpus/skills/cratis-arc-react-page/references/queries-and-commands.md +11 -1
- package/package/corpus/skills/cratis-arc-react-page/verification.json +6 -1
- package/package/corpus/skills/cratis-arc-spring-data-kotlin/SKILL.md +163 -0
- package/package/corpus/skills/cratis-arc-testing-kotlin/SKILL.md +131 -0
- package/package/corpus/skills/cratis-arc-validation-kotlin/SKILL.md +44 -11
- package/package/corpus/skills/cratis-arc-validation-typescript/SKILL.md +5 -3
- package/package/corpus/skills/cratis-chronicle-cli-operations/SKILL.md +79 -25
- package/package/corpus/skills/cratis-chronicle-cli-operations/references/command-effects.md +57 -0
- package/package/corpus/skills/cratis-chronicle-client-dotnet/SKILL.md +87 -99
- package/package/corpus/skills/cratis-chronicle-client-dotnet/references/additional-surfaces.md +65 -0
- package/package/corpus/skills/cratis-chronicle-client-dotnet/references/client-construction.md +42 -0
- package/package/corpus/skills/cratis-chronicle-client-dotnet/references/compatibility-check.md +12 -0
- package/package/corpus/skills/cratis-chronicle-client-dotnet/references/discovery.md +43 -19
- package/package/corpus/skills/cratis-chronicle-client-dotnet/references/hosting.md +29 -1
- package/package/corpus/skills/cratis-chronicle-client-elixir/SKILL.md +158 -162
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/append-api.md +36 -15
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/compliance.md +32 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/connections.md +56 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/event-sources.md +64 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/pitfalls.md +25 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/projections.md +48 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/upgrading.md +34 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/variants.md +13 -5
- package/package/corpus/skills/cratis-chronicle-client-elixir/verification.json +23 -0
- package/package/corpus/skills/cratis-chronicle-client-go/SKILL.md +162 -0
- package/package/corpus/skills/cratis-chronicle-client-go/references/projections.md +73 -0
- package/package/corpus/skills/cratis-chronicle-client-kotlin/SKILL.md +87 -88
- package/package/corpus/skills/cratis-chronicle-client-kotlin/references/connection-lifecycle.md +13 -0
- package/package/corpus/skills/cratis-chronicle-client-kotlin/references/discovery-and-registration.md +14 -4
- package/package/corpus/skills/cratis-chronicle-client-kotlin/references/event-sources.md +65 -0
- package/package/corpus/skills/cratis-chronicle-client-kotlin/references/options.md +29 -0
- package/package/corpus/skills/cratis-chronicle-client-kotlin/references/spring-boot.md +13 -0
- package/package/corpus/skills/cratis-chronicle-client-kotlin/references/variants.md +5 -4
- package/package/corpus/skills/cratis-chronicle-client-typescript/SKILL.md +165 -156
- package/package/corpus/skills/cratis-chronicle-client-typescript/references/read-models-and-projections.md +54 -11
- package/package/corpus/skills/cratis-chronicle-client-typescript/references/testing.md +126 -0
- package/package/corpus/skills/cratis-chronicle-client-typescript/references/variants.md +3 -5
- package/package/corpus/skills/cratis-chronicle-client-typescript/verification.json +19 -0
- package/package/corpus/skills/cratis-chronicle-compliance/SKILL.md +36 -13
- package/package/corpus/skills/cratis-chronicle-decision-reads/SKILL.md +110 -0
- package/package/corpus/skills/cratis-chronicle-decision-reads/references/admission-and-ownership.md +57 -0
- package/package/corpus/skills/cratis-chronicle-decision-reads/verification.json +12 -0
- package/package/corpus/skills/cratis-chronicle-event-constraints/SKILL.md +58 -19
- package/package/corpus/skills/cratis-chronicle-event-constraints/references/closing-streams.md +73 -0
- package/package/corpus/skills/cratis-chronicle-event-modeling/SKILL.md +32 -3
- package/package/corpus/skills/cratis-chronicle-event-specifications/SKILL.md +18 -5
- package/package/corpus/skills/cratis-chronicle-event-type-migration/SKILL.md +32 -2
- package/package/corpus/skills/cratis-chronicle-hosting/SKILL.md +134 -0
- package/package/corpus/skills/cratis-chronicle-hosting/references/operations.md +89 -0
- package/package/corpus/skills/cratis-chronicle-hosting/verification.json +14 -0
- package/package/corpus/skills/cratis-chronicle-mcp-inspection/SKILL.md +93 -66
- package/package/corpus/skills/cratis-chronicle-mcp-inspection/references/blocked-tools.md +21 -7
- package/package/corpus/skills/cratis-chronicle-mcp-inspection/references/deployment.md +77 -0
- package/package/corpus/skills/cratis-chronicle-mcp-inspection/references/observational-tools.md +46 -4
- package/package/corpus/skills/cratis-chronicle-multi-tenancy/SKILL.md +15 -1
- package/package/corpus/skills/cratis-chronicle-projection/SKILL.md +44 -10
- package/package/corpus/skills/cratis-chronicle-projection/references/fluent-builder.md +7 -1
- package/package/corpus/skills/cratis-chronicle-projection/references/model-bound-attributes.md +8 -0
- package/package/corpus/skills/cratis-chronicle-reactor/SKILL.md +85 -105
- package/package/corpus/skills/cratis-chronicle-reactor/references/specifications.md +20 -1
- package/package/corpus/skills/cratis-chronicle-read-model/SKILL.md +2 -2
- package/package/corpus/skills/cratis-chronicle-read-model/references/queries.md +35 -16
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/SKILL.md +15 -3
- package/package/corpus/skills/cratis-chronicle-reducer/SKILL.md +23 -4
- package/package/corpus/skills/cratis-chronicle-web-workbench/SKILL.md +40 -15
- package/package/corpus/skills/cratis-cli-terminal-workbench/SKILL.md +20 -6
- package/package/corpus/skills/cratis-code-review/SKILL.md +25 -3
- package/package/corpus/skills/cratis-components-accessibility/SKILL.md +20 -4
- package/package/corpus/skills/cratis-components-schema-editor/SKILL.md +40 -28
- package/package/corpus/skills/cratis-components-schema-editor/references/tree-layout.md +62 -0
- package/package/corpus/skills/cratis-components-schema-editor/verification.json +14 -0
- package/package/corpus/skills/cratis-components-stepper-command-dialog/SKILL.md +16 -8
- package/package/corpus/skills/cratis-components-styling/SKILL.md +57 -20
- package/package/corpus/skills/cratis-components-styling/verification.json +13 -0
- package/package/corpus/skills/cratis-components-toolbar/SKILL.md +37 -7
- package/package/corpus/skills/cratis-components-toolbar/verification.json +12 -0
- package/package/corpus/skills/cratis-engineering-csharp-conventions/SKILL.md +6 -0
- package/package/corpus/skills/cratis-engineering-csharp-conventions/references/exceptions-logging-and-di.md +5 -3
- package/package/corpus/skills/cratis-fundamentals-concept/SKILL.md +19 -6
- package/package/corpus/skills/cratis-fundamentals-concept/references/typescript-concepts.md +97 -0
- package/package/corpus/skills/cratis-fundamentals-concept/verification.json +4 -1
- package/package/corpus/skills/cratis-fundamentals-concept-go/SKILL.md +112 -0
- package/package/corpus/skills/cratis-fundamentals-type-discovery/SKILL.md +54 -17
- package/package/corpus/skills/cratis-fundamentals-type-discovery/verification.json +14 -0
- package/package/corpus/skills/cratis-lens-browser-extension/SKILL.md +55 -28
- package/package/corpus/skills/cratis-performance-review/SKILL.md +5 -2
- package/package/corpus/skills/cratis-release-notes/SKILL.md +3 -1
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +5 -4
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +7 -11
- package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +26 -6
- package/package/corpus/skills/cratis-screenplay-command-surface/references/enum-numbers.md +4 -2
- package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +4 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/verification.json +7 -1
- package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +3 -2
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +6 -2
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +1 -0
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +34 -4
- package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +17 -24
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +19 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +11 -3
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/property-links.md +90 -4
- package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +19 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +3 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +3 -1
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +48 -0
- package/package/corpus/skills/cratis-screenplay-specifications/verification.json +3 -1
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +4 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +5 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +8 -6
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +8 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +4 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +7 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +24 -11
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +10 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +1543 -131
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +9 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +23 -7
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-ui-composition/SKILL.md +2 -0
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +27 -9
- package/package/corpus/skills/cratis-security-review/SKILL.md +9 -3
- package/package/corpus/skills/cratis-security-review/references/arc-boundaries.md +59 -0
- package/package/corpus/skills/cratis-specification-by-example/SKILL.md +7 -0
- package/package/corpus/skills/cratis-specifications-csharp/SKILL.md +43 -11
- package/package/corpus/skills/cratis-specifications-csharp/references/application-scenarios.md +16 -4
- package/package/corpus/skills/cratis-specifications-csharp/references/csharp-patterns.md +18 -5
- package/package/corpus/skills/cratis-specifications-csharp/references/integration-specs.md +21 -0
- package/package/corpus/skills/cratis-specifications-csharp/references/shared-lifecycle.md +34 -0
- package/package/corpus/skills/cratis-specifications-csharp/verification.json +13 -0
- package/package/corpus/skills/cratis-specifications-typescript/SKILL.md +14 -5
- package/package/corpus/skills/cratis-specifications-typescript/verification.json +12 -0
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +8 -2
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +6 -3
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/rendered-application.md +10 -1
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/scene-runtime.md +75 -0
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +5 -0
- package/package/corpus/skills/cratis-studio-mcp-safety-guidance/SKILL.md +14 -1
- package/package/profile-catalog.json +68 -1
- package/package.json +1 -1
- package/src/index.ts +3 -1
|
@@ -21,8 +21,9 @@ same model root or workspace export to all checks. Workflow:
|
|
|
21
21
|
|
|
22
22
|
## Verified product sources
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
Screenplay v4.142.0: add/rename/remove planner in `references/property-links.md`;
|
|
25
|
+
compliance in command-surface `references/compliance.md`. Other MCP evidence:
|
|
26
|
+
v4.139.0 `Documentation/screenplay/mcp/`.
|
|
26
27
|
Discover installed tools and schemas; CLI bundles can differ from the standalone
|
|
27
28
|
tool. Pins are in `cratis-screenplay-toolchain` `references/versions.md`.
|
|
28
29
|
Historical probes remain 4.66.0; registration example compilation/execution
|
|
@@ -39,14 +40,10 @@ directory when it holds `.play` files). Only when it answers that no root was gi
|
|
|
39
40
|
or that several roots are offered, pass `path`: the folder holding the project's `.play` files, otherwise the
|
|
40
41
|
folder the user names. Without a project, the server works in `Documents/Screenplay`
|
|
41
42
|
in the user's home folder, so do not invent a location. A root fixed at launch
|
|
42
|
-
can switch only to the
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
Submodules and `--separate-git-dir` checkouts require another connection.
|
|
47
|
-
|
|
48
|
-
Prefer a fixed root; the historical dynamic-roots bug and connection procedure
|
|
49
|
-
are in [MCP loop](references/mcp-loop.md). Send `initialize` and
|
|
43
|
+
can switch only to the same model folder in a registered Git worktree of the
|
|
44
|
+
same repository; rules and refusals are in [MCP loop](references/mcp-loop.md).
|
|
45
|
+
|
|
46
|
+
Prefer a fixed root (dynamic-roots history: [MCP loop](references/mcp-loop.md)). Send `initialize` and
|
|
50
47
|
`notifications/initialized` before any tool call, then discover `tools/list`
|
|
51
48
|
schemas rather than relying on a remembered count.
|
|
52
49
|
|
|
@@ -82,7 +79,7 @@ can keep that entry point; use the project's supported installation channel.
|
|
|
82
79
|
of `.play` files is one application, not independent files.
|
|
83
80
|
2. Use `search-declarations`, `declaration-details`, `find-references` and
|
|
84
81
|
`dependencies` to locate the owning declaration and affected references.
|
|
85
|
-
Before a property
|
|
82
|
+
Before a property change, read [property links](references/property-links.md):
|
|
86
83
|
`kind: "Property"`, `Owner.member` / `Owner.generationN.member`, direct mappings.
|
|
87
84
|
`complete: false` is incomplete evidence, never a successful empty list.
|
|
88
85
|
3. Read diagnostics and coverage limitations. Use `dependency-graph` for container
|
|
@@ -134,9 +131,10 @@ and applies; others send an edit request ([MCP loop](references/mcp-loop.md)).
|
|
|
134
131
|
3. Prefer `propose-rename` for supported logical renames: it coordinates fragments,
|
|
135
132
|
repairs proven references and preserves assigned identities. Never substitute
|
|
136
133
|
global string replacement for an explicit refusal.
|
|
137
|
-
4.
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
4. Prefer `propose-property` for property add/rename/remove, not hand-composed
|
|
135
|
+
`propose-ast` batches. Inspect the chain and never guess past a refusal:
|
|
136
|
+
[property links](references/property-links.md). Otherwise use `propose-source`
|
|
137
|
+
(whole text) or `propose-ast` (typed edits); `propose` is executable-only.
|
|
140
138
|
5. Keep reference policy `Safe`. Use `Draft` only for deliberately requested
|
|
141
139
|
unresolved model debt and report that debt; it does not waive structural,
|
|
142
140
|
identity or binding-protection checks.
|
|
@@ -172,15 +170,9 @@ files, 8 MiB total, 2 MiB per file, 1 MiB structured result, 200 items or 192 Ki
|
|
|
172
170
|
per page. Excluded directories: `.git`, `.ai-work`, `.screenplay`, `bin`, `obj`,
|
|
173
171
|
`node_modules`.
|
|
174
172
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
and the authored member order within a document but normalizes whitespace and
|
|
179
|
-
blank lines. Before applying, check the proposal's `droppedCommentCount`; when it
|
|
180
|
-
is not zero, read `read-proposal` with `view: "dropped-comments"` and disclose
|
|
181
|
-
each lost comment (`PLAY0288` also reports their count and lines). Untouched
|
|
182
|
-
documents retain exact bytes. A printer that loses requested structural fields
|
|
183
|
-
rejects the plan.
|
|
173
|
+
Choose formatting explicitly and disclose dropped comments before applying;
|
|
174
|
+
read [formatting and limits](references/mcp-loop.md#formatting-and-limits) for
|
|
175
|
+
`PreserveTrivia`, canonical consent, comment review and byte preservation.
|
|
184
176
|
|
|
185
177
|
`identityMigrationIssues`: read the [MCP loop](references/mcp-loop.md).
|
|
186
178
|
|
|
@@ -295,7 +287,8 @@ that the code compiles or behaves. Read `references/mcp-tools.md#code-attachment
|
|
|
295
287
|
clean run is not a bound or executable result.
|
|
296
288
|
- Operations/`numbers exact` remain unadmitted; routes bind as v8, public
|
|
297
289
|
boundaries v9, identity/overrides/filters v10, qualifying non-route Double
|
|
298
|
-
literals v11,
|
|
290
|
+
literals v11, enum numbers v12, compliance v13 (since 4.141.0;
|
|
291
|
+
limits: command-surface `references/compliance.md`).
|
|
299
292
|
CLI 3.53.1/Stage 4.73.1 bundle 4.137.0 and do not admit v12. Never drop or stub source contracts to bind.
|
|
300
293
|
- Distinguish authoring acceptance from `executableReady`; unsupported backend
|
|
301
294
|
capabilities are not a reason to drop source constructs or invent stubs.
|
package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md
CHANGED
|
@@ -266,7 +266,7 @@ See read-surface `references/named-keys.md` for the collection-key exclusion alg
|
|
|
266
266
|
| Binds as ESM v7 on standalone Screenplay 4.68.0 (source and release notes; `PLAY0268` on the 4.66.0 in Cratis CLI 3.28.x, probed) | `generated` properties and `returns` responses, generated fixtures and `then returns`: bound and executed by the reference runner; a policy, rule or requirement that references a generated value is `PLAY0273`, and a generated property on a concept with validation rules is `PLAY0268`. Stage 4.73.1 refuses them (`STAGE-ESM-028`/`-029`, Stage#175): gap-fill |
|
|
267
267
|
| Authorable, not executable (PLAY0268) | Systems/operations, the `numbers exact` source mode (PLAY0268; exact lowering of qualifying Double literals is the admitted v11) and refusal/redelivery remain unadmitted |
|
|
268
268
|
| Current routing and actor admission | Sources/streams and command/specification routes bind and reference-execute as v8; reaction `runs as system role` supplies the invocation actor as v10 on 4.125.0. Whole-workspace binding determines executable availability; CLI/Stage realization remains separate |
|
|
269
|
-
| Blocks binding (`PLAY0268`) | `pii`/`secret` concepts (
|
|
269
|
+
| Blocks binding (`PLAY0268`) | enum/identity compliance and events combining personal or explicitly subject-scoped secret values with explicit subject marks (4.141.0); the older CLI bundle refuses all `pii`/`secret` concepts (historical probe: "compliance attributes require portable data-subject semantics"); command `handler` (never binds; a command cannot declare both `produces` and `handler`, `PLAY0035`), bare `rule <Name>`, `require` or conditions over read-model paths, dates and `today` in comparisons, `$context.tenant`/claims/roles/causation in `produces`, `$env` conditions, `file` constraints, unquoted `import` of an external contract, a read model with neither explicit `key` nor unambiguous query-based identity as described above (composite keys remain unadmitted), queries with filters, scope, performer, context-derived `by` or composite `by` blocks (optional keyed and collection queries, including observable delivery, bind at 4.135.0), `$causedBy` and templates in projections |
|
|
270
270
|
| Blocks binding (`PLAY0271`, legacy meaning) | Command `reads` and `concurrency` |
|
|
271
271
|
| Deferred (`PLAY0269`, information) | Screens, layouts, templates, forms, contributions, UI profiles, themes, behaviors and `on`/`uses` |
|
|
272
272
|
| Metadata only (`PLAY0270`, information) | `domain`, `seed`, `persona`, trigger and other descriptions, and `file` provenance on declarations |
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
- Identity state (`.screenplay/identities.json`)
|
|
14
14
|
- Read-only views worth knowing
|
|
15
15
|
- Failures (use `failureKind`, never message text)
|
|
16
|
+
- Formatting and limits
|
|
16
17
|
- Provenance
|
|
17
18
|
|
|
18
19
|
The working loop for the session that owns the model connection: connect, orient,
|
|
@@ -106,7 +107,7 @@ the server sends `roots/list` and serves `tools/list` after the reply).
|
|
|
106
107
|
`find-specification-obligations` (presence, not execution), use
|
|
107
108
|
`find-modeling-smells` as questions needing a domain consequence, and compare
|
|
108
109
|
generated/curated exported snapshots with `semantic-diff`.
|
|
109
|
-
Before
|
|
110
|
+
Before a property change, use `find-references`/`dependencies`
|
|
110
111
|
`kind: "Property"` (4.138.0+) and `Owner.member` or historical event
|
|
111
112
|
`Owner.generationN.member`. Follow direct mapping counterparts one query at a
|
|
112
113
|
time; inspect incomplete/ambiguous evidence and `reasons`. `complete: false`
|
|
@@ -117,7 +118,11 @@ the server sends `roots/list` and serves `tools/list` after the reply).
|
|
|
117
118
|
4. Choose the edit route (next section). For typed edits: `syntax-schema` for the
|
|
118
119
|
node kind, then `read-ast` with `includeContent` for revision-bound handles.
|
|
119
120
|
Never invent a handle.
|
|
120
|
-
5.
|
|
121
|
+
5. Prefer `propose-property` for supported property add/rename/remove chains,
|
|
122
|
+
not hand-composed `propose-ast` batches; inspect `incomplete`, `needsDecision`
|
|
123
|
+
and `chainCandidates` before choosing sources, fixtures or event evolution.
|
|
124
|
+
Exact arguments and decisions: [property links](property-links.md).
|
|
125
|
+
Otherwise propose one coherent change (a slice works best): `propose-source` for whole
|
|
121
126
|
`.play` text, `propose-ast` for focused typed edits, with
|
|
122
127
|
`validation: "Authoring"`, `referencePolicy: "Safe"` (`Draft` only for
|
|
123
128
|
deliberate, reported gaps), `formatting: "PreserveTrivia"` for value and mapping
|
|
@@ -251,6 +256,18 @@ or create a fallback folder to bypass the conflict.
|
|
|
251
256
|
|
|
252
257
|
See "Failures (use `failureKind`, never message text)" in SKILL.md.
|
|
253
258
|
|
|
259
|
+
## Formatting and limits
|
|
260
|
+
|
|
261
|
+
Formatting is explicit. Prefer `PreserveTrivia` for identifier, literal-value and
|
|
262
|
+
whole-mapping edits; it rewrites only the changed span. Structural edits (add,
|
|
263
|
+
remove, move) need `CanonicalizeTouchedDocuments`, which keeps attached comments
|
|
264
|
+
and the authored member order within a document but normalizes whitespace and
|
|
265
|
+
blank lines. Before applying, check the proposal's `droppedCommentCount`; when it
|
|
266
|
+
is not zero, read `read-proposal` with `view: "dropped-comments"` and disclose
|
|
267
|
+
each lost comment (`PLAY0288` also reports their count and lines). Untouched
|
|
268
|
+
documents retain exact bytes. A printer that loses requested structural fields
|
|
269
|
+
rejects the plan.
|
|
270
|
+
|
|
254
271
|
## Provenance
|
|
255
272
|
|
|
256
273
|
The structure of this loop (ownership, edit-request shape, failure handling) is
|
|
@@ -51,7 +51,7 @@ the [MCP loop](mcp-loop.md).
|
|
|
51
51
|
| Source and validation | `diagnostics`, `read-document`, `merged-document`, `syntax-schema` | Read exact source or typed structure and diagnose problems |
|
|
52
52
|
| Workspace inspection | `open-workspace`, `read-workspace`, `read-ast`, `workspace-state`, `export-workspace`, `repair-capabilities` | Obtain current identities, handles, readiness, code attachment requirements, source-map locations, durable-state status and the repair catalog |
|
|
53
53
|
| Visual (MCP-Apps hosts only) | `visualize-model` | Draw the board for the model or a `proposalId`; its `sketch` argument previews a what-if of whole documents. Reads only |
|
|
54
|
-
| Planning | `propose-source`, `propose-ast`, `propose-rename`, `propose-move`, `propose-repair`, `propose-number-enum-members`, `propose-extract-inline-event`, `propose`, `recommend-layout`, `expand-layout` | Produce validated, reviewable candidates without writing them |
|
|
54
|
+
| Planning | `propose-source`, `propose-ast`, `propose-rename`, `propose-move`, `propose-repair`, `propose-property`, `propose-number-enum-members`, `propose-extract-inline-event`, `propose`, `recommend-layout`, `expand-layout` | Produce validated, reviewable candidates without writing them |
|
|
55
55
|
| Review | `read-proposal`, `discard-proposal` | Inspect exact changes, dropped comments and proposed attachments, or abandon a connection-local proposal |
|
|
56
56
|
| Effects | `apply`, `recover-workspace` | Apply an accepted plan or explicitly recover an interrupted write |
|
|
57
57
|
|
|
@@ -59,7 +59,15 @@ the [MCP loop](mcp-loop.md).
|
|
|
59
59
|
|
|
60
60
|
`propose` is the executable-only whole-document interface. Prefer `propose-source`
|
|
61
61
|
for whole `.play` text, `propose-ast` for focused typed edits, and `propose-rename`
|
|
62
|
-
for proved logical renames.
|
|
62
|
+
for proved logical renames. Prefer `propose-property` over hand-composed AST
|
|
63
|
+
batches for property chains: rename/remove shipped in 4.140.0, add in 4.142.0.
|
|
64
|
+
Add takes `owner`, `expectedOwnerName`, `name`, `type`, `optional`,
|
|
65
|
+
`hops` (`{at, name}` or `{at, value}`) and `fixtureValue`, plus both revision guards.
|
|
66
|
+
Missing sources/required fixture values refuse `SourcesRequired`/`FixtureValueRequired`;
|
|
67
|
+
off-chain hops refuse `HopNotOnChain`, nested feeds `UnsupportedPropertySpan`.
|
|
68
|
+
Read `property.needsDecision` and `property.chainCandidates`, select an event
|
|
69
|
+
evolution mode even for optional additions, and review before applying.
|
|
70
|
+
Exact arguments, AutoMap and fixture rules: [property evidence and planning](property-links.md). A
|
|
63
71
|
source-only authoring proposal may be accepted while `executableReady` is false.
|
|
64
72
|
That is not permission to claim the application runs.
|
|
65
73
|
|
|
@@ -272,7 +280,7 @@ limits. Continue with `expectedSourceRevision`.
|
|
|
272
280
|
|
|
273
281
|
From 4.138.0, `find-references` and `dependencies` accept `kind: "Property"`
|
|
274
282
|
and `Owner.member`, or historical event `Owner.generationN.member`. Before a
|
|
275
|
-
|
|
283
|
+
property change, read [property links](property-links.md) for exact query/result
|
|
276
284
|
shapes, roles, direct counterpart traversal, revision paging and `complete: false`
|
|
277
285
|
with `reasons`. Incomplete evidence is never a successful empty list. These tools
|
|
278
286
|
inspect authored links, not code execution or a transitive runtime graph.
|
package/package/corpus/skills/cratis-screenplay-model-authoring/references/property-links.md
CHANGED
|
@@ -7,11 +7,14 @@
|
|
|
7
7
|
|
|
8
8
|
- Address and query
|
|
9
9
|
- Read evidence, not just a count
|
|
10
|
+
- Propose a property change (4.142.0)
|
|
11
|
+
- Add with explicit sources and fixtures
|
|
10
12
|
|
|
11
13
|
Screenplay 4.138.0 released property-path evidence in `find-references` and
|
|
12
14
|
`dependencies`; this guidance was checked against 4.139.0. Discover installed
|
|
13
15
|
`tools/list`: CLI 3.53.1's 4.137.0 bundle predates it. These are read-only
|
|
14
|
-
inspection tools
|
|
16
|
+
inspection tools. Standalone 4.140.0 adds the separate `propose-property` rename/remove planner;
|
|
17
|
+
4.142.0 adds `add`. The CLI bundle has neither capability.
|
|
15
18
|
|
|
16
19
|
## Address and query
|
|
17
20
|
|
|
@@ -114,7 +117,7 @@ same-named properties in unrelated declarations do not affect completeness.
|
|
|
114
117
|
External code contents and registrations remain outside coverage even with
|
|
115
118
|
`complete: true`; authored links do not prove executable admission.
|
|
116
119
|
|
|
117
|
-
Before a
|
|
120
|
+
Before a property change: pin the revision, inspect incoming readers and outgoing
|
|
118
121
|
counterparts, page to completion, resolve uncertainties, then choose the supported
|
|
119
122
|
identity-safe edit route with the connection owner. Never infer safe deletion from
|
|
120
123
|
zero resolved hits or edit every same-named field. An event-property change still
|
|
@@ -122,5 +125,88 @@ needs a persisted-contract evolution decision; the catalog is not storage eviden
|
|
|
122
125
|
|
|
123
126
|
Source/output authority: `v4.139.0:Documentation/screenplay/mcp/reference.md`
|
|
124
127
|
(property links), `Source/DotNET/Screenplay.Mcp/McpPropertyDependencies.cs`,
|
|
125
|
-
`McpToolSchemas.cs`, and decision 0044's released prerequisite index. The planner
|
|
126
|
-
|
|
128
|
+
`McpToolSchemas.cs`, and decision 0044's released prerequisite index. The planner's release evidence is separate below.
|
|
129
|
+
|
|
130
|
+
## Propose a property change (4.142.0)
|
|
131
|
+
|
|
132
|
+
Use `propose-property`, not hand-composed `propose-ast` batches, for supported
|
|
133
|
+
add/rename/remove changes along a proven chain. For add, inspect existing
|
|
134
|
+
producer/consumer properties and mapping blocks first; the new property has no
|
|
135
|
+
reference address yet.
|
|
136
|
+
|
|
137
|
+
Read the target property handle with `read-ast`, then call `propose-property`
|
|
138
|
+
with `expectedRevision`, `expectedCatalogRevision`, `action: "rename"|"remove"`,
|
|
139
|
+
`target` and `expectedName`. Rename also needs `newName`. Optional `alsoRename`
|
|
140
|
+
or `alsoRemove` entries are `{ "target": <handle>, "expectedName": <name> }`.
|
|
141
|
+
Select only intended command, current-event and non-key read-model properties:
|
|
142
|
+
chain membership establishes eligibility, not permission to edit every field.
|
|
143
|
+
Off-chain selections refuse atomically (`HopNotOnChain`). Historical generations, inline events,
|
|
144
|
+
keys, opaque or incomplete links and unsupported spans refuse rather than guess.
|
|
145
|
+
|
|
146
|
+
Rename repairs proven references and fixtures. Renaming only a command input
|
|
147
|
+
keeps the event payload name; broken AutoMap links become explicit mappings.
|
|
148
|
+
Removal refuses while readers remain. Removed expected values disclose
|
|
149
|
+
`weakensAssertion: true`; when inherited `then` steps cannot be determined, removal
|
|
150
|
+
refuses `AmbiguousPropertyReference`, not a false assertion-preservation verdict.
|
|
151
|
+
Unrelated same-named fields appear in `property.notChanged`.
|
|
152
|
+
|
|
153
|
+
Read `property.needsDecision` for refusal reasons and located candidates;
|
|
154
|
+
`property.chainCandidates` lists unselected chain members, not automatic edits.
|
|
155
|
+
A refusal returns `success: false` and no writable partial candidate. Missing an
|
|
156
|
+
event mode returns `EventContractChangeRequiresDecision`; do not bypass it by
|
|
157
|
+
text editing or claiming the catalog proves non-persistence.
|
|
158
|
+
|
|
159
|
+
For any selected event property (including optional additions), choose exactly one mode: `newGeneration: true`
|
|
160
|
+
appends N+1 and preserves history; `eventNeverPersisted: true` edits current N in
|
|
161
|
+
place and requires actual knowledge that it was never stored. Neither flag selects
|
|
162
|
+
additional events. New generations require transformations before Chronicle deployment.
|
|
163
|
+
|
|
164
|
+
Default validation is `Authoring` (optional `Executable`), formatting
|
|
165
|
+
`PreserveTrivia`, reference policy always `Safe`. Structural changes require
|
|
166
|
+
explicit `CanonicalizeTouchedDocuments` consent. Inspect retained `read-proposal`
|
|
167
|
+
and `view: "semantic-diff"` before `apply`; only apply writes source and identities.
|
|
168
|
+
Review `property.generations`, always an array ordered by canonical event address,
|
|
169
|
+
with one entry per selected event: `event`, `from`, `to`, `mode`. In-place edits
|
|
170
|
+
have equal revisions. `[]` means no accepted planned event edits, not success;
|
|
171
|
+
there is no singular `property.generation`. `deployableWithoutTransformation`
|
|
172
|
+
and `esmVersionKnown` are independent of authoring acceptance.
|
|
173
|
+
|
|
174
|
+
## Add with explicit sources and fixtures
|
|
175
|
+
|
|
176
|
+
Read the declaration's original `read-ast` handle. Send `action: "add"`, both
|
|
177
|
+
revision guards, `owner`, `expectedOwnerName`, `name` (new unqualified member),
|
|
178
|
+
`type` (authored type text, not a concept declaration), and optional `optional`
|
|
179
|
+
(default false). Use the flag, not an optional suffix in `type`.
|
|
180
|
+
|
|
181
|
+
`hops` defaults to `[]`: each entry has an original `at` handle and exactly one
|
|
182
|
+
of `name` or `value`. `{at, name}` adds the same type at a connected declaration;
|
|
183
|
+
`{at, value}` supplies a value expression at a `produces`, `from` or capture
|
|
184
|
+
`append` block. Every selected event producer/read-model consumer needs an
|
|
185
|
+
explicit mapping decision or compatible same-named AutoMap source. Never infer
|
|
186
|
+
a business expression. Existing property names and off-chain hops refuse.
|
|
187
|
+
Add does not accept `target`, `expectedName`, `newName`, `alsoRename` or `alsoRemove`;
|
|
188
|
+
add-only fields are invalid for rename/remove.
|
|
189
|
+
|
|
190
|
+
For a required addition with existing fixtures/assertions, supply `fixtureValue`
|
|
191
|
+
as **literal source text**, for example `"\"normal\""` for a String value. The
|
|
192
|
+
planner adds it to existing specification steps, examples and query results;
|
|
193
|
+
`optional: true` adds no fixture values. A literal is not proof of behavior:
|
|
194
|
+
inspect the assertions and run `run-specifications` on the retained proposal.
|
|
195
|
+
|
|
196
|
+
| Refusal | Response |
|
|
197
|
+
| --- | --- |
|
|
198
|
+
| `SourcesRequired` | Select missing producer/consumer mappings from the located candidates; do not guess sources |
|
|
199
|
+
| `FixtureValueRequired` | Supply the intended required literal fixture value; do not weaken assertions |
|
|
200
|
+
| `HopNotOnChain` | Remove or correct the off-chain selection; never edit same-named unrelated fields |
|
|
201
|
+
| `UnsupportedPropertySpan` | Preserve source and report unsupported nested feeds/expressions or shared spans; do not flatten the model to bypass refusal |
|
|
202
|
+
|
|
203
|
+
Use `CanonicalizeTouchedDocuments` for additions. Review `property.changed`
|
|
204
|
+
(`added`, `fixtureAdded`), decisions, chain candidates and generations, exact
|
|
205
|
+
bytes, dropped comments, identities and semantic diff before ordinary `apply`.
|
|
206
|
+
Even an optional event addition needs the same explicit evolution mode above.
|
|
207
|
+
|
|
208
|
+
Authority: Screenplay `v4.142.0:Source/DotNET/Screenplay.Mcp/McpWorkspaces.Property.cs`,
|
|
209
|
+
`Screenplay/Workspaces/WorkspaceProperty{Request,Plan,Safety,Report}.cs`,
|
|
210
|
+
`WorkspacePropertyAdd{Plan,Edits}.cs`, `WorkspacePropertyAssertionProvenance.cs`,
|
|
211
|
+
`WorkspaceEventGenerations.cs`, and `Documentation/screenplay/mcp/{edit,reference,authoring-tools}.md`;
|
|
212
|
+
the published contract's `mcpTools` entry for `propose-property`; decisions 0067 and 0044.
|
|
@@ -4,9 +4,25 @@
|
|
|
4
4
|
"fixtures": [],
|
|
5
5
|
"assertions": [
|
|
6
6
|
{ "kind": "play-compiles" },
|
|
7
|
+
{ "kind": "skill-contains", "value": "propose-property" },
|
|
8
|
+
{ "kind": "skill-contains", "value": "not hand-composed `propose-ast` batches", "file": "references/property-links.md" },
|
|
9
|
+
{ "kind": "skill-contains", "value": "`incomplete`, `needsDecision`", "file": "references/mcp-loop.md" },
|
|
10
|
+
{ "kind": "skill-contains", "value": "`property.chainCandidates`", "file": "references/property-links.md" },
|
|
11
|
+
{ "kind": "skill-contains", "value": "EventContractChangeRequiresDecision", "file": "references/property-links.md" },
|
|
12
|
+
{ "kind": "skill-contains", "value": "action: \"add\"", "file": "references/property-links.md" },
|
|
13
|
+
{ "kind": "skill-contains", "value": "`expectedOwnerName`", "file": "references/property-links.md" },
|
|
14
|
+
{ "kind": "skill-contains", "value": "{at, name}", "file": "references/property-links.md" },
|
|
15
|
+
{ "kind": "skill-contains", "value": "{at, value}", "file": "references/property-links.md" },
|
|
16
|
+
{ "kind": "skill-contains", "value": "`fixtureValue`", "file": "references/property-links.md" },
|
|
17
|
+
{ "kind": "skill-contains", "value": "SourcesRequired", "file": "references/property-links.md" },
|
|
18
|
+
{ "kind": "skill-contains", "value": "FixtureValueRequired", "file": "references/property-links.md" },
|
|
19
|
+
{ "kind": "skill-contains", "value": "HopNotOnChain", "file": "references/property-links.md" },
|
|
20
|
+
{ "kind": "skill-contains", "value": "UnsupportedPropertySpan", "file": "references/property-links.md" },
|
|
21
|
+
{ "kind": "skill-contains", "value": "weakensAssertion: true", "file": "references/property-links.md" },
|
|
22
|
+
{ "kind": "skill-contains", "value": "property.generations", "file": "references/property-links.md" },
|
|
7
23
|
{
|
|
8
24
|
"kind": "skill-contains",
|
|
9
|
-
"value": "Screenplay v4.
|
|
25
|
+
"value": "Screenplay v4.142.0"
|
|
10
26
|
},
|
|
11
27
|
{
|
|
12
28
|
"kind": "skill-contains",
|
|
@@ -90,7 +106,8 @@
|
|
|
90
106
|
},
|
|
91
107
|
{
|
|
92
108
|
"kind": "skill-contains",
|
|
93
|
-
"value": "`view: \"dropped-comments\"`"
|
|
109
|
+
"value": "`view: \"dropped-comments\"`",
|
|
110
|
+
"file": "references/mcp-loop.md"
|
|
94
111
|
},
|
|
95
112
|
{
|
|
96
113
|
"kind": "skill-contains",
|
package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md
CHANGED
|
@@ -96,7 +96,9 @@ A reaction that both produces events and invokes commands keeps its single model
|
|
|
96
96
|
and the commands: on Arc 22.72.0 or later (the Arc the Stage scaffold pins accepts a collection in a command handler only when every element is a command, so a rendered app needs a proven dependency override) the runtime appends the events first as one batch, then
|
|
97
97
|
runs the commands in order, with no transaction across the two effects; a failing command stops the
|
|
98
98
|
later ones but keeps the committed events, and a retry can append the events again, so make the
|
|
99
|
-
handler idempotent
|
|
99
|
+
handler idempotent independently of `[OnceOnly]`, which excludes replay only, not recovery
|
|
100
|
+
or crash redelivery (Chronicle v19.50.1 `Documentation/code-analysis/CHR0022.mdx`;
|
|
101
|
+
see `cratis-chronicle-reactor`). Return a
|
|
100
102
|
stable array or list. The Stage scaffold pins an older Arc, so raise the version through
|
|
101
103
|
`Customizations/Dependencies.props` only after a restore and build proves it. Never split the
|
|
102
104
|
reaction or drop an effect to dodge rendering.
|
|
@@ -71,7 +71,9 @@ question is not four approvals.
|
|
|
71
71
|
payload: one line per read model. One schema reused for every command and view may indicate
|
|
72
72
|
the per-view judgment was skipped: check for a recorded reason per view before concluding.
|
|
73
73
|
6. **Example data**: a small cast per feature; reuse only where meaning agrees; preserve
|
|
74
|
-
existing intentional fixtures (`references/scenario-catalogue.md` "Example data").
|
|
74
|
+
existing intentional fixtures (`references/scenario-catalogue.md` "Example data"). Shared
|
|
75
|
+
fixtures may live as typed `example`s in another document beside the declarations they type
|
|
76
|
+
(`cratis-screenplay-specifications` `references/examples-and-routes.md`).
|
|
75
77
|
7. **Draft commands**: happy path, each rule, denial, duplicates and retries, competing claims,
|
|
76
78
|
state violations, alternative branches, compensation, external failure, evolution. In each
|
|
77
79
|
rejection vary only the value under test. Use typed `parameter`/named `case`
|
package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
## Contents
|
|
7
7
|
|
|
8
8
|
- Typed examples
|
|
9
|
+
- Examples typed from another document
|
|
9
10
|
- Effective values
|
|
10
11
|
- Event routes
|
|
11
12
|
- Redelivery locators
|
|
@@ -49,6 +50,53 @@ module Projects
|
|
|
49
50
|
name = "Override"
|
|
50
51
|
```
|
|
51
52
|
|
|
53
|
+
## Examples typed from another document
|
|
54
|
+
|
|
55
|
+
An example's type may be an event, command or read model declared in another
|
|
56
|
+
document of the same compilation, by simple name when unambiguous or by qualified
|
|
57
|
+
name (`Billing.Facts.Recording.Recorded`). Checked against Screenplay v4.139.0
|
|
58
|
+
(Screenplay#648, released in 4.135.1) and the standalone 4.139.0 compiler:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
// declarations.play: module Billing > feature Facts > slice StateChange Recording
|
|
62
|
+
// declares command Record, event Recorded and a specification using the examples
|
|
63
|
+
// application.play
|
|
64
|
+
import "declarations.play"
|
|
65
|
+
|
|
66
|
+
example Fact : Billing.Facts.Recording.Recorded
|
|
67
|
+
amount = 10
|
|
68
|
+
for "one"
|
|
69
|
+
example Input : Record
|
|
70
|
+
id = "one"
|
|
71
|
+
amount = 20
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
That folder compiled with warnings as errors and `screenplay test` passed the
|
|
75
|
+
specification that uses `given Fact` and `when Input`. Rules:
|
|
76
|
+
|
|
77
|
+
- A document checked on its own defers an imported type, as for an inline
|
|
78
|
+
`given`; it reports no `PLAY0520` there.
|
|
79
|
+
- Values are checked only when the compilation includes the declaration. A wrong
|
|
80
|
+
value (a string for an `Int`) surfaces as `PLAY0525` at binding (`screenplay
|
|
81
|
+
test`), not at compile.
|
|
82
|
+
- A type that is still unknown or ambiguous after assembly, or names a concept,
|
|
83
|
+
type or another example, is `PLAY0520`. A scratch file importing only the
|
|
84
|
+
contract name is exactly that case:
|
|
85
|
+
|
|
86
|
+
```screenplay expect PLAY0520
|
|
87
|
+
import Billing.Facts.Recording.Recorded
|
|
88
|
+
example Fact : Recorded
|
|
89
|
+
amount = 10
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
- Import the declaring file (`import "declarations.play"`), not the contract
|
|
93
|
+
name. A named `import X.Y.Z` of a declaration the application already has warns
|
|
94
|
+
`PLAY0290` (no effect), and binding still refuses any named import with
|
|
95
|
+
`PLAY0268`, as for inline givens; public `from "<store>"` imports are refused
|
|
96
|
+
the same way (#481).
|
|
97
|
+
- The example is resolved in its own declaration scope, so shared example data may
|
|
98
|
+
live beside the declarations it types, in any document.
|
|
99
|
+
|
|
52
100
|
## Effective values
|
|
53
101
|
|
|
54
102
|
An example occupies the ordinary name slot in given/event, given readmodel,
|
|
@@ -79,6 +79,8 @@
|
|
|
79
79
|
{
|
|
80
80
|
"kind": "skill-contains",
|
|
81
81
|
"value": "Cratis/cli#242", "file": "references/reactions-and-cascades.md"
|
|
82
|
-
}
|
|
82
|
+
},
|
|
83
|
+
{ "kind": "skill-contains", "value": "Examples typed from another document", "file": "references/examples-and-routes.md" },
|
|
84
|
+
{ "kind": "skill-contains", "value": "`PLAY0520`", "file": "references/examples-and-routes.md" }
|
|
83
85
|
]
|
|
84
86
|
}
|
|
@@ -156,8 +156,10 @@ option, mark it `ASSUMED` in the slice or module `documentation` and in the sess
|
|
|
156
156
|
block compiles but is PLAY0271 at binding. Keep both when they state real intent; they are not
|
|
157
157
|
protection. `description` text never reaches rendered code: a rule that lives only in prose is
|
|
158
158
|
unenforced there.
|
|
159
|
-
- `pii` and `secret`
|
|
160
|
-
|
|
159
|
+
- `pii` and `secret` bind as ESM v13 on standalone 4.142.0 (since 4.141.0), not the pinned CLI;
|
|
160
|
+
enum/identity compliance and protected events with explicit subject marks still
|
|
161
|
+
refuse PLAY0268 (command-surface `references/compliance.md`). Legacy markers are
|
|
162
|
+
deprecated (PLAY0565). Never remove protection to pass a tool. PLAY0515 also refuses
|
|
161
163
|
scalar/composite stream-id types and route mapping sources, including nested paths.
|
|
162
164
|
- At 4.127.0 stream-id literals must be nonempty, well-formed NFC text (refused,
|
|
163
165
|
not normalized); integer ids in Double mode stay within ±(2^53−1). Exact mode
|
|
@@ -5,16 +5,17 @@ cross-stream references as payload, three kinds of uniqueness constraint, a stat
|
|
|
5
5
|
rule recorded as **NOT enforced in the model today**, a declared `concurrency` scope, and an
|
|
6
6
|
active-state view with removal. Read it with `consistency-and-concurrency.md` (sections 1-4).
|
|
7
7
|
|
|
8
|
-
The model compiles at 4.127.0 (V1, warnings as errors) but is not binding-ready by design:
|
|
9
|
-
|
|
10
|
-
`
|
|
8
|
+
The model compiles at 4.127.0 (V1, warnings as errors) but is not binding-ready by design:
|
|
9
|
+
`reads` and the `concurrency` block are PLAY0271, and `require` over a view is PLAY0268.
|
|
10
|
+
The `pii` concept failed binding on that compiler and still fails on the pinned CLI,
|
|
11
|
+
but binds as v13 on standalone 4.142.0 (since 4.141.0). Keep those lines: they state real intent.
|
|
11
12
|
|
|
12
13
|
```screenplay expect PLAY0516 test=unbound
|
|
13
14
|
// cratis-screenplay-streams-and-consistency: complete design-mode example (V1 with --warnings-as-errors).
|
|
14
15
|
// Shows: one business identity per stream, cross-stream references as payload, uniqueness
|
|
15
16
|
// constraints (single, composite with release, unique event), a recorded state-dependent rule
|
|
16
17
|
// that Screenplay cannot enforce, a declared concurrency scope, and an active-state view with removal.
|
|
17
|
-
// Historical binding probes
|
|
18
|
+
// Historical/CLI binding probes refuse compliance; standalone 4.142.0 binds this pii concept as v13 (since 4.141.0), the
|
|
18
19
|
// concurrency block and `reads` are PLAY0271, `require` over a view is PLAY0268. Keep them: they state
|
|
19
20
|
// real intent. The capacity rule is NOT enforced in the model today (see the slice description).
|
|
20
21
|
|
|
@@ -22,7 +22,7 @@ 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.
|
|
25
|
+
The standalone pin is Screenplay 4.142.0.
|
|
26
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.
|
|
@@ -31,7 +31,7 @@ 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
33
|
recorded in that vector. These retained results are not a rerun on CLI 3.53.1
|
|
34
|
-
or Screenplay 4.
|
|
34
|
+
or Screenplay 4.142.0.
|
|
35
35
|
|
|
36
36
|
## Ground rules
|
|
37
37
|
|
|
@@ -44,7 +44,7 @@ or Screenplay 4.139.0.
|
|
|
44
44
|
3. **Pick the compiler deliberately and name it.** Standalone `screenplay` for
|
|
45
45
|
current language checks and reference specifications; `cratis` for rendering
|
|
46
46
|
and generation. Bundled and standalone versions differ (CLI 3.53.1 bundles 4.137.0;
|
|
47
|
-
the standalone pin is 4.
|
|
47
|
+
the standalone pin is 4.142.0). Report both tool and
|
|
48
48
|
version, rather than transferring a verdict across releases.
|
|
49
49
|
4. **Know the mode** (design, executable, renderable) and write from its subset.
|
|
50
50
|
5. **Capability is not correctness.** The tool you ran decides what is accepted today; the
|
|
@@ -90,8 +90,8 @@ V2 and V3 need MCP (V3 alone can also be read from `cratis screenplay validate -
|
|
|
90
90
|
server with a fixed root when the tool is older than 4.63.2 (the roots bug hit 4.63.1 and the
|
|
91
91
|
4.60.1 bundled by cratis before 3.28.2; 4.66.0 and later and cratis 3.28.2 are fine). A subagent without MCP reports "V2 not run: no MCP in this agent".
|
|
92
92
|
|
|
93
|
-
One line per verdict, tool first, for example `V1 pass (screenplay 4.
|
|
94
|
-
`V3 blocked: PLAY0268 x3 (filter query,
|
|
93
|
+
One line per verdict, tool first, for example `V1 pass (screenplay 4.142.0, 3 files)` and
|
|
94
|
+
`V3 blocked: PLAY0268 x3 (filter query, enum compliance)`. Name the source identity (commit plus the digest from
|
|
95
95
|
the source-identity helper (`cratis-screenplay-modeling-lifecycle` `references/verdicts-and-modes.md` "Source identity")) the verdict ran on; keep it apart from the MCP
|
|
96
96
|
`modelRevision`, which is semantic and, without `.screenplay/identities.json`,
|
|
97
97
|
changes with the root folder name.
|
|
@@ -102,7 +102,9 @@ changes with the root folder name.
|
|
|
102
102
|
`references/cheat-sheet.md`. Read [references/cheat-sheet-example.md](references/cheat-sheet-example.md) when you need one complete design-mode document with every construct family.
|
|
103
103
|
- **Executable** (binds, V3): `references/executable-subset.md`. Optional keyed lookups, unfiltered
|
|
104
104
|
lists and lists narrowed by one `by` key (observable too); `filter`, `scoped to`, `performer` and composite `by` do not bind; no handler (PLAY0268, with or without `implementation`/`hint`); `reads` and
|
|
105
|
-
`concurrency` do not bind (PLAY0271);
|
|
105
|
+
`concurrency` do not bind (PLAY0271); concept compliance binds as v13 on standalone
|
|
106
|
+
4.142.0 (since 4.141.0), not the pinned CLI (precise refusals: command-surface `references/compliance.md`);
|
|
107
|
+
v6 constructs bind on Screenplay 4.61 or
|
|
106
108
|
later (standalone, and cratis 3.28.2 or later); generated values and `returns` responses bind (ESM v7)
|
|
107
109
|
from Screenplay 4.68.0 (also in the current CLI bundle) (`references/generated-responses-example.md`). Read [references/executable-example.md](references/executable-example.md) when you need a small StateChange and StateView model that binds executable, [references/pdl-example.md](references/pdl-example.md) when writing projection forms that bind and run, and [references/automation-translate-example.md](references/automation-translate-example.md) when writing Automation and Translate slices (ESM v6).
|
|
108
110
|
- **Renderable** (V5): `references/renderable-subset.md` has the current Stage 4.73.1 table and
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
One complete document with every construct family. Design mode, not executable. Prose rules: [cheat-sheet.md](cheat-sheet.md); tool versions: [versions.md](versions.md); what binds: [executable-subset.md](executable-subset.md).
|
|
4
4
|
|
|
5
|
-
Binding blockers: unquoted import, `
|
|
5
|
+
Binding blockers: unquoted import, `reads` (PLAY0271), `starts with`, a `filter` query (lists and observable lists bind). Executable shapes are in the sibling examples. The bare-marker fence compiles warning-free on standalone 4.127.0; the earlier legacy-marker version compiled on 4.66.0 and CLI 3.28.2. `RecordingAPayment` lists the `InvoiceClosed` cascade, which the cratis 3.27.1 bundle (4.60.1) rejected with a false PLAY0285 ("outcome cannot be produced by 'RecordPayment'"); 3.28.2 accepts it.
|
|
6
|
+
|
|
7
|
+
Concept compliance itself binds as ESM v13 on standalone 4.142.0 (first released
|
|
8
|
+
in 4.141.0); reasons remain report-only PLAY0270. CLI 3.53.1 bundles Screenplay
|
|
9
|
+
4.137.0, which refuses markers; standalone Stage 4.76.0 admits only through v12
|
|
10
|
+
(Stage#345). Binder-only PLAY0268
|
|
11
|
+
refusals and subject-lineage limits: command-surface `references/compliance.md`.
|
|
6
12
|
|
|
7
13
|
```screenplay test=unbound
|
|
8
14
|
// Design-mode cheat-sheet: every construct family; compiles warning-free on the standalone tool.
|
|
@@ -12,7 +18,7 @@ import Customers.CustomerRegistered // unquoted = another bounded context
|
|
|
12
18
|
|
|
13
19
|
concept InvoiceId : Uuid // primitives: Uuid String Int Decimal Bool Date DateTime Enum
|
|
14
20
|
concept PaymentId : Uuid
|
|
15
|
-
concept Email : String pii //
|
|
21
|
+
concept Email : String pii // v13 since 4.141.0; current standalone 4.142.0 binds; pinned CLI refuses
|
|
16
22
|
pii reason "Identifies a person"
|
|
17
23
|
validate
|
|
18
24
|
not empty message "An email is required"
|
|
@@ -172,8 +172,10 @@ escapes `%`/`|`, not an inferred split of legacy text.
|
|
|
172
172
|
|
|
173
173
|
Identity declarations and event `subject` are metadata; reading a declared
|
|
174
174
|
`$identity` detail in executable clauses is PLAY0268. `runs as` is admitted as
|
|
175
|
-
ESM v10 in the current standalone, not a current PLAY0268 gap.
|
|
176
|
-
|
|
175
|
+
ESM v10 in the current standalone, not a current PLAY0268 gap. At standalone
|
|
176
|
+
4.142.0, concept compliance binds as v13 (since 4.141.0); enum/identity compliance and protected
|
|
177
|
+
events with explicit subject marks still refuse PLAY0268. CLI 3.53.1's 4.137.0
|
|
178
|
+
bundle retains the blanket marker refusal; purpose metadata is PLAY0270. See command-surface
|
|
177
179
|
`references/compliance.md` and `references/context.md` for syntax and limits.
|
|
178
180
|
|
|
179
181
|
`screenplay_repair_capabilities` and `propose-repair` advertise PLAY0653: a
|
|
@@ -14,6 +14,12 @@ the released grammar/tool and successful purpose probes take precedence. The sam
|
|
|
14
14
|
page's legacy `@pii` mentions do not change bare `pii`/`secret` canonical syntax;
|
|
15
15
|
legacy forms compile with PLAY0565 information, duplicates with PLAY0653 warning.
|
|
16
16
|
Event `subject` remains report-only, despite accepted future lineage work.
|
|
17
|
+
Rechecked at 4.142.0: concept `pii`/`personal` and `secret` bind as v13, while
|
|
18
|
+
reasons stay PLAY0270 report-only. PLAY0268 at binding only rejects enum/identity
|
|
19
|
+
compliance and events mixing personal or explicitly subject-scoped secret values
|
|
20
|
+
with an explicit `subject` mark. CLI 3.53.1 bundles Screenplay 4.137.0, which
|
|
21
|
+
refuses markers; standalone Stage 4.76.0 admits only through v12 (Stage#345). These are distinct boundaries,
|
|
22
|
+
not a reason to remove protection.
|
|
17
23
|
|
|
18
24
|
`D/` is Screenplay `Documentation/screenplay/` at **v4.66.0**; line numbers were re-read at
|
|
19
25
|
that tag. Rule: the compiler you ran decides what the tool accepts today; the documentation
|
|
@@ -42,7 +48,7 @@ read from source or documentation.
|
|
|
42
48
|
| 14 | `$causedBy` | not evaluable (#4119), not ESM | showcase only |
|
|
43
49
|
| 15 | literal keys | `key literal "global"` vs `key "global"` | both compile; prefer `literal` |
|
|
44
50
|
| 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
|
|
51
|
+
| 17 | `@pii` | `D/concepts.md:3,33` "Chronicle applies `@pii` and `@sensitive` rules automatically" | the historical binder rejected any compliance attribute (PLAY0268); standalone 4.142.0 admits concept compliance as v13 (since 4.141.0) with narrower enum/identity/subject-lineage refusals (command-surface `references/compliance.md`). Keep protection; the pinned CLI still reports 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
52
|
| 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
53
|
| 19 | `$strings` constraint messages | `D/constraints.md:31` vs `D/internationalization.md:55` | the compiler keeps the key; realization localizes |
|
|
48
54
|
| 20 | composite key braces | optional in the EBNF; both forms in docs | both fine |
|