@cratis/pi 7.31.0 → 7.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +2 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/audit-format.md +1 -1
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +2 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +3 -3
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/public-events-and-direction.md +2 -2
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +2 -2
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +2 -2
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +8 -6
- package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +40 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +1 -1
- package/package/corpus/skills/cratis-screenplay-command-surface/references/enum-numbers.md +93 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +3 -4
- 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 +1 -1
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +4 -2
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +71 -3
- package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +25 -25
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +6 -0
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +5 -0
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +36 -8
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/property-links.md +126 -0
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/screen-authoring-workflow.md +3 -4
- package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +1 -1
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +6 -5
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +2 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +3 -3
- package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +1 -1
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +2 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +5 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/evolution.md +17 -0
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +15 -6
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +6 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +21 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +9 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/production-routes-and-filters.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +5 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract-exceptions.json +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +1092 -17
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +3 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +4 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +32 -17
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +3 -1
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +2 -2
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +8 -9
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +4 -5
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/case-tables-and-whole-numbers.md +2 -2
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +1 -1
- package/package.json +1 -1
|
@@ -40,8 +40,8 @@ identity, effect and pending-work contract at that point; do not postpone it to
|
|
|
40
40
|
- Reaction `runs as system role "<Role>"` declares an invocation actor (ESM v10).
|
|
41
41
|
Without it the invoke has no caller. Historical CLI 3.41.0's 4.114.0 compiler
|
|
42
42
|
rejected the syntax (PLAY0137); previous CLI 3.46.1 refused ESM v10
|
|
43
|
-
at render admission (CLI-RENDER-004).
|
|
44
|
-
construct admission, which still refuses reaction identity (STAGE-ESM-034). Checked model/diagnostics: captures-and-reactions
|
|
43
|
+
at render admission (CLI-RENDER-004). The pinned CLI/Stage pair (toolchain
|
|
44
|
+
`references/versions.md`) reaches construct admission, which still refuses reaction identity (STAGE-ESM-034). Checked model/diagnostics: captures-and-reactions
|
|
45
45
|
`references/invocation-identity.md`.
|
|
46
46
|
|
|
47
47
|
## Effect guarantees and recovery traps
|
|
@@ -12,7 +12,7 @@ technique: partial work stays visible and nothing is skipped because it looked r
|
|
|
12
12
|
Result is `complete` only when every column is filled or says why it does not apply (for example
|
|
13
13
|
"direct effect: immediate, internal, cannot fail"). `open` names the unresolved decision and who
|
|
14
14
|
answers. `blocked` names the actual capability gap with intended behavior. For example,
|
|
15
|
-
CLI
|
|
15
|
+
the pinned CLI/Stage pair (toolchain `references/versions.md`) admits ESM v10 to construct checks, where reaction identity
|
|
16
16
|
is refused with STAGE-ESM-034. Previous CLI 3.46.1 refused v10 at the version gate
|
|
17
17
|
with CLI-RENDER-004; do not report that historical refusal as the current gap.
|
|
18
18
|
|
|
@@ -72,8 +72,8 @@ Screenplay 4.125.0 declares the actor with reaction-level `runs as system role
|
|
|
72
72
|
"<Role>"` (ESM v10); without it a gated invocation has no caller and denies.
|
|
73
73
|
`given caller` is not an invocation actor. Role requirements remain enforced;
|
|
74
74
|
claim conditions for this system principal remain unknown. Historical CLI 3.41.0's
|
|
75
|
-
older compiler rejected the syntax (PLAY0137).
|
|
76
|
-
construct admission, but reaction identity still refuses STAGE-ESM-034.
|
|
75
|
+
older compiler rejected the syntax (PLAY0137). The pinned CLI/Stage pair (toolchain
|
|
76
|
+
`references/versions.md`) reaches v10 construct admission, but reaction identity still refuses STAGE-ESM-034.
|
|
77
77
|
Previous CLI 3.46.1 refused v10 at its version gate; see toolchain `references/versions.md`.
|
|
78
78
|
Use the checked model in captures-and-reactions `references/invocation-identity.md`.
|
|
79
79
|
Arc gap-fill uses `[ExecuteCommandsAsSystem("<role>")]` for returned commands,
|
|
@@ -44,8 +44,8 @@ binds); tool-qualified verdict text; the trusted-actor text now names `[ExecuteC
|
|
|
44
44
|
`reactions.md`, `ReactionIdentityParser.cs`, `ReactionRefusalValidator.cs` and the
|
|
45
45
|
binder's v10 selection; the checked scenario passed reference execution. CLI
|
|
46
46
|
3.41.0's older parser and Stage 4.51.3's v7 planner were historical target limits.
|
|
47
|
-
Previous CLI 3.46.1 refused v10 at its version gate. CLI
|
|
48
|
-
|
|
49
|
-
reaction identity with STAGE-ESM-034
|
|
47
|
+
Previous CLI 3.46.1 refused v10 at its version gate. The pinned CLI/Stage pair
|
|
48
|
+
(toolchain `references/versions.md`) reaches v10 construct checks and still
|
|
49
|
+
refuses reaction identity with STAGE-ESM-034.
|
|
50
50
|
Public/direction forms and routes/filters follow Screenplay v4.135.0 decisions
|
|
51
51
|
0049–0051 and 0060–0066, not the older inbound-only translation scope.
|
|
@@ -124,8 +124,8 @@ ESM v9 shipped in Screenplay 4.117.0 and is selected only by use of public event
|
|
|
124
124
|
origins, direction, event-target builders or events-source captures. At 4.135.0,
|
|
125
125
|
publication reference scenarios execute; imported shapes still refuse binding.
|
|
126
126
|
Stage 4.52.0 (previous CLI 3.46.1) audits only through v7: CLI-RENDER-004 precedes
|
|
127
|
-
its STAGE-ESM-016 version refusal. CLI
|
|
128
|
-
admission through v10 but still refuses publication (STAGE-ESM-032), foreign
|
|
127
|
+
its STAGE-ESM-016 version refusal. The pinned CLI/Stage pair (toolchain `references/versions.md`)
|
|
128
|
+
reaches construct admission through v10 but still refuses publication (STAGE-ESM-032), foreign
|
|
129
129
|
events/events-source captures (STAGE-ESM-033); source admission is not rendering.
|
|
130
130
|
|
|
131
131
|
Source: Screenplay `v4.135.0:Documentation/screenplay/fixtures/public-events.play`,
|
|
@@ -75,8 +75,8 @@ Read [invocation identity](references/invocation-identity.md) for the checked
|
|
|
75
75
|
scenario, claim/unknown semantics and PLAY0647–0652/0557 diagnostics.
|
|
76
76
|
|
|
77
77
|
Historical CLI 3.41.0's 4.114.0 compiler rejected this source with PLAY0137.
|
|
78
|
-
Previous CLI 3.46.1 refused v10 (CLI-RENDER-004); CLI
|
|
79
|
-
|
|
78
|
+
Previous CLI 3.46.1 refused v10 (CLI-RENDER-004); the pinned CLI/Stage pair (toolchain
|
|
79
|
+
`references/versions.md`) reaches construct admission, still refusing identity (STAGE-ESM-034).
|
|
80
80
|
Target realization is gap-fill, using Arc `[ExecuteCommandsAsSystem]` for returned commands. Without that attribute
|
|
81
81
|
Arc supplies no principal and `[Authorize]`/`[Roles]` deny. Each invoked command
|
|
82
82
|
is atomic, not the whole cascade; earlier accepted facts remain after a later refusal.
|
|
@@ -71,8 +71,8 @@ module Work
|
|
|
71
71
|
|
|
72
72
|
Historical CLI 3.41.0 bundled Screenplay 4.114.0, which did not parse `runs as`:
|
|
73
73
|
the example's `cratis screenplay validate --executable --warnings-as-errors`
|
|
74
|
-
returned PLAY0137, exit 5. This is not a current parser claim. CLI
|
|
75
|
-
|
|
74
|
+
returned PLAY0137, exit 5. This is not a current parser claim. The pinned CLI/Stage pair
|
|
75
|
+
(`cratis-screenplay-toolchain/references/versions.md`) reaches v10 construct admission, but
|
|
76
76
|
reaction identity still refuses STAGE-ESM-034. Previous CLI 3.46.1/Stage 4.52.0
|
|
77
77
|
audited through v7 only (`references/versions.md` in toolchain).
|
|
78
78
|
Clock/application-trigger identities have no Stage Arc realization either.
|
|
@@ -75,6 +75,10 @@ scalar/composite stream-id types and nested route mapping sources, including leg
|
|
|
75
75
|
markers. Keep a surrogate identity and carry protected data in the payload.
|
|
76
76
|
Chronicle likewise rejects `[PII]`/`[Encrypted]` identifiers (CHR0034/CHR0052).
|
|
77
77
|
|
|
78
|
+
Read [enum numbers](references/enum-numbers.md) for `draft = 1`, unique int32
|
|
79
|
+
all-or-none pins, stored/public identity safety, `enum-pinning`, ESM v12 and the
|
|
80
|
+
CLI/Stage gap. Unnumbered enums keep positions; specifications use names.
|
|
81
|
+
|
|
78
82
|
⚠️ **Enum trap.** A value literally named `validate` is read as an empty validate
|
|
79
83
|
block. Write `@validate` for the value; the compiler warns when it sees the
|
|
80
84
|
ambiguity.
|
|
@@ -368,8 +372,8 @@ Four contexts, and **what each omits is load-bearing** — when writing a code b
|
|
|
368
372
|
## Verify
|
|
369
373
|
|
|
370
374
|
- [ ] Validate the complete model root with warnings as errors; name the tool,
|
|
371
|
-
version and result.
|
|
372
|
-
compatibility and execution are separate checks.
|
|
375
|
+
version and result. Pins: toolchain `references/versions.md`;
|
|
376
|
+
bundle compatibility and execution are separate checks.
|
|
373
377
|
- [ ] No unintended `PLAY0478` or `PLAY0479` information remains.
|
|
374
378
|
- [ ] At most one command property carries `identifier`, and no event property does.
|
|
375
379
|
- [ ] Format rules live on the `concept`; state-dependent rules are specifications.
|
|
@@ -385,10 +389,8 @@ Four contexts, and **what each omits is load-bearing** — when writing a code b
|
|
|
385
389
|
runnable or renderable without saying which tool admits it.
|
|
386
390
|
- [ ] No event carries an optional property covering two situations.
|
|
387
391
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
Versions, tool capabilities and the executable and renderable subsets: `cratis-screenplay-toolchain` (`references/versions.md`). Where a construct sits in the
|
|
391
|
-
method: `cratis-screenplay-modeling-lifecycle` and `cratis-screenplay-slice-design`.
|
|
392
|
+
Compiler pins and admission: `cratis-screenplay-toolchain/references/versions.md`.
|
|
393
|
+
Method: `cratis-screenplay-modeling-lifecycle` and `cratis-screenplay-slice-design`.
|
|
392
394
|
|
|
393
395
|
## Route near misses
|
|
394
396
|
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
## Contents
|
|
7
7
|
|
|
8
8
|
- Classify the value on its concept
|
|
9
|
+
- Recover classification from C# with Arc 22.70.0
|
|
9
10
|
- Declare the use separately
|
|
10
11
|
- Identify the person, not the stream
|
|
11
12
|
|
|
@@ -63,6 +64,45 @@ This mapping is not admission: either marker, including qualifiers and scopes,
|
|
|
63
64
|
still blocks executable binding with PLAY0268. Subject lineage is a different
|
|
64
65
|
role, described below.
|
|
65
66
|
|
|
67
|
+
## Recover classification from C# with Arc 22.70.0
|
|
68
|
+
|
|
69
|
+
Reverse generation is not the C# provider mapping above. Source authority: Arc
|
|
70
|
+
`v22.70.0:Documentation/backend/csharp/generating-a-screenplay.md` (Operational
|
|
71
|
+
secrets), `Source/DotNET/Screenplay/Emission/Concepts/ConceptSyntaxBuilder.cs`
|
|
72
|
+
and `Source/DotNET/Screenplay/Analysis/Types/PersonalDataMarkings.cs`.
|
|
73
|
+
Check the generator package actually loaded; the CLI's bundle may be older.
|
|
74
|
+
|
|
75
|
+
- Both `[Encrypted]` and `[NotAudited]` must be on the concept to recover
|
|
76
|
+
`secret`. Partial or member-specific markings report SP0058 (Information),
|
|
77
|
+
without adding `secret`; existing `pii` remains.
|
|
78
|
+
- For `[Encrypted(EncryptionScope.Namespace)]` or Global plus `[NotAudited]`,
|
|
79
|
+
default output keeps bare `secret` and reports SP0061 (Information), naming
|
|
80
|
+
the unstated scope. It therefore implies Subject, not the source scope.
|
|
81
|
+
Set `ScreenplayOptions.AuthoringOnlyConstructs = true` (CLI adapter flag
|
|
82
|
+
`--authoring-only-constructs`) to state `secret scope namespace` or
|
|
83
|
+
`secret scope global` in the concept body. Subject stays implicit. Scope
|
|
84
|
+
is syntax-only: it raises no ESM version and grants no executable admission.
|
|
85
|
+
`pii secret` gets no scope because the providers ignore it.
|
|
86
|
+
- A property or positional constructor parameter marked `[PII]` on a non-concept
|
|
87
|
+
type reports SP0062 (Information); the marking is not stated and no concept
|
|
88
|
+
is invented. Preserve the source protection, record the loss, and introduce a
|
|
89
|
+
personal-data concept in source or the intentional candidate.
|
|
90
|
+
- Member `[PII]` promotes an existing concept to `pii` across all its uses.
|
|
91
|
+
SP0063 (Information) lists unmarked analyzed uses when the concept itself
|
|
92
|
+
lacks `[PII]`. Review that widening: explicitly classify the concept if the
|
|
93
|
+
meaning is shared, or separate personal and nonpersonal meanings into distinct
|
|
94
|
+
concepts. No SP0063 is reported if the concept is marked or all analyzed uses
|
|
95
|
+
are marked. Never remove protection merely to silence the diagnostic.
|
|
96
|
+
- Protected identity concepts keep their identities/routes but lose their
|
|
97
|
+
annotations with SP0059 (Information, now worded `pii/secret`); record the
|
|
98
|
+
protection loss and use a surrogate identity, not a declassified payload value.
|
|
99
|
+
|
|
100
|
+
Reasons, special/criminal qualifiers and purposes are not inferred. Changing
|
|
101
|
+
scope for persisted events still needs a new generation. Every diagnostic is a
|
|
102
|
+
loss or review item, including Information; see legacy-extraction
|
|
103
|
+
[generate notes](../../cratis-screenplay-legacy-extraction/references/generate-notes.md)
|
|
104
|
+
for the self-check contract and compiler-upgrade handling.
|
|
105
|
+
|
|
66
106
|
## Declare the use separately
|
|
67
107
|
|
|
68
108
|
```screenplay
|
|
@@ -105,7 +105,7 @@ Checked at Screenplay 4.127.0: `$identity.<property>` is the same caller value a
|
|
|
105
105
|
is supported, not deprecated. Historical `cratis` CLI 3.41.0 bundled Screenplay 4.114.0, which predated both:
|
|
106
106
|
its parser rejected a top-level `identity` block (`PLAY0001`), and with `--executable` it read a
|
|
107
107
|
`$identity.<property>` mapping as a raw expression (`PLAY0268`). Those checks used standalone 4.127.0;
|
|
108
|
-
they are not current
|
|
108
|
+
they are not current parser claims; compiler pins are in toolchain `references/versions.md`. Check current renderer
|
|
109
109
|
admission separately before choosing caller mappings. Built-ins are `id`, `name`, `userName`,
|
|
110
110
|
`isAuthenticated`, `roles`, `claims.<name>` (everything after `claims.` is opaque).
|
|
111
111
|
Bare `$identity` reports PLAY0152; unknown properties report PLAY0155. Only
|
|
@@ -0,0 +1,93 @@
|
|
|
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
|
+
# Explicit enum member numbers
|
|
5
|
+
|
|
6
|
+
Authoring shipped in Screenplay 4.137.0; non-positional executable numbers shipped
|
|
7
|
+
in 4.139.0 as ESM v12 (decision 0065). The model owns member identity, not the renderer.
|
|
8
|
+
|
|
9
|
+
```screenplay
|
|
10
|
+
domain EnumNumbers
|
|
11
|
+
|
|
12
|
+
concept InvoiceId : Uuid
|
|
13
|
+
concept InvoiceStatus : Enum
|
|
14
|
+
draft = 1
|
|
15
|
+
sent = 4
|
|
16
|
+
cancelled = -1
|
|
17
|
+
|
|
18
|
+
module Invoicing
|
|
19
|
+
feature Issuing
|
|
20
|
+
slice StateChange SendingInvoice
|
|
21
|
+
command SendInvoice
|
|
22
|
+
invoiceId InvoiceId identifier
|
|
23
|
+
status InvoiceStatus
|
|
24
|
+
produces InvoiceSent
|
|
25
|
+
for invoiceId
|
|
26
|
+
status = status
|
|
27
|
+
event InvoiceSent
|
|
28
|
+
status InvoiceStatus
|
|
29
|
+
specification Sending
|
|
30
|
+
when SendInvoice
|
|
31
|
+
invoiceId = "6f9619ff-8b86-d011-b42d-00c04fc964ff"
|
|
32
|
+
status = "sent"
|
|
33
|
+
then InvoiceSent
|
|
34
|
+
for "6f9619ff-8b86-d011-b42d-00c04fc964ff"
|
|
35
|
+
status = "sent"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Source rules
|
|
39
|
+
|
|
40
|
+
- Number **all members or none**; there is no implicit continuation after a pin.
|
|
41
|
+
- Numbers are unique whole int32 values, from -2147483648 through 2147483647.
|
|
42
|
+
Gaps and negative numbers are allowed; aliases and flags semantics are not.
|
|
43
|
+
- Write decimal digits with an optional minus sign: no leading zeros, fraction,
|
|
44
|
+
exponent or plus sign. `-0` prints canonically as `0`.
|
|
45
|
+
- Escape a keyword member as usual, for example `@validate = 7`.
|
|
46
|
+
- Unnumbered enums retain zero-based positional meaning. Descriptions and
|
|
47
|
+
validation blocks still work. Specifications, fixtures, validation operands
|
|
48
|
+
and conditions use **member names**, never their numbers.
|
|
49
|
+
|
|
50
|
+
PLAY0667 reports mixed numbering, PLAY0668 duplicate numbers, PLAY0669 an
|
|
51
|
+
out-of-int32 value and PLAY0670 malformed number syntax. None has an automatic
|
|
52
|
+
repair: correcting a stored identity needs an author decision.
|
|
53
|
+
|
|
54
|
+
## When to pin
|
|
55
|
+
|
|
56
|
+
Pin enums used in persisted events or a stable public contract, or when retaining
|
|
57
|
+
numbers extracted from an existing system. Before reordering, inserting or removing
|
|
58
|
+
members, establish the **stored** numbers first; numbering an already reordered list
|
|
59
|
+
would preserve the wrong meaning. Never renumber a published member or reuse its
|
|
60
|
+
number for another meaning. Pinning does not prove old readers accept a removed member.
|
|
61
|
+
|
|
62
|
+
A short-lived enum used only by command inputs or views may remain positional.
|
|
63
|
+
Ordinary compilation does not demand pins. Opt into `--check enum-pinning`
|
|
64
|
+
(or `PLAY0671` or `all`) for an Information hint on wholly unnumbered enums used
|
|
65
|
+
by event properties, including through composite types. MCP `diagnostics` uses
|
|
66
|
+
`checks: "enum-pinning"`. The hint suggests `propose-number-enum-members`, which
|
|
67
|
+
pins current positions; it is a refactoring, not a correctness repair. Read
|
|
68
|
+
model-authoring `references/mcp-tools.md` for the revision-checked proposal loop.
|
|
69
|
+
|
|
70
|
+
## Executable contract and consumer boundary
|
|
71
|
+
|
|
72
|
+
ESM v12 adds an optional canonical **last** `numbers` array parallel to `values`.
|
|
73
|
+
For the concept above, `values` is `["draft", "sent", "cancelled"]` and `numbers`
|
|
74
|
+
is `[1, 4, -1]`. Non-positional numbers select v12. Pins equal to `0..n-1` are
|
|
75
|
+
retained in source/AST but omitted from ESM, preserving the previous executable
|
|
76
|
+
version, bytes and revision; unnumbered enums also preserve their old bytes.
|
|
77
|
+
|
|
78
|
+
Strict reading rejects `numbers` in older versions, without enum values, with a
|
|
79
|
+
length mismatch, duplicates, non-int32 entries or a positional array (non-canonical).
|
|
80
|
+
Programmatic validation enforces the same contract. Specifications still compare
|
|
81
|
+
names; numbers are neither alternative fixture values nor flags.
|
|
82
|
+
|
|
83
|
+
Consumers must **explicitly admit v12**. CLI 3.53.1 and Stage 4.73.1 both bundle
|
|
84
|
+
Screenplay 4.137.0: `cratis render`/Stage do not admit v12 yet. A model with
|
|
85
|
+
non-positional numbers compiles and binds with standalone Screenplay >= 4.139.0,
|
|
86
|
+
but does not render through that CLI. Do not remove its pins to pass rendering;
|
|
87
|
+
report the consumer gap. See toolchain `references/versions.md`.
|
|
88
|
+
|
|
89
|
+
Sources checked at `v4.139.0`: `Documentation/screenplay/concepts.md`,
|
|
90
|
+
`interoperability.md`, `diagnostics.md`, `mcp/authoring-tools.md`, decision 0065,
|
|
91
|
+
`Semantics/Versions.cs`, `SemanticModelValidator.EnumMemberNumbers.cs` and the
|
|
92
|
+
source-backed `EnumMemberNumbersCorpus.V12` (under `Source/DotNET/`). Consumer
|
|
93
|
+
pins: CLI `v3.53.1:Directory.Packages.props`, Stage `v4.73.1:Directory.Packages.props`.
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
## Generated values and responses (ESM v7)
|
|
2
2
|
|
|
3
3
|
A `generated` command property and `returns` response bind and reference-execute
|
|
4
|
-
as ESM v7 (checked at 4.68.0). Current pins
|
|
5
|
-
|
|
6
|
-
`references/versions.md` owns the table. CLI#261 is closed: CLI now admits v7
|
|
4
|
+
as ESM v7 (checked at 4.68.0). Current pins:
|
|
5
|
+
`cratis-screenplay-toolchain/references/versions.md`. CLI#261 is closed: CLI now admits v7
|
|
7
6
|
to Stage planning. The historical CLI 3.41.0 v7 canonical corpus received Stage
|
|
8
7
|
generated-value and response refusals STAGE-ESM-028/029. Do not turn this into a blanket compiler
|
|
9
8
|
refusal or promise a render from binding alone. Preserve the contract for gap-fill
|
|
@@ -45,7 +44,7 @@ Rules (all read at `v4.68.0`):
|
|
|
45
44
|
|
|
46
45
|
Operations remain authorable/unadmitted (PLAY0268). Named event sources,
|
|
47
46
|
streams and command/specification routes instead bind and reference-execute as
|
|
48
|
-
ESM v8 at 4.125.0; CLI
|
|
47
|
+
ESM v8 at 4.125.0; the pinned CLI (toolchain `references/versions.md`) reaches Stage admission through v10,
|
|
49
48
|
not blanket target support. Syntax/MCP acceptance alone is not execution. Source/stream
|
|
50
49
|
forms and realization boundary: `cratis-screenplay-toolchain`
|
|
51
50
|
`references/sources-and-streams.md`. Do not infer further syntax or provider
|
|
@@ -139,8 +139,9 @@ What binds depends on **which tool** you ask, so name the tool and its version:
|
|
|
139
139
|
standalone 4.125.0. Use `screenplay test` or MCP `run-specifications` for V4.
|
|
140
140
|
Operations/systems, exact numbers and refusal/redelivery remain unadmitted.
|
|
141
141
|
Historical CLI 3.41.0 rejected `runs as` syntax and its Stage 4.51.3 check
|
|
142
|
-
refused generated values/responses with STAGE-ESM-028/029. CLI
|
|
143
|
-
|
|
142
|
+
refused generated values/responses with STAGE-ESM-028/029. For the pinned CLI/Stage pair
|
|
143
|
+
(`cratis-screenplay-toolchain/references/versions.md`), v10 reaches construct
|
|
144
|
+
admission, not full support.
|
|
144
145
|
Source/binding admission and target realization are separate gates.
|
|
145
146
|
|
|
146
147
|
The ESM versions, the full disposition table and the Step 7 clock example's binding
|
package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md
CHANGED
|
@@ -28,7 +28,7 @@ Pins and consumer boundaries: toolchain `references/versions.md`.
|
|
|
28
28
|
| Command reads/concurrency | Legacy unprotected decisions, PLAY0271 |
|
|
29
29
|
| Invokes-only trigger reads | Report-only, not protected state; direct production with reads refuses |
|
|
30
30
|
| Generated values/responses | v7 binding/reference execution; historical Stage 4.51.3 check: member refusals STAGE-ESM-028/029 |
|
|
31
|
-
| Sources/streams and command/specification routes | v8 binding/reference execution; CLI
|
|
31
|
+
| Sources/streams and command/specification routes | v8 binding/reference execution; the pinned CLI (toolchain `references/versions.md`) reaches Stage checks through v10 |
|
|
32
32
|
| Declared reaction invocation actor | v10 binding/reference execution; older CLI parser PLAY0137; Stage planner refuses v10 |
|
|
33
33
|
| Operations/systems, exact numbers, refusal/redelivery | Source accepted; whole binding refuses PLAY0268 |
|
|
34
34
|
| UI | Authoring/deferred metadata; runtime support is a separate consumer contract |
|
|
@@ -41,6 +41,7 @@ v19.32.0): `cratis-screenplay-toolchain` `references/versions.md`. Checked at th
|
|
|
41
41
|
| --- | --- |
|
|
42
42
|
| `generate` options, no default-file certainty (stdout when `--file` is absent), spec-project exclusion by name, `CLI0005/0009/0014-0017` | cli `v3.28.2:Source/Cli/Commands/Screenplay/{GenerateScreenplayCommand,GenerateScreenplaySettings,ScreenplayProjectSelection,ScreenplayDiagnosticCodes}.cs` |
|
|
43
43
|
| `SP0016` (rule in code, computed message, `When`/`Unless` written as unconditional), `SP0024` (source did not compile) | Arc `v22.50.5:Source/DotNET/Screenplay/ScreenplayDiagnosticCodes.cs`, `Documentation/backend/csharp/generating-a-screenplay.md` |
|
|
44
|
+
| Non-default secret scope in authoring mode, SP0061–SP0063, self-check contract on compiler upgrades | Arc `v22.70.0:Documentation/backend/csharp/generating-a-screenplay.md`, `Source/DotNET/Screenplay/Verification/ExpectedBindingDiagnostics.cs`; `references/generate-notes.md` |
|
|
44
45
|
| `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
46
|
| 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
47
|
| `then error`, `then denied`, `unique ... released by` | Screenplay `v4.66.0:Documentation/screenplay/{specifications,constraints}.md` |
|
|
@@ -154,8 +155,9 @@ chain per slice before handoff (evidence template); never manufacture references
|
|
|
154
155
|
`unique ... on <every event that sets it>` with `released by`
|
|
155
156
|
(`references/rule-modeling.md`);
|
|
156
157
|
- preserve personal-data/secret protection and authorization found in code,
|
|
157
|
-
using
|
|
158
|
-
|
|
158
|
+
using `pii` / `secret` and evidenced secret scope; Arc 22.70.0 recovery
|
|
159
|
+
losses (SP0061–SP0063) need review (`references/generate-notes.md`).
|
|
160
|
+
Deprecated marker repairs keep legal notes intact, never guess a purpose or basis. Derive purpose/use/retention
|
|
159
161
|
declarations only from evidence or expert decisions; run `--check purposes`
|
|
160
162
|
and inspect the processing record as prompts, not a legal verdict. Keep
|
|
161
163
|
hand-joined legacy ids scalar; never infer composite parts by splitting text.
|
package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
- Coverage (what a provider reads)
|
|
8
8
|
- Diagnostics are the loss list
|
|
9
9
|
- Arc recovery and authoring-only options
|
|
10
|
+
- Arc 22.70.0 compliance recovery
|
|
11
|
+
- Generated-document self-check on compiler upgrades
|
|
10
12
|
- Reading the output cheaply
|
|
11
13
|
|
|
12
14
|
Flags verified with `cratis screenplay generate --help` on the version recorded in
|
|
@@ -17,9 +19,16 @@ cratis-screenplay-toolchain `references/versions.md`; behaviour from the cratis
|
|
|
17
19
|
Screenplay.CritterStack `v0.24.0`. Version-specific capability facts belong in cratis-screenplay-toolchain
|
|
18
20
|
`references/versions.md`.
|
|
19
21
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
For the current standalone compiler and CLI bundle, use the toolchain's
|
|
23
|
+
[version table](../../cratis-screenplay-toolchain/references/versions.md).
|
|
24
|
+
The compliance and self-check sections below are source-checked at Arc 22.70.0
|
|
25
|
+
(`Documentation/backend/csharp/generating-a-screenplay.md`,
|
|
26
|
+
`Analysis/Types/{ConceptRegistry,PersonalDataMarkings,TypesTheDocumentCannotName}.cs`,
|
|
27
|
+
`Emission/Concepts/ConceptSyntaxBuilder.cs`, `Emission/ProtectedIdentityAnnotations.cs`
|
|
28
|
+
and `Verification/ExpectedBindingDiagnostics.cs` under `Source/DotNET/Screenplay/`).
|
|
29
|
+
They require that generator release, not an older bundled adapter;
|
|
30
|
+
a standalone compiler upgrade does not upgrade the generator.
|
|
31
|
+
|
|
23
32
|
Option/admission evidence checked at CLI 3.41.0: released
|
|
24
33
|
`GenerateScreenplaySettings.cs`, `ArcScreenplayGeneration.cs`, v7 planning specs
|
|
25
34
|
and `Documentation/reference/screenplay.md`; older diagnostic probes below keep
|
|
@@ -107,6 +116,65 @@ Handler/reaction bodies, unresolved conditions and unproven origins still need
|
|
|
107
116
|
source review. Do not infer generation/evolution/absence-assertion coverage from
|
|
108
117
|
a package upgrade; read diagnostics and reconcile each recovered scenario.
|
|
109
118
|
|
|
119
|
+
## Arc 22.70.0 compliance recovery
|
|
120
|
+
|
|
121
|
+
A concept with both `[Encrypted]` and `[NotAudited]` becomes `secret`.
|
|
122
|
+
Encryption or audit suppression alone, or only on a member, does not establish
|
|
123
|
+
that concept-wide contract: SP0058 (Information) reports the partial marking
|
|
124
|
+
without adding `secret`; an existing `pii` classification remains.
|
|
125
|
+
|
|
126
|
+
- Subject scope, omitted or explicit, stays bare `secret`.
|
|
127
|
+
- `[Encrypted(EncryptionScope.Namespace)]` plus `[NotAudited]` on the concept
|
|
128
|
+
emits bare `secret` by default and SP0061 (Information) names the unstated
|
|
129
|
+
`namespace` scope: the document instead implies Subject scope. Global behaves
|
|
130
|
+
the same way. Set `ScreenplayOptions.AuthoringOnlyConstructs = true` (CLI
|
|
131
|
+
adapter option `--authoring-only-constructs`) to emit `secret scope namespace`
|
|
132
|
+
or `secret scope global` in the concept body. Scope is syntax-only and does
|
|
133
|
+
not raise the ESM version; it does not make protected concepts executable.
|
|
134
|
+
- A concept also marked `[PII]` becomes `pii secret`, with no emitted scope:
|
|
135
|
+
the C# providers render only `[PII]`; Chronicle rejects `[PII]` combined with
|
|
136
|
+
`[Encrypted]`. Do not add a scope the provider ignores.
|
|
137
|
+
|
|
138
|
+
Member `[PII]` is read from properties and matching positional constructor
|
|
139
|
+
parameters. Two losses that previously needed manual detection now have
|
|
140
|
+
Information diagnostics:
|
|
141
|
+
|
|
142
|
+
| Code | What the document says or loses | Resolve in source or the intentional candidate |
|
|
143
|
+
| --- | --- | --- |
|
|
144
|
+
| SP0062 | `[PII]` on a non-concept member (for example, a String) is not stated; the diagnostic names `Type.Member`. No concept is invented. | Introduce a personal-data concept with evidence-backed meaning; keep the original protection and record the lost marking until resolved. |
|
|
145
|
+
| SP0063 | A member marking promotes its concept to `pii` everywhere; the diagnostic lists unmarked analyzed uses that acquire that classification. | Review every listed use. If all carry personal data, make the concept-wide classification explicit; if meanings differ, separate the concepts rather than remove `pii`. |
|
|
146
|
+
|
|
147
|
+
SP0063 is absent when the concept itself has `[PII]` or every analyzed use is
|
|
148
|
+
marked. Its list covers analyzed uses, not proof of all runtime use sites.
|
|
149
|
+
Reasons, special/criminal qualifiers and processing purposes are not inferred.
|
|
150
|
+
|
|
151
|
+
SP0059 (Information) reports that an identity concept's `pii/secret` annotations
|
|
152
|
+
were left off because Screenplay rejects protected identifiers, destinations and
|
|
153
|
+
stream ids (PLAY0515). The identity/route is retained, not the protection. Record
|
|
154
|
+
that loss and design a surrogate identity; never treat the generated omission as
|
|
155
|
+
authority to remove source protection. SP0058/SP0059 now say `secret` and
|
|
156
|
+
`pii/secret`, not the deprecated `sensitive`/`@pii` vocabulary.
|
|
157
|
+
See command-surface [compliance](../../cratis-screenplay-command-surface/references/compliance.md)
|
|
158
|
+
for classification and persisted-event scope changes.
|
|
159
|
+
|
|
160
|
+
## Generated-document self-check on compiler upgrades
|
|
161
|
+
|
|
162
|
+
Arc compiles and binds its printed document. `ExpectedBindingDiagnostics` tolerates
|
|
163
|
+
only exact known admission-limit messages (PLAY0268) and the permitted legacy
|
|
164
|
+
consistency messages (PLAY0271), not every diagnostic with those codes.
|
|
165
|
+
The loaded compiler's contract must list the code as neither retired nor reserved
|
|
166
|
+
and include Error among its supported severities. A missing, retired, reserved or
|
|
167
|
+
non-error-only code loses the exemption even if an old message still matches.
|
|
168
|
+
Changed or unknown messages also fail closed.
|
|
169
|
+
|
|
170
|
+
After upgrading Screenplay, rerun generation and inspect the self-check instead
|
|
171
|
+
of carrying forward an old waiver. Unexpected binding errors become SP0056
|
|
172
|
+
(Warning for standalone generation, Information for embedded generation); Arc's
|
|
173
|
+
end-to-end gate rejects any SP0056 regardless of severity. Resolve a changed
|
|
174
|
+
admission contract or report a generator defect; do not strip protection or widen
|
|
175
|
+
the exemption. This check is distinct from a clean source-validation result and
|
|
176
|
+
does not prove the model renders or executes.
|
|
177
|
+
|
|
110
178
|
## Reading the output cheaply
|
|
111
179
|
1. V1 on `.ai-work/screenplay/<model-slug>/legacy/static` (folder mode) with the tool and
|
|
112
180
|
command `cratis-screenplay-toolchain` selects, named with its version; record counts, do
|
|
@@ -6,30 +6,27 @@ license: MIT
|
|
|
6
6
|
|
|
7
7
|
# Author a Screenplay model through its AST
|
|
8
8
|
|
|
9
|
-
Screenplay
|
|
10
|
-
|
|
11
|
-
the compiler already knows declarations, references, hierarchy and source ownership.
|
|
9
|
+
Prefer the Screenplay MCP tools to text/regex edits: the compiler owns declaration,
|
|
10
|
+
reference, hierarchy and source evidence for the declarative document set.
|
|
12
11
|
|
|
13
12
|
Screenplay remains experimental. **Valid source is not necessarily executable.**
|
|
14
13
|
It does not generate or run an application; Stage owns rendering/runtime admission.
|
|
15
14
|
When selecting construct syntax or distinguishing source validity from execution, read the [language reference](references/language-reference.md) for constructs,
|
|
16
15
|
the executable profile and a complete compiled model.
|
|
17
16
|
|
|
18
|
-
For
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
contract is in `cratis-screenplay-ui-composition`.
|
|
17
|
+
For screens: discover UI schemas, propose/apply with revisions, then pass the
|
|
18
|
+
same model root or workspace export to all checks. Workflow:
|
|
19
|
+
`references/screen-authoring-workflow.md`; syntax/support:
|
|
20
|
+
`cratis-screenplay-ui-composition`.
|
|
23
21
|
|
|
24
22
|
## Verified product sources
|
|
25
23
|
|
|
26
|
-
Current authoring/MCP guidance follows Screenplay v4.
|
|
24
|
+
Current authoring/MCP guidance follows Screenplay v4.139.0
|
|
27
25
|
`Documentation/screenplay/mcp/`, `ast-authoring.md`, `folders.md`, `vscode.md`.
|
|
28
26
|
Discover installed tools and schemas; CLI bundles can differ from the standalone
|
|
29
27
|
tool. Pins are in `cratis-screenplay-toolchain` `references/versions.md`.
|
|
30
|
-
Historical
|
|
31
|
-
|
|
32
|
-
execution probe. Earlier source attribution is in `references/provenance.md`.
|
|
28
|
+
Historical probes remain 4.66.0; registration example compilation/execution
|
|
29
|
+
remains 4.68.0. Attribution: `references/provenance.md`.
|
|
33
30
|
|
|
34
31
|
## Locate and connect
|
|
35
32
|
|
|
@@ -54,12 +51,10 @@ are in [MCP loop](references/mcp-loop.md). Send `initialize` and
|
|
|
54
51
|
schemas rather than relying on a remembered count.
|
|
55
52
|
|
|
56
53
|
|
|
57
|
-
Look first for the project's existing `.play` files:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
conventional home for consumer-owned `.play` source. The source is the single flow model;
|
|
62
|
-
keep explanatory Markdown in the owning repository's documentation.
|
|
54
|
+
Look first for the project's existing `.play` files: their folder is the model.
|
|
55
|
+
New models go in `Source/` or `src/`, else root `Screenplay/`, never `.cratis/`
|
|
56
|
+
(configuration/shared corpus only). The source is the single flow model;
|
|
57
|
+
explanatory Markdown belongs in repository documentation.
|
|
63
58
|
|
|
64
59
|
`cratis ai install` manages `.cratis/ai/`, never model files. Select the
|
|
65
60
|
`cratis/screenplay` profile in the project's AI configuration. The corpus-owned
|
|
@@ -87,6 +82,9 @@ can keep that entry point; use the project's supported installation channel.
|
|
|
87
82
|
of `.play` files is one application, not independent files.
|
|
88
83
|
2. Use `search-declarations`, `declaration-details`, `find-references` and
|
|
89
84
|
`dependencies` to locate the owning declaration and affected references.
|
|
85
|
+
Before a property rename/removal, read [property links](references/property-links.md):
|
|
86
|
+
`kind: "Property"`, `Owner.member` / `Owner.generationN.member`, direct mappings.
|
|
87
|
+
`complete: false` is incomplete evidence, never a successful empty list.
|
|
90
88
|
3. Read diagnostics and coverage limitations. Use `dependency-graph` for container
|
|
91
89
|
edges, declared-dependency coverage, cycles and advisory order; the board's
|
|
92
90
|
dependency-map toggle exposes this evidence visually. Unknown or ambiguous
|
|
@@ -209,6 +207,10 @@ from silently changing the reviewed candidate.
|
|
|
209
207
|
migrates all occurrences together. Keep the `query Q => observable?` exception.
|
|
210
208
|
- Compliance repairs PLAY0565/0653: [MCP tool guide](references/mcp-tools.md).
|
|
211
209
|
|
|
210
|
+
`propose-number-enum-members` pins an unnumbered enum to current positions.
|
|
211
|
+
Opt-in MCP `checks: "enum-pinning"` / `--check enum-pinning` (PLAY0671) hints at
|
|
212
|
+
stored enums, not correctness repairs. Arguments/review: `references/mcp-tools.md`.
|
|
213
|
+
|
|
212
214
|
Use `propose-extract-inline-event` on the inline `EventSyntax` handle before adding
|
|
213
215
|
a generation (canonical formatting consent; refuses comment loss; no reverse
|
|
214
216
|
operation). Event `propose-rename` pins `id "<old name>"` by default; use
|
|
@@ -293,7 +295,8 @@ that the code compiles or behaves. Read `references/mcp-tools.md#code-attachment
|
|
|
293
295
|
clean run is not a bound or executable result.
|
|
294
296
|
- Operations/`numbers exact` remain unadmitted; routes bind as v8, public
|
|
295
297
|
boundaries v9, identity/overrides/filters v10, qualifying non-route Double
|
|
296
|
-
literals v11
|
|
298
|
+
literals v11, non-positional enum numbers v12 (standalone 4.139.0).
|
|
299
|
+
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.
|
|
297
300
|
- Distinguish authoring acceptance from `executableReady`; unsupported backend
|
|
298
301
|
capabilities are not a reason to drop source constructs or invent stubs.
|
|
299
302
|
- If execution is intended, validate with the owning downstream runtime as well.
|
|
@@ -306,12 +309,9 @@ The ordinary CLI remains useful for whole-folder validation:
|
|
|
306
309
|
cratis screenplay validate <model-folder> --warnings-as-errors
|
|
307
310
|
```
|
|
308
311
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
a generated app that silently drops authored UI. Use the Screenplay-owned canonical
|
|
313
|
-
corpus fixture path when it exists instead of copying `.play` examples into this
|
|
314
|
-
repository.
|
|
312
|
+
Record screen MCP transcripts in `.ai-work/`; render/runtime checks must use the
|
|
313
|
+
same source, never an app that silently drops authored UI. Use the Screenplay-owned canonical
|
|
314
|
+
corpus fixture path instead of copying available `.play` fixtures here.
|
|
315
315
|
|
|
316
316
|
Check installed `tools/list` schemas: the CLI bundle can differ. Never invent
|
|
317
317
|
commands, parameters, syntax nodes or downstream capabilities.
|
package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md
CHANGED
|
@@ -65,6 +65,12 @@ qualifiers, secret scopes and validation. Legacy markers report PLAY0565 informa
|
|
|
65
65
|
repeated header markers report PLAY0653 warning. Purposes declare the use/basis/retention
|
|
66
66
|
separately; see command-surface `references/compliance.md`.
|
|
67
67
|
|
|
68
|
+
Enum member `name = N` pins are unique int32 values, all members or none.
|
|
69
|
+
Unnumbered enums retain positions. Non-positional numbers bind as ESM v12 from
|
|
70
|
+
4.139.0; positional pins preserve older bytes/version. Fixtures and conditions
|
|
71
|
+
still name members. Syntax, stored-number safety and consumer admission:
|
|
72
|
+
command-surface `references/enum-numbers.md`.
|
|
73
|
+
|
|
68
74
|
Projections and captures use their dedicated sub-grammars. Inline code uses a
|
|
69
75
|
tagged fence (` ```csharp `); the older language-line form still parses with
|
|
70
76
|
warning `PLAY0397`. Query the MCP's `syntax-schema` instead of inventing JSON
|
|
@@ -106,6 +106,11 @@ the server sends `roots/list` and serves `tools/list` after the reply).
|
|
|
106
106
|
`find-specification-obligations` (presence, not execution), use
|
|
107
107
|
`find-modeling-smells` as questions needing a domain consequence, and compare
|
|
108
108
|
generated/curated exported snapshots with `semantic-diff`.
|
|
109
|
+
Before renaming/removing a property, use `find-references`/`dependencies`
|
|
110
|
+
`kind: "Property"` (4.138.0+) and `Owner.member` or historical event
|
|
111
|
+
`Owner.generationN.member`. Follow direct mapping counterparts one query at a
|
|
112
|
+
time; inspect incomplete/ambiguous evidence and `reasons`. `complete: false`
|
|
113
|
+
is not an empty successful result. Shapes/roles: [property links](property-links.md).
|
|
109
114
|
3. `open-workspace` and keep `revision` and `catalogRevision`. Opening writes
|
|
110
115
|
nothing. With `identityPersistence: "root-local-on-apply"` the identities file
|
|
111
116
|
is written only by `apply`.
|