@cratis/pi 7.21.0 → 7.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +19 -12
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/audit-format.md +4 -3
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +13 -15
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/cases-to-specify.md +4 -4
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/effects-and-idempotency.md +21 -0
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +4 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/todo-list-example.md +7 -4
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/verification.json +4 -4
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +38 -36
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/complete-examples.md +1 -1
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +84 -0
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/refusals-and-redelivery.md +102 -0
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/specifying-triggers-and-clock.md +4 -2
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +28 -16
- package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +9 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +15 -13
- package/package/corpus/skills/cratis-screenplay-command-surface/references/operations.md +80 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/policy-persona-seed.md +23 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/verification.json +2 -2
- package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +9 -6
- package/package/corpus/skills/cratis-screenplay-discovery/references/storming-loop.md +6 -5
- package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +7 -5
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/nine-steps.md +6 -5
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +39 -49
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +5 -3
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +48 -8
- package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +44 -42
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +46 -9
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +35 -11
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +118 -13
- package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +3 -3
- package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +11 -6
- package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +11 -2
- package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +10 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/references/guarded-actions.md +79 -0
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +9 -7
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +6 -3
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/verification.json +2 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +3 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +13 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +3 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/references/command-inventory.md +3 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/references/slicing.md +40 -0
- package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +24 -16
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +103 -0
- package/package/corpus/skills/cratis-screenplay-specifications/references/reactions-and-cascades.md +5 -6
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +4 -4
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +4 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/verification.json +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +34 -32
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +47 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +57 -9
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +6 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +19 -10
- package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +4 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +8 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +90 -27
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +10 -6
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +29 -12
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +91 -136
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +7 -5
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +20 -0
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +9 -5
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +8 -1
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +2 -2
- package/package.json +1 -1
|
@@ -31,16 +31,12 @@ source is the single flow model.
|
|
|
31
31
|
| `Cratis.Screenplay` | `4.31.0` | Original examples and executable boundaries |
|
|
32
32
|
| `Cratis.Screenplay` | main `fd18129` | Inline events, repairs and canonical `optional`; changed examples compiled |
|
|
33
33
|
| `Cratis.Screenplay` | `4.66.0` (`c89198b`) | Binding behaviour of `handler`, code attachments, `persona` and compliance attributes: `Semantics/SemanticModelBinder*.cs`, `Diagnostics/DiagnosticCodes.cs` |
|
|
34
|
-
| `Cratis.Screenplay` | `4.68.0` (`79801bf`) |
|
|
34
|
+
| `Cratis.Screenplay` | `4.68.0` (`79801bf`) | Historical generated-value/response rule probes (ESM v7) |
|
|
35
|
+
| `Cratis.Screenplay` | `4.125.0` | Current source guidance: routes, operations, negation, protected identifiers and pre-generation contexts; released `commands.md`, `operations.md`, `policies.md`, `context.md`, `diagnostics.md` |
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
Checked against the Screenplay repository at tag `v4.31.0` (commit `355dffb`):
|
|
41
|
-
`Documentation/screenplay/{commands,constraints,policies,context,concepts,diagnostics}.md`
|
|
42
|
-
and decisions 0001 and 0003 established the original baseline. Changed examples
|
|
43
|
-
use the newer main commit above; do not attribute their verification to the old tag.
|
|
37
|
+
Historical examples/probes retain the table's original versions; current source
|
|
38
|
+
guidance is not a relabeled old execution result. Compilation checks syntax and
|
|
39
|
+
model consistency, not reference execution. Pins: toolchain `references/versions.md`.
|
|
44
40
|
|
|
45
41
|
"Parses" and "runs" are different claims. The executable profile, and what
|
|
46
42
|
each construct binds to, is in the `cratis-screenplay-model-authoring` language
|
|
@@ -84,7 +80,10 @@ renders this from v4.29.0. The executable model still stops at `PLAY0268` for ei
|
|
|
84
80
|
event source id (`CHR0034`) and `[Encrypted]` on one (`CHR0052`); Screenplay reports
|
|
85
81
|
`PLAY0515` for `@pii` from Screenplay 4.69.1 and for `@sensitive` from 4.84.1, on a
|
|
86
82
|
command identifier, an explicit `for` destination or an event source identifier; earlier
|
|
87
|
-
versions compile it silently and only Chronicle catches it.
|
|
83
|
+
versions compile it silently and only Chronicle catches it. Current PLAY0515
|
|
84
|
+
also covers scalar stream-id types, composite parts and nested route mapping
|
|
85
|
+
sources. It is a source error, including typed destinations, not a binding-only
|
|
86
|
+
warning. Keep the stream identity a surrogate `Uuid`
|
|
88
87
|
concept and carry the personal value (name, email) as a separate `@pii` property and a
|
|
89
88
|
secret as a `@sensitive` property.
|
|
90
89
|
|
|
@@ -271,6 +270,19 @@ produces when isProForma == true
|
|
|
271
270
|
for invoiceId
|
|
272
271
|
```
|
|
273
272
|
|
|
273
|
+
## Routes and external operations
|
|
274
|
+
|
|
275
|
+
Named event sources/streams and command routes bind as ESM v8 at 4.125.0;
|
|
276
|
+
CLI 3.41.0 render rejects models above v7. The complete checked route example
|
|
277
|
+
and nested `streamId =` form are in `cratis-screenplay-toolchain`
|
|
278
|
+
`references/sources-and-streams.md`.
|
|
279
|
+
|
|
280
|
+
Use `system`, `uses` and inline/standalone `operation` declarations to state
|
|
281
|
+
external work in the authored production sequence, with execute/compensate phase
|
|
282
|
+
intent. These remain unadmitted (PLAY0268), not post-commit reactions. Read
|
|
283
|
+
[operation intent](references/operations.md) for forms, boundaries and checked
|
|
284
|
+
failure/compensation specification syntax.
|
|
285
|
+
|
|
274
286
|
## `concurrency`
|
|
275
287
|
|
|
276
288
|
Five dimensions, each at most once, and at most one `concurrency` block per
|
|
@@ -292,8 +304,9 @@ to the routed scope. This does not make command `reads` protected.
|
|
|
292
304
|
|
|
293
305
|
## Generated values and responses (ESM v7)
|
|
294
306
|
|
|
295
|
-
|
|
296
|
-
|
|
307
|
+
Generated values/responses bind as ESM v7, including in the current CLI bundle.
|
|
308
|
+
CLI 3.41.0 admits v7 to Stage planning; its canonical corpus gets generated-value
|
|
309
|
+
and response refusals STAGE-ESM-028/029. Binding is not a render claim.
|
|
297
310
|
Read [references/generated-values-and-responses.md](references/generated-values-and-responses.md) when adding or
|
|
298
311
|
reviewing `generated` properties, `returns` responses, or decision 0023 constructs.
|
|
299
312
|
Read `cratis-screenplay-toolchain/references/generated-responses-example.md` when adding generated command values or response assertions and you need a complete compiled example.
|
|
@@ -355,10 +368,9 @@ Four contexts, and **what each omits is load-bearing** — when writing a code b
|
|
|
355
368
|
|
|
356
369
|
## Verify
|
|
357
370
|
|
|
358
|
-
- [ ]
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
or lower). Name which tool produced the result.
|
|
371
|
+
- [ ] Validate the complete model root with warnings as errors; name the tool,
|
|
372
|
+
version and result. Current pins: standalone 4.125.0 / CLI 3.41.0; bundle
|
|
373
|
+
compatibility and execution are separate checks.
|
|
362
374
|
- [ ] No unintended `PLAY0478` or `PLAY0479` information remains.
|
|
363
375
|
- [ ] At most one command property carries `identifier`, and no event property does.
|
|
364
376
|
- [ ] Format rules live on the `concept`; state-dependent rules are specifications.
|
|
@@ -50,6 +50,15 @@ time: `CommandAs<T>()`, `ArgumentsAs<T>()`, `ArtifactAs<T>()`, `ValueAs<T>()`, a
|
|
|
50
50
|
`StateAs<T>()`/`EventAs<T>()` on the reducer context. A payload of another type
|
|
51
51
|
throws `ContextPayloadTypeMismatch`.
|
|
52
52
|
|
|
53
|
+
At Screenplay 4.125.0, typed contexts before generation (`CommandValidation`,
|
|
54
|
+
`ConceptValidation`, `RulePredicate`, `PolicyPredicate`) expose **input properties
|
|
55
|
+
only**. Generated values exist only after authorization/validation, so they are
|
|
56
|
+
absent from those shapes. A generated identifier's policy subject is `unavailable`,
|
|
57
|
+
not the eventual id; never authorize against it. The handler CommandContext retains
|
|
58
|
+
the full command shape, including generated properties. Sidecars belong to the same
|
|
59
|
+
compilation/revision as their requirements, not a shape borrowed from another model.
|
|
60
|
+
Source: `v4.125.0:Documentation/screenplay/context.md`.
|
|
61
|
+
|
|
53
62
|
## The values they carry
|
|
54
63
|
|
|
55
64
|
| Type | Members |
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
## Generated values and responses (ESM v7)
|
|
2
2
|
|
|
3
|
-
A `generated` command property and
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
A `generated` command property and `returns` response bind and reference-execute
|
|
4
|
+
as ESM v7. Current pins are standalone Screenplay 4.125.0 and CLI 3.41.0
|
|
5
|
+
(bundled Screenplay 4.114.0/Stage 4.51.3); `cratis-screenplay-toolchain`
|
|
6
|
+
`references/versions.md` owns the table. CLI#261 is closed: CLI now admits v7
|
|
7
|
+
to Stage planning, but its v7 canonical corpus receives Stage generated-value
|
|
8
|
+
and response refusals STAGE-ESM-028/029. Do not turn this into a blanket compiler
|
|
9
|
+
refusal or promise a render from binding alone. Preserve the contract for gap-fill
|
|
10
|
+
where admission refuses. Historical rules below were read at 4.68.0. Complete compiled example:
|
|
8
11
|
`cratis-screenplay-toolchain` `references/generated-responses-example.md`.
|
|
9
12
|
|
|
10
13
|
```screenplay excerpt
|
|
@@ -40,12 +43,11 @@ Rules (all read at `v4.68.0`):
|
|
|
40
43
|
- Generated values give no idempotency, retry or deduplication guarantee. Specifications supply fixtures and assert
|
|
41
44
|
the response: `cratis-screenplay-specifications`.
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
planned and do not write them.
|
|
46
|
+
Operations remain authorable/unadmitted (PLAY0268). Named event sources,
|
|
47
|
+
streams and command/specification routes instead bind and reference-execute as
|
|
48
|
+
ESM v8 at 4.125.0; CLI 3.41.0 render refuses versions above v7 before planning
|
|
49
|
+
(CLI-RENDER-004). Syntax/MCP acceptance alone is not execution. Source/stream
|
|
50
|
+
forms and realization boundary: `cratis-screenplay-toolchain`
|
|
51
|
+
`references/sources-and-streams.md`. Do not infer further syntax or provider
|
|
52
|
+
admission from decision numbers.
|
|
51
53
|
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<!-- Copyright (c) Cratis. All rights reserved. -->
|
|
2
|
+
<!-- Licensed under the MIT license. See LICENSE file in the project root for full license information. -->
|
|
3
|
+
|
|
4
|
+
# Systems and operation intent
|
|
5
|
+
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- Declare and produce
|
|
9
|
+
- Phases and ordered work
|
|
10
|
+
- Specification intent
|
|
11
|
+
|
|
12
|
+
## Declare and produce
|
|
13
|
+
|
|
14
|
+
A top-level `system` names an external business system. A slice-owned `operation`
|
|
15
|
+
declares exactly one `uses <System>`, typed inputs, optional description and
|
|
16
|
+
execute/compensate phases. Operations and their specification steps are
|
|
17
|
+
**authoring-only** at Screenplay 4.125.0: compile acceptance is not execution;
|
|
18
|
+
binding refuses the whole model with PLAY0268. Source: released `operations.md`.
|
|
19
|
+
|
|
20
|
+
`produces operation <Name>` declares an inline slice-owned operation with typed
|
|
21
|
+
input mappings. Plain `produces <Name>` references an existing event or operation;
|
|
22
|
+
it never creates one from a typo. Event and operation names share resolution:
|
|
23
|
+
collisions/ambiguity refuse, not event-first guessing. Standalone operation
|
|
24
|
+
references can be qualified across slices; that does not broaden event-production
|
|
25
|
+
grammar. Operations are produced by commands, not reactions, and take no `for`,
|
|
26
|
+
tags or event routing metadata. Inputs cannot be identifier/generated properties.
|
|
27
|
+
|
|
28
|
+
## Phases and ordered work
|
|
29
|
+
|
|
30
|
+
Keep mixed event/operation productions in their authored sequence. The intended
|
|
31
|
+
future transaction contract enrolls events first, executes operations in authored
|
|
32
|
+
order before commit, and compensates according to commit disposition. It does
|
|
33
|
+
not promise reverse compensation order, rollback or post-commit delivery.
|
|
34
|
+
|
|
35
|
+
Each phase accepts a description and one direct file/tagged body or an
|
|
36
|
+
`implementation` wrapper with ordered nonblank hints and optional source.
|
|
37
|
+
Direct/wrapped sources cannot mix; duplicate phases/payloads refuse.
|
|
38
|
+
Description-only/hints-only phases are pending intent, not executable code.
|
|
39
|
+
Typed `execute Type` remains an input; bare `execute` opens a phase. Escape an
|
|
40
|
+
input named uses as `@uses`, and event-metadata input names where needed.
|
|
41
|
+
No automatic operation extraction ships: moving an inline declaration manually
|
|
42
|
+
must preserve its production sequence, mappings, comments and attachment paths.
|
|
43
|
+
|
|
44
|
+
## Specification intent
|
|
45
|
+
|
|
46
|
+
This complete authoring-only model compiles with `--warnaserror` at 4.125.0.
|
|
47
|
+
`screenplay test` intentionally returns exit 3/unbound with PLAY0268; it proves
|
|
48
|
+
no failure/compensation behavior today:
|
|
49
|
+
|
|
50
|
+
```screenplay
|
|
51
|
+
system Accounting
|
|
52
|
+
concept ProjectId : Uuid
|
|
53
|
+
module Projects
|
|
54
|
+
feature Registration
|
|
55
|
+
slice StateChange Register
|
|
56
|
+
operation OpenCostCenter
|
|
57
|
+
uses Accounting
|
|
58
|
+
projectId ProjectId
|
|
59
|
+
execute
|
|
60
|
+
description "Open a provisional cost center"
|
|
61
|
+
compensate
|
|
62
|
+
description "Close it if registration does not commit"
|
|
63
|
+
command RegisterProject
|
|
64
|
+
projectId ProjectId identifier
|
|
65
|
+
produces OpenCostCenter
|
|
66
|
+
projectId = projectId
|
|
67
|
+
specification Compensating
|
|
68
|
+
given operation OpenCostCenter fails
|
|
69
|
+
when RegisterProject
|
|
70
|
+
projectId = "3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
|
71
|
+
then operation OpenCostCenter
|
|
72
|
+
projectId = "3fa85f64-5717-4562-b3fc-2c963f66afa6"
|
|
73
|
+
then compensated OpenCostCenter
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`given operation ... fails` and `then compensated ...` are leaves. A requested
|
|
77
|
+
`then operation` can state a partial input subset, with unique fields and
|
|
78
|
+
compatible concrete values. References resolve against declared operations;
|
|
79
|
+
compensation intent needs a declared compensate phase. Provider execution is a
|
|
80
|
+
separate future admission, never implied by a source fixture.
|
package/package/corpus/skills/cratis-screenplay-command-surface/references/policy-persona-seed.md
CHANGED
|
@@ -20,7 +20,7 @@ persona Accountant
|
|
|
20
20
|
policy IsAccountant
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Condition atoms: `authenticated`, `role "<name>"`, and
|
|
24
24
|
`claim "<name>" matches subject | "<value>" | <path>`. A policy has **exactly one**
|
|
25
25
|
`require` line — continue the condition on deeper-indented lines instead of adding
|
|
26
26
|
a second (`PLAY0441`) — **or** one implementation (a tagged ` ```csharp ` block or
|
|
@@ -29,6 +29,28 @@ runner; a code policy binds as opaque ESM v3 and needs a target to evaluate it.
|
|
|
29
29
|
A `persona` is authoring metadata: the binder reports it as information `PLAY0270`
|
|
30
30
|
(report-only) and it does not block binding; an unknown policy it lists is an error.
|
|
31
31
|
|
|
32
|
+
## Policy negation
|
|
33
|
+
|
|
34
|
+
At Screenplay 4.125.0, `not <condition>` is a portable ESM v7 policy-condition
|
|
35
|
+
form (decision 0027), not a named-policy operator in `authorize`. It can negate
|
|
36
|
+
atoms/groups, not an opaque inline/file implementation. Precedence is `not`,
|
|
37
|
+
then `and`, then `or`; parentheses override grouping. Double negation restores
|
|
38
|
+
a known value, not an unknown target.
|
|
39
|
+
|
|
40
|
+
Missing caller claims compared to a known text target have no match (false),
|
|
41
|
+
so their negation is true. A missing/null/non-text comparison target or absent
|
|
42
|
+
subject is instead **unknown**. `not unknown` stays unknown; final unknown denies.
|
|
43
|
+
Kleene combinations preserve known decisive values: true OR unknown is true,
|
|
44
|
+
false AND unknown is false; false OR unknown and true AND unknown stay unknown.
|
|
45
|
+
`not role "Service"` alone does not require authentication: retain an explicit
|
|
46
|
+
`authenticated` condition when a signed-in caller is required.
|
|
47
|
+
|
|
48
|
+
Opaque predicates reached in authored short-circuit order return unsupported,
|
|
49
|
+
never false or permission under negation. Binding warns with PLAY0546 when a
|
|
50
|
+
negated claim's target is optional, non-string, or a subject without a command
|
|
51
|
+
identifier. This C# semantic check does not come from ordinary editor validation.
|
|
52
|
+
Source: `v4.125.0:Documentation/screenplay/policies.md`.
|
|
53
|
+
|
|
32
54
|
## `seed`
|
|
33
55
|
|
|
34
56
|
Excerpt: `CustomerRegistered` is declared in a slice.
|
|
@@ -75,13 +75,13 @@
|
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
"kind": "skill-contains",
|
|
78
|
-
"value": "
|
|
78
|
+
"value": "streams and command/specification routes instead bind and reference-execute as", "file": "references/generated-values-and-responses.md"
|
|
79
79
|
},
|
|
80
80
|
{ "kind": "skill-contains", "value": "Generated values and responses (ESM v7)" },
|
|
81
81
|
{ "kind": "skill-contains", "value": "A generated value is not a request input", "file": "references/generated-values-and-responses.md" },
|
|
82
82
|
{ "kind": "skill-contains", "value": "(`PLAY0273`), and a concept with any validation rule cannot back a\n generated property (`PLAY0268`)", "file": "references/generated-values-and-responses.md" },
|
|
83
83
|
{ "kind": "skill-contains", "value": "A response exists only on acceptance", "file": "references/generated-values-and-responses.md" },
|
|
84
|
-
{ "kind": "skill-contains", "value": "
|
|
84
|
+
{ "kind": "skill-contains", "value": "STAGE-ESM-028/029", "file": "references/generated-values-and-responses.md" },
|
|
85
85
|
{ "kind": "skill-contains", "value": "4.68.0" }
|
|
86
86
|
]
|
|
87
87
|
}
|
|
@@ -48,7 +48,8 @@ Statements here were checked at those tags:
|
|
|
48
48
|
|
|
49
49
|
| Fact used here | Source |
|
|
50
50
|
| --- | --- |
|
|
51
|
-
| Persona syntax, report-only, policies must be declared
|
|
51
|
+
| Persona syntax, report-only, policies must be declared | Screenplay `v4.66.0:Documentation/screenplay/personas.md` |
|
|
52
|
+
| Description order; authored/import board order and order-preserving MCP layouts | Screenplay `v4.125.0:Documentation/screenplay/grammar.md`, `folders.md`, `imports.md` |
|
|
52
53
|
| Single-line and fenced `description` (`FencedText`) | `v4.66.0:Documentation/screenplay/slices.md#descriptions`, `grammar.md:1084-1088` |
|
|
53
54
|
| `<Type>[]`, shapes must be declared; `@pii` and `reason` on concepts | `v4.66.0:Documentation/screenplay/events.md`, `concepts.md` |
|
|
54
55
|
| `then denied`, `given caller`, `then error` | `v4.66.0:Documentation/screenplay/specifications.md` |
|
|
@@ -136,12 +137,14 @@ decided apart from what you assumed. Never guess silently.
|
|
|
136
137
|
- Slice types are a closed set: `StateChange`, `StateView`, `Automation`, `Translate`. In
|
|
137
138
|
discovery an event lives in the `StateChange` slice that will produce it, named after the
|
|
138
139
|
probable command; a slice with only an `event` compiles.
|
|
139
|
-
- A `persona` names declared policies only (unknown policy = error); `description`
|
|
140
|
-
|
|
140
|
+
- A `persona` names declared policies only (unknown policy = error); `description` appears
|
|
141
|
+
at most once, anywhere in its body.
|
|
141
142
|
- Declare each event once in the whole application; other slices refer to it by name.
|
|
142
|
-
-
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
- Boards keep authored declaration and import order: imports expand depth-first, glob
|
|
144
|
+
matches alphabetically. Unimported folder files remain visible after ranked siblings.
|
|
145
|
+
MCP `expand-layout` preserves this order with import barrels; an import-less
|
|
146
|
+
`PlayFileWriter.Expand` layout falls back to path order. Order is presentation, not
|
|
147
|
+
execution or identity. Keep causes and branches in the feature `description` and STATE.md.
|
|
145
148
|
- A misspelt keyword inside a slice is only warning PLAY0029 and the block disappears: always
|
|
146
149
|
validate with warnings as errors.
|
|
147
150
|
|
|
@@ -29,7 +29,7 @@ then reports what changed and asks one question. The user should always be able
|
|
|
29
29
|
| rename | better business name for an existing fact | identity-affecting once persisted: see SKILL.md |
|
|
30
30
|
| split | one name was covering two facts | keep the original if it is persisted; add the second |
|
|
31
31
|
| merge | two names for one fact | only when they truly mean the same thing |
|
|
32
|
-
| reorder | the story order changed | update the feature `description`/STATE.md
|
|
32
|
+
| reorder | the story order changed | change declaration/import order for the board; update the feature `description`/STATE.md for causes and branches |
|
|
33
33
|
| drop | not a fact after all | record why in STATE.md |
|
|
34
34
|
| none | already modeled | say so briefly |
|
|
35
35
|
|
|
@@ -65,10 +65,11 @@ open, start the sweep (`divergent-sweep.md`).
|
|
|
65
65
|
## A discovery skeleton
|
|
66
66
|
|
|
67
67
|
What a model looks like after the first workflow has been stormed: no commands, read models
|
|
68
|
-
or screens yet. Slices are named after the command expected to produce each event
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
or screens yet. Slices are named after the command expected to produce each event. At
|
|
69
|
+
Screenplay 4.125.0, boards use authored declaration/import order, and MCP `expand-layout`
|
|
70
|
+
preserves it with imports. An import-less `PlayFileWriter.Expand` layout still falls back to
|
|
71
|
+
path order. Order is presentation only; the feature `description` records causes and branches.
|
|
72
|
+
Persona `description` text holds Does / Reads / Cannot on one quoted line here; the multi-line fenced
|
|
72
73
|
form is in `personas-and-causes.md`.
|
|
73
74
|
|
|
74
75
|
```screenplay
|
|
@@ -134,11 +134,13 @@ What binds depends on **which tool** you ask, so name the tool and its version:
|
|
|
134
134
|
- `persona` declarations are report-only and never block; `@pii` and `@sensitive`
|
|
135
135
|
concepts do block binding (`PLAY0268`). Keep them anyway: the classification is
|
|
136
136
|
part of the model. Report the block.
|
|
137
|
-
- Generated values
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
137
|
+
- Generated values/responses bind and reference-execute as v7; sources, streams
|
|
138
|
+
and command/specification routes as v8; reaction `runs as` identity as v10 on
|
|
139
|
+
standalone 4.125.0. Use `screenplay test` or MCP `run-specifications` for V4.
|
|
140
|
+
Operations/systems, exact numbers and refusal/redelivery remain unadmitted.
|
|
141
|
+
CLI 3.41.0 bundles older syntax and renders through v7 only: its parser rejects
|
|
142
|
+
`runs as`, and Stage refuses generated values/responses with STAGE-ESM-028/029.
|
|
143
|
+
Source/binding admission and target realization are separate gates.
|
|
142
144
|
|
|
143
145
|
The ESM versions, the full disposition table and the Step 7 clock example's binding
|
|
144
146
|
result are in [references/parsed-not-runnable.md](references/parsed-not-runnable.md)
|
|
@@ -32,8 +32,8 @@ module Invoicing
|
|
|
32
32
|
description "Registering and managing the lifecycle of invoices"
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
`description` is
|
|
36
|
-
|
|
35
|
+
`description` is optional on a module, feature, slice, persona or command;
|
|
36
|
+
at most one, anywhere in its body. Use a fenced block tagged ` ```text ` when one line
|
|
37
37
|
is not enough (a bare fence warns with `PLAY0397`).
|
|
38
38
|
|
|
39
39
|
## Step 2 — Brainstorm events
|
|
@@ -59,9 +59,10 @@ Phase skill: `cratis-screenplay-discovery`.
|
|
|
59
59
|
Arrange into the timeline — the plot. *"What happens first? And then what
|
|
60
60
|
happens?"* Identify the happy path **and** the alternative and error paths.
|
|
61
61
|
|
|
62
|
-
**Output:** the
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
**Output:** the authored declaration/import order for the board, with causes
|
|
63
|
+
and branches documented. Screenplay 4.125.0 MCP layouts preserve this presentation
|
|
64
|
+
order with imports; an import-less `PlayFileWriter.Expand` layout uses path order.
|
|
65
|
+
Timeline position does not impose execution order or change identities.
|
|
65
66
|
|
|
66
67
|
## Step 4 — Create wireframes
|
|
67
68
|
|
package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md
CHANGED
|
@@ -1,63 +1,53 @@
|
|
|
1
1
|
# Parsed is not runnable: ESM versions and dispositions
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
`
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Current evidence: Screenplay v4.125.0 `SemanticModelBinder.cs`, `Versions.cs`,
|
|
4
|
+
`Documentation/screenplay/{commands,operations,event-sources,reactions,tool}.md`.
|
|
5
|
+
The binder selects v8 for event routes and v10 for declared reaction identity.
|
|
6
|
+
Pins and consumer boundaries: toolchain `references/versions.md`.
|
|
7
7
|
|
|
8
8
|
## Which ESM version a model needs
|
|
9
9
|
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
absence assertions (`then no readmodel`).
|
|
20
|
-
- **v6** for reactions, captures, application triggers and the clock (and so `Automation` and
|
|
21
|
-
`Translate` slices).
|
|
22
|
-
- **v7** for generated command properties, `returns` responses, generated fixtures and `then returns`
|
|
23
|
-
expectations, and only when one is used (standalone 4.68.0 or later; decision 0026).
|
|
24
|
-
- Operations, event sources and streams, decision reads and exact numbers are **not admitted by any
|
|
25
|
-
supported ESM version**; they have no number until a release-ready admission (decision 0025).
|
|
10
|
+
- v1 by default; v2 for typed event-source facts and admitted occurrence/audit mappings.
|
|
11
|
+
- v3 for opaque code requirements. Reference execution cannot execute their bodies.
|
|
12
|
+
- v4 for event-contract lineage; v5 for keyed read-model absence assertions.
|
|
13
|
+
- v6 for admitted reactions, captures, application triggers and clock.
|
|
14
|
+
- v7 for generated command values, responses, fixtures/return assertions and policy negation.
|
|
15
|
+
- v8 for sources/streams and command/specification routes.
|
|
16
|
+
- v9 for public-event contracts; v10 for reaction `runs as system` identity.
|
|
17
|
+
- Operations/systems, exact numeric mode and refusal/redelivery remain unadmitted
|
|
18
|
+
(PLAY0268). Version allocation is not inferred from an older planning decision.
|
|
26
19
|
|
|
27
20
|
## Dispositions to keep apart
|
|
28
21
|
|
|
29
|
-
| Construct |
|
|
30
|
-
| --- | --- |
|
|
31
|
-
| `persona
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
22
|
+
| Construct | Current standalone disposition |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| `persona`, domain/authentication metadata | Report-only; unknown named policies remain source defects |
|
|
25
|
+
| Compliance concepts | Preserve protection; portable binding gaps are not permission to remove it |
|
|
26
|
+
| Command reads/concurrency | Legacy unprotected decisions, PLAY0271 |
|
|
27
|
+
| Invokes-only trigger reads | Report-only, not protected state; direct production with reads refuses |
|
|
28
|
+
| Generated values/responses | v7 binding/reference execution; Stage 4.51.3 member refusals STAGE-ESM-028/029 |
|
|
29
|
+
| Sources/streams and command/specification routes | v8 binding/reference execution; CLI 3.41.0 render boundary is v7 |
|
|
30
|
+
| Declared reaction invocation actor | v10 binding/reference execution; older CLI parser PLAY0137; Stage planner refuses v10 |
|
|
31
|
+
| Operations/systems, exact numbers, refusal/redelivery | Source accepted; whole binding refuses PLAY0268 |
|
|
32
|
+
| UI | Authoring/deferred metadata; runtime support is a separate consumer contract |
|
|
33
|
+
|
|
34
|
+
Run standalone `screenplay test` or MCP `run-specifications` for V4. Compile
|
|
35
|
+
success alone is not execution; unbound/unsupported is not passed. Preserve
|
|
36
|
+
source that a narrower renderer cannot realize and report the addressed gap.
|
|
37
|
+
Routing and actor checked examples: toolchain `references/sources-and-streams.md`
|
|
38
|
+
and captures-and-reactions `references/invocation-identity.md`.
|
|
46
39
|
|
|
47
40
|
## The Step 7 clock example
|
|
48
41
|
|
|
49
|
-
The complete example in [nine-steps.md](nine-steps.md) (Step 7)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
(Screenplay 4.60.1, ESM v1 to v5) compiled it but rejected the Automation slice at binding. Report reaction
|
|
55
|
-
specifications as authored, not as run, unless a V4 run says otherwise.
|
|
42
|
+
The complete example in [nine-steps.md](nine-steps.md) (Step 7) had historical
|
|
43
|
+
4.66.0 compile/binding evidence (zero errors/warnings, executableReady true).
|
|
44
|
+
Its invokes-only reads still record intent rather than execute the overdue
|
|
45
|
+
selection. Run its admitted specifications with the current reference route
|
|
46
|
+
before claiming a V4 pass; no overdue-selection proof follows from binding.
|
|
56
47
|
|
|
57
48
|
## Decision 0006 and shipped generations
|
|
58
49
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
decision as implemented: check the construct's own page and the versions table.
|
|
50
|
+
Trigger reads do not enforce decision consistency. Event generations and typed repairs now ship,
|
|
51
|
+
but historical schemas do not supply deployed migrations.
|
|
52
|
+
Check actual binder, runner and consumer admission instead of equating an
|
|
53
|
+
accepted decision or parsed node with a running application.
|
|
@@ -44,7 +44,7 @@ v19.32.0): `cratis-screenplay-toolchain` `references/versions.md`. Checked at th
|
|
|
44
44
|
| `prologue start` is an interactive wizard that writes `cratis-prologue.json`; `interpret` resolves its language model from the Prologue file, then the global CLI configuration (cli#241 open) | cli `v3.28.2:Source/Cli/Commands/Prologue/{StartPrologueCommand,LlmOptionsResolver}.cs`, `Documentation/reference/prologue.md` |
|
|
45
45
|
| Extractor effects (CDC enable, publication and replication slot), POST/PUT/DELETE only, 2 s correlation window, interpret payload (uncapped model outline and names, observed lists capped at 50, schema tables capped per schema observation), existing slot/publication reused; cleanup missing (Prologue#37) | Prologue `ad4bbe7:Source/Extractor/Sources/**`, `Source/Configuration/*`, `Source/Interpretation/EvidenceFormatter.cs` |
|
|
46
46
|
| `then error`, `then denied`, `unique ... released by` | Screenplay `v4.66.0:Documentation/screenplay/{specifications,constraints}.md` |
|
|
47
|
-
|
|
|
47
|
+
| MCP semantic-diff compares canonical workspace exports; structural comparison is not execution equivalence | Screenplay `v4.125.0:Documentation/screenplay/mcp/reference.md` |
|
|
48
48
|
|
|
49
49
|
Every complete `screenplay` fence here compiles with the standalone compiler 4.68.0 (`--warnaserror`) and
|
|
50
50
|
`cratis screenplay validate --warnings-as-errors` 3.28.2.
|
|
@@ -191,8 +191,10 @@ handoff packet appended, first line `Outcome:`; no prose reports in the model ro
|
|
|
191
191
|
ask again only when target or consequence expands): capture setup and Extractor runs, traffic
|
|
192
192
|
re-routing, load or scenario runs that write data, cleanup DDL, hosted language-model use.
|
|
193
193
|
Production needs DBA sign-off (`rules/capability-is-not-authority.md`).
|
|
194
|
-
- No claims of equivalence
|
|
195
|
-
|
|
194
|
+
- No claims of execution equivalence from structure. MCP `semantic-diff` compares
|
|
195
|
+
same-application canonical exports with authoritative catalogs; it does not guess
|
|
196
|
+
rename continuity, run specifications or prove recovered behavior. Inspect
|
|
197
|
+
incomplete sections and exclusions before using the result in the loss report.
|
|
196
198
|
- Never weaken protection (authorization, `@pii`, rules) to make the candidate compile.
|
|
197
199
|
|
|
198
200
|
## Gate
|
package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# `cratis screenplay generate` notes
|
|
2
2
|
|
|
3
|
+
## Contents
|
|
4
|
+
|
|
5
|
+
- Command
|
|
6
|
+
- Preconditions
|
|
7
|
+
- Coverage (what a provider reads)
|
|
8
|
+
- Diagnostics are the loss list
|
|
9
|
+
- Arc recovery and authoring-only options
|
|
10
|
+
- Reading the output cheaply
|
|
11
|
+
|
|
3
12
|
Flags verified with `cratis screenplay generate --help` on the version recorded in
|
|
4
13
|
cratis-screenplay-toolchain `references/versions.md`; behaviour from the cratis CLI
|
|
5
14
|
(`v3.28.2:Source/Cli/Commands/Screenplay/`; the generate files are unchanged since `v3.27.1`), Arc `v22.50.5`
|
|
@@ -8,6 +17,12 @@ cratis-screenplay-toolchain `references/versions.md`; behaviour from the cratis
|
|
|
8
17
|
Screenplay.CritterStack `v0.24.0`. Version-specific capability facts belong in cratis-screenplay-toolchain
|
|
9
18
|
`references/versions.md`.
|
|
10
19
|
|
|
20
|
+
Current CLI is 3.41.0, with Arc.Screenplay 22.54.0 (`references/versions.md` in
|
|
21
|
+
the toolchain). Current option/admission evidence: CLI released
|
|
22
|
+
`GenerateScreenplaySettings.cs`, `ArcScreenplayGeneration.cs`, v7 planning specs
|
|
23
|
+
and `Documentation/reference/screenplay.md`; older diagnostic probes below keep
|
|
24
|
+
their original labels. Arc#3054 and CLI#270 describe the recovered-source expansion.
|
|
25
|
+
|
|
11
26
|
## Command
|
|
12
27
|
```
|
|
13
28
|
cratis screenplay generate <solution|project|folder> \
|
|
@@ -56,14 +71,39 @@ cratis screenplay generate <solution|project|folder> \
|
|
|
56
71
|
persistence, stream ownership or authorization.
|
|
57
72
|
- "Success" only means no error diagnostic was produced. Read warnings and information too.
|
|
58
73
|
|
|
59
|
-
##
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
74
|
+
## Arc recovery and authoring-only options
|
|
75
|
+
|
|
76
|
+
`--authoring-only-constructs` maps to `ScreenplayOptions.AuthoringOnlyConstructs`
|
|
77
|
+
in the Arc adapter (false by default). It includes operations/systems, source and
|
|
78
|
+
stream declarations/routes, and reads/requirements recovered from Provide/Handle.
|
|
79
|
+
Other providers warn CLI0014 and do not apply it. Added syntax does not realize
|
|
80
|
+
code or waive admission: operations refuse PLAY0268 and legacy reads PLAY0271.
|
|
81
|
+
Source/stream routes themselves bind as v8 on the current standalone compiler;
|
|
82
|
+
older blanket authoring-only route caveats are not its current disposition.
|
|
83
|
+
|
|
84
|
+
The expanded Arc recovery surface includes:
|
|
85
|
+
- Proven command identifiers and event `for` destinations.
|
|
86
|
+
- Inline events where one unconditional complete production uniquely owns them.
|
|
87
|
+
- Event description/documentation and generation-1 stored-name rename pins.
|
|
88
|
+
- Unconditional named Must(Method) rules with implementation-file provenance,
|
|
89
|
+
where no specification exercises the command.
|
|
90
|
+
- Event scenarios as `when append`, and event-source-faithful `for` fixtures.
|
|
91
|
+
Scenarios whose sources cannot be stated faithfully are omitted with SP0039;
|
|
92
|
+
record the omission as a loss, never fabricate identities to retain a scenario.
|
|
93
|
+
- Supported generated UUID command values and scalar/record responses by default,
|
|
94
|
+
without the authoring-only flag, for commands without successful scenarios.
|
|
95
|
+
Commands with successful scenarios retain the legacy representation until
|
|
96
|
+
deterministic generation fixtures and response expectations can be recovered.
|
|
97
|
+
Unsupported shapes/pre-generation protection remain code with SP0052.
|
|
98
|
+
|
|
99
|
+
Generated values/responses select ESM v7. CLI 3.41.0 admits v7 to planning, but
|
|
100
|
+
Stage refuses those members with STAGE-ESM-028/029. CLI#261 is closed; do not say
|
|
101
|
+
the compiler or CLI version gate universally refuses v7. Above v7 remains
|
|
102
|
+
CLI-RENDER-004. A generated source model is evidence, not guaranteed render output.
|
|
103
|
+
|
|
104
|
+
Handler/reaction bodies, unresolved conditions and unproven origins still need
|
|
105
|
+
source review. Do not infer generation/evolution/absence-assertion coverage from
|
|
106
|
+
a package upgrade; read diagnostics and reconcile each recovered scenario.
|
|
67
107
|
|
|
68
108
|
## Reading the output cheaply
|
|
69
109
|
1. V1 on `.ai-work/screenplay/<model-slug>/legacy/static` (folder mode) with the tool and
|