@cratis/pi 7.128.0 → 7.130.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/coordinator.md +1 -1
- package/package/corpus/agents/orchestrator.md +1 -1
- package/package/corpus/agents/planner.md +1 -1
- package/package/corpus/harnesses/copilot/instructions/csharp.instructions.md +2 -2
- package/package/corpus/harnesses/copilot/instructions/framework.instructions.md +1 -1
- package/package/corpus/harnesses/copilot/instructions/orleans.instructions.md +2 -1
- package/package/corpus/harnesses/copilot/instructions/pull-requests.instructions.md +1 -1
- package/package/corpus/harnesses/copilot/instructions/specs.csharp.instructions.md +1 -1
- package/package/corpus/harnesses/pi/agents/coordinator.md +1 -1
- package/package/corpus/harnesses/pi/agents/orchestrator.md +1 -1
- package/package/corpus/harnesses/pi/agents/planner.md +1 -1
- package/package/corpus/harnesses/pi/extensions/cratis-hooks/index.ts +1 -1
- package/package/corpus/hooks/README.md +17 -5
- package/package/corpus/hooks/pre-commit.md +2 -2
- package/package/corpus/hooks/scripts/cratis-quality-gate.sh +1 -0
- package/package/corpus/hooks/scripts/cratis-run-specs.sh +147 -0
- package/package/corpus/hooks/scripts/quality-gates.json +5 -7
- package/package/corpus/product-sync.json +4 -4
- package/package/corpus/rules/csharp.md +2 -2
- package/package/corpus/rules/framework.md +1 -1
- package/package/corpus/rules/orleans.md +2 -1
- package/package/corpus/rules/pull-requests.md +1 -1
- package/package/corpus/rules/specs.csharp.md +1 -1
- package/package/corpus/skills/binlog-generation/SKILL.md +1 -1
- package/package/corpus/skills/coverage-analysis/references/setup-discovery.md +1 -1
- package/package/corpus/skills/cratis-application-slice-conformance/SKILL.md +1 -1
- package/package/corpus/skills/cratis-application-slice-specifications/SKILL.md +1 -1
- package/package/corpus/skills/cratis-arc-command-execution/references/command-refusals.md +1 -1
- package/package/corpus/skills/cratis-arc-command-execution/references/occurrence-commands.md +1 -1
- package/package/corpus/skills/cratis-arc-command-operation/references/testing.md +1 -1
- package/package/corpus/skills/cratis-arc-command-validation/references/input-binding.md +1 -1
- package/package/corpus/skills/cratis-arc-command-validation/references/validation-severity.md +1 -1
- package/package/corpus/skills/cratis-arc-react-page/references/from-screenplay.md +5 -5
- package/package/corpus/skills/cratis-chronicle-client-dotnet/references/immediate-append-refusal.md +1 -1
- package/package/corpus/skills/cratis-chronicle-client-dotnet/references/occurrences.md +1 -1
- package/package/corpus/skills/cratis-chronicle-event-constraints/references/storage-uniqueness.md +1 -1
- package/package/corpus/skills/cratis-chronicle-event-specifications/SKILL.md +1 -1
- package/package/corpus/skills/cratis-chronicle-event-type-migration/references/explicit-migrations.md +1 -1
- package/package/corpus/skills/cratis-chronicle-reactor/references/starting-and-replaying.md +1 -1
- package/package/corpus/skills/cratis-chronicle-read-model/references/collection-observation.md +1 -1
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/SKILL.md +1 -1
- package/package/corpus/skills/cratis-ci-pipeline-performance/SKILL.md +1 -1
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/build-once-and-shard.md +7 -3
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/flaky-and-hung-jobs.md +1 -1
- package/package/corpus/skills/cratis-ci-pipeline-performance/references/test-setup-cost.md +1 -1
- package/package/corpus/skills/cratis-commits-and-pull-requests/references/pr-labels-and-release.md +1 -1
- package/package/corpus/skills/cratis-engineering-ci-gates/SKILL.md +3 -2
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/SKILL.md +5 -1
- package/package/corpus/skills/cratis-engineering-local-cross-repo-verification/references/worked-examples.md +17 -8
- package/package/corpus/skills/cratis-orchestration-lanes/references/context-handoff.md +1 -1
- package/package/corpus/skills/cratis-orchestration-lanes/references/lane-brief.md +2 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +6 -1
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +1 -1
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/cases-to-specify.md +5 -5
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/statemachines-and-workflows.md +164 -0
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/todo-list-example.md +12 -15
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/translate-example.md +10 -4
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/complete-examples.md +2 -2
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +8 -2
- package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +5 -4
- package/package/corpus/skills/cratis-screenplay-command-surface/references/described-handlers.md +12 -8
- package/package/corpus/skills/cratis-screenplay-command-surface/references/validate-rules.md +5 -5
- package/package/corpus/skills/cratis-screenplay-command-surface/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/nine-steps.md +6 -3
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generated-recovery.md +4 -4
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +2 -2
- package/package/corpus/skills/cratis-screenplay-read-surface/references/named-keys.md +3 -1
- package/package/corpus/skills/cratis-screenplay-read-surface/references/screen-patterns.md +2 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +4 -4
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/delivery-protocol.md +2 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +6 -5
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +2 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-design.md +0 -3
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-example.md +8 -3
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-examples.md +17 -9
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +4 -3
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/version-skew.md +25 -14
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/view-and-story-specs.md +7 -6
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md +1 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/references/slicing.md +1 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/references/worked-example.md +3 -3
- package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +8 -5
- package/package/corpus/skills/cratis-screenplay-specifications/references/actions-beyond-commands.md +4 -2
- package/package/corpus/skills/cratis-screenplay-specifications/references/child-ordering.md +12 -3
- package/package/corpus/skills/cratis-screenplay-specifications/references/reactions-and-cascades.md +70 -21
- package/package/corpus/skills/cratis-screenplay-specifications/references/vocabulary.md +3 -2
- package/package/corpus/skills/cratis-screenplay-specifications/verification.json +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +3 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/automation-translate-example.md +5 -8
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +12 -11
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostic-arguments.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +10 -7
- package/package/corpus/skills/cratis-screenplay-toolchain/references/fast-path.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/language-admission.md +4 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/preferred-syntax.md +4 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +4 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract-exceptions.json +0 -70
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +4743 -623
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +1 -1
- package/package/corpus/skills/cratis-screenplay-ui-composition/SKILL.md +6 -0
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/action-subjects.md +73 -0
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/file-references.md +4 -3
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/response-continuations.md +1 -1
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/worked-flow.md +1 -1
- package/package/corpus/skills/cratis-specifications-csharp/references/running-specs.md +7 -3
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +8 -6
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +8 -5
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/render-example.md +1 -1
- package/package/corpus/skills/csharp-refactoring/SKILL.md +2 -2
- package/package/corpus/skills/eliminate-redundant-restores/SKILL.md +2 -1
- package/package/corpus/skills/filter-syntax/SKILL.md +1 -1
- package/package/corpus/skills/msbuild/references/build-perf-baseline.md +4 -1
- package/package/corpus/skills/run-tests/SKILL.md +9 -0
- package/package.json +1 -1
package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
5.1.0
|
|
@@ -62,7 +62,7 @@ Identity and compliance traps (`identity.md`, `concepts.md`, `events.md`, `purpo
|
|
|
62
62
|
unknown, not safe. Arc needs `[ExecuteCommandsAsSystem]` to supply a principal.
|
|
63
63
|
|
|
64
64
|
Traps 39 to 44 are tool traps.
|
|
65
|
-
39.
|
|
65
|
+
39. An attached file/inline command handler binds as the v23 result contract only beside unconditional `produces` with a resolved, nonempty body; with no `produces`, `produces ... when` or an unresolved body it refuses PLAY0800 (`CommandHandlerRequiresAttachment`). Read required typed `arguments.subject`, not the message; older binders refuse every attached handler (version gate: [diagnostic arguments](diagnostic-arguments.md)). Pending `handler implementation` beside unconditional productions binds as a described v23 command (PLAY0695). Body-reaching specs are Unsupported ImplementationBody; Stage still refuses rendering STAGE-IMPL-002 even in Stub mode; semantic execution reports ImplementationBody only when reached after gates. `implementation` and `hint` are accepted on a command handler, an operation execute/compensate phase and a command property named rule, and are rejected on concept rules, built-in property rules and whole-command `require`/`validate` bodies; hints do not execute, lock or confirm a body. A handler slice is gap-fill, not a customization of a rendered slice.
|
|
66
66
|
40. `numbers exact` (the source mode) parses but never binds (PLAY0268; "not admitted by any supported executable model (ESM) version yet") and is PLAY0001 on older compilers; it is absent from `grammar.md`. Exact lowering of qualifying Double-mode literals is separate (v11). Never use it in a model or example meant to execute.
|
|
67
67
|
41. MCP roots bug: a dynamic-root server on an old tool answers the roots request with an `id: null` error right after `notifications/initialized`; hosts treat it as fatal, and `open-workspace.path` does not help. Start with a fixed root (`screenplay mcp <folder>`, `cratis screenplay mcp` in a project with `.cratis/ai.json`).
|
|
68
68
|
Requires Screenplay 4.63.2 or later (`screenplay --version`) for a dynamic-root server; the compiler bundled in older cratis releases lacks it.
|
|
@@ -227,7 +227,7 @@ results, plus runtime when it was exercised:
|
|
|
227
227
|
2. **Publication**: what was written, unchanged or refused (`.cratis-render.json`,
|
|
228
228
|
`.cratis-render/journal.json`; `recovered: true` means stop and reconcile).
|
|
229
229
|
3. **Build**: Debug build of the destination (`dotnet build`).
|
|
230
|
-
4. **Tests**:
|
|
230
|
+
4. **Tests**: After the Debug build, run `dotnet test <destination>/<Project>.csproj -c Debug --no-build` for Stage-rendered apps (VSTest). Use a built spec executable only in repositories whose spec projects really are executables (see [specs.csharp](../../../rules/specs.csharp.md)); never start the rendered app's web-server executable to run specs. Generated specifications are
|
|
231
231
|
compiled in Debug only; map results by generated spec class (`when_<snake>` in namespace
|
|
232
232
|
`<Slice ns>.when_<snake>`, `when_<snake>_is_queried`, `when_<snake>_is_projected`) back to
|
|
233
233
|
the `.play` specification, not by test counts.
|
|
@@ -248,6 +248,12 @@ Read [change alternatives](references/change-alternatives.md) when a component's
|
|
|
248
248
|
|
|
249
249
|
Read [interaction example](references/interaction-example.md) when wiring a
|
|
250
250
|
named confirmation behavior and an inline refresh to the same screen.
|
|
251
|
+
|
|
252
|
+
State every plain and toolbar `action`'s subject: `for item` (the chosen record fills its
|
|
253
|
+
inputs) or `for screen` (no row does). Omitted, the compiler infers it from types, and a
|
|
254
|
+
create action on a list can bind the selected row's id. Read
|
|
255
|
+
[action subjects](references/action-subjects.md) when adding a screen action or when
|
|
256
|
+
PLAY0817-PLAY0821 appear.
|
|
251
257
|
Scalar/named `returns` bind and reference-execute (ESM v7).
|
|
252
258
|
Renderer generation/response limits: command-surface `references/generated-values-and-responses.md`.
|
|
253
259
|
Screenplay resolves response names in form submit and execute success (Requires Screenplay 4.148.0 or later);
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Action subjects: `for item` and `for screen`
|
|
2
|
+
|
|
3
|
+
Requires Screenplay 4.248.0 or later (`screenplay --version`). Source: Screenplay
|
|
4
|
+
`Documentation/screenplay/action-subjects.md` (decision 0110).
|
|
5
|
+
|
|
6
|
+
A plain or toolbar `action` states whether it acts on one chosen record or on the screen:
|
|
7
|
+
|
|
8
|
+
- `for item`: the nearest single `data` record, or the selected row of a collection. Inputs bind
|
|
9
|
+
from it: explicit `with <input> from item.<field>` first, then case-sensitive same-name
|
|
10
|
+
fields, then one key field with the same declared concept.
|
|
11
|
+
- `for screen`: independent of selection; no row fills the inputs. Use it for actions that
|
|
12
|
+
create something or that the user fills in through the form.
|
|
13
|
+
|
|
14
|
+
The clause follows the command name, before an inline `label`. Only action toolbar items
|
|
15
|
+
accept it.
|
|
16
|
+
|
|
17
|
+
```screenplay
|
|
18
|
+
concept TaskId : Uuid
|
|
19
|
+
concept Title : String
|
|
20
|
+
module Work
|
|
21
|
+
feature Tasks
|
|
22
|
+
slice StateChange AddTask
|
|
23
|
+
command AddTask
|
|
24
|
+
taskId TaskId identifier
|
|
25
|
+
title Title
|
|
26
|
+
produces event TaskAdded
|
|
27
|
+
title Title = title
|
|
28
|
+
slice StateChange CompleteTask
|
|
29
|
+
command CompleteTask
|
|
30
|
+
taskId TaskId identifier
|
|
31
|
+
note String
|
|
32
|
+
produces event TaskCompleted
|
|
33
|
+
note String = note
|
|
34
|
+
slice StateView OpenTasks
|
|
35
|
+
readmodel OpenTask
|
|
36
|
+
taskId TaskId key
|
|
37
|
+
title Title
|
|
38
|
+
projection OpenTasks => OpenTask
|
|
39
|
+
from TaskAdded
|
|
40
|
+
taskId = $eventSourceId
|
|
41
|
+
title = title
|
|
42
|
+
remove with TaskCompleted
|
|
43
|
+
query ListOpenTasks => OpenTask[]
|
|
44
|
+
screen OpenTasksScreen
|
|
45
|
+
title "Open tasks"
|
|
46
|
+
data OpenTask[] via query ListOpenTasks
|
|
47
|
+
action AddTask for screen
|
|
48
|
+
label "Add task"
|
|
49
|
+
action CompleteTask for item
|
|
50
|
+
label "Complete"
|
|
51
|
+
with taskId from item.taskId
|
|
52
|
+
table OpenTask
|
|
53
|
+
column title label "Task"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
State the subject on every plain and toolbar action. Without it, the compiler infers `for item`
|
|
57
|
+
when there is exactly one collection `data`, one required non-generated identifier and one key
|
|
58
|
+
with the same concept, and `for screen` otherwise. Inference follows types, not intent: here
|
|
59
|
+
`AddTask` without a clause infers `for item`, because its `taskId` has the row key's concept,
|
|
60
|
+
and would bind the selected row's id to a new task.
|
|
61
|
+
|
|
62
|
+
| Code | Severity | Meaning | Fix |
|
|
63
|
+
| --- | --- | --- | --- |
|
|
64
|
+
| PLAY0817 | Error | Malformed, duplicate or misplaced subject clause | One clause after the command name |
|
|
65
|
+
| PLAY0818 | Information | Explains an omitted subject's inference | State `for item` or `for screen` |
|
|
66
|
+
| PLAY0819 | Warning | The inferred binding differs from the legacy case-insensitive row-name matching | Decide per action: `for screen`, or `for item` with explicit inputs; never bulk-accept |
|
|
67
|
+
| PLAY0820 | Warning | Several keys could bind one input | Write `with <input> from item.<field>` |
|
|
68
|
+
| PLAY0821 | Warning | A guarded `for screen` action has collection data and cannot choose one item | Use `for item` or single-record data |
|
|
69
|
+
|
|
70
|
+
A model written before 4.248.0 can report PLAY0818/PLAY0819 on every list-screen action. Review
|
|
71
|
+
each one against what the action means; a create action is `for screen` even when the row has a
|
|
72
|
+
matching identifier. Compiler inference is authoring evidence only: Scene owns the runtime
|
|
73
|
+
selection and form-input behavior.
|
package/package/corpus/skills/cratis-screenplay-ui-composition/references/file-references.md
CHANGED
|
@@ -7,8 +7,9 @@ This reference holds the three meanings of `file` and the rules for paths and lo
|
|
|
7
7
|
Three meanings, one word:
|
|
8
8
|
|
|
9
9
|
- **Backend implementation attachment.** On an attached command `handler`
|
|
10
|
-
(
|
|
11
|
-
|
|
10
|
+
(binds as the v23 result contract beside unconditional `produces` with a resolved
|
|
11
|
+
body from Screenplay 4.250.0, otherwise PLAY0800; pending described handlers bind
|
|
12
|
+
v23 without a file), a validation
|
|
12
13
|
rule predicate, a query `performer`, a reducer rule, a reaction trigger, a
|
|
13
14
|
`constraint` and a `policy`, `file` stands in for the inline body: the
|
|
14
15
|
implementation lives there. These are the files a host inventories.
|
|
@@ -22,7 +23,7 @@ Three meanings, one word:
|
|
|
22
23
|
`readmodel`, `projection`, `slice`, `specification`, top-level `trigger` — it
|
|
23
24
|
only records which file realizes it.
|
|
24
25
|
|
|
25
|
-
Requires Screenplay 4.
|
|
26
|
+
Requires Screenplay 4.250.0 (`screenplay --version`) for a file/inline handler beside `produces` to bind; 4.210.0 to 4.249.x refuse it with PLAY0800 and older binders use PLAY0268. Read its required typed `arguments.subject` to identify the command, never the message.
|
|
26
27
|
|
|
27
28
|
The rules:
|
|
28
29
|
|
|
@@ -11,9 +11,13 @@
|
|
|
11
11
|
- Filters
|
|
12
12
|
- Migrate from 4.x to 5.0
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
`
|
|
16
|
-
|
|
14
|
+
The xUnit examples and migration checklist require `Cratis.Specifications.XUnit.v3`
|
|
15
|
+
5.0 on `net10.0`. This is not a requirement to migrate frameworks: identify the
|
|
16
|
+
project's evaluated runner first. TUnit and `Cratis.Specifications.Runner` suites
|
|
17
|
+
also run their built executable, with their own help-confirmed flags, not xUnit
|
|
18
|
+
`-trx`/filter flags. Only legacy VSTest projects use `dotnet test <project> --no-build`.
|
|
19
|
+
Check package versions and the actual configuration/TFM; the 4.x migration checklist
|
|
20
|
+
below applies only when migrating, not as a prerequisite to running an existing suite.
|
|
17
21
|
|
|
18
22
|
Sources: [Running specifications fast](https://github.com/Cratis/Specifications/blob/main/Documentation/running-fast.md),
|
|
19
23
|
[The native runner](https://github.com/Cratis/Specifications/blob/main/Documentation/runner.md) and
|
|
@@ -148,11 +148,12 @@ and unaudited-version refusals still stop first. Codes, limits and fixes:
|
|
|
148
148
|
overrides (`-036`), unsupported code validation (`-005`), DateTime filters (`-010`),
|
|
149
149
|
unsupported conditional productions, unsupported composite-key projection shapes, including DateTime and decimal key parts (`STAGE-ESM-048`, and `-047` for a single-instance query by parts) and unsupported `all` shapes.
|
|
150
150
|
Protected reads render as Arc read protection in a new enough bundle; shapes it cannot preserve, and every protected read in an older bundle, refuse `STAGE-ESM-044` (see admission.md). Described handlers still refuse `STAGE-IMPL-002` even in Stub mode. Query-performer gaps are a separate contract, not a completed implementation.
|
|
151
|
-
- **Attached command handlers
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
151
|
+
- **Attached command handlers:** a file/inline handler beside unconditional `produces`
|
|
152
|
+
with a resolved body binds as the v23 result contract and Stage renders its C# body.
|
|
153
|
+
Without `produces`, with `produces ... when` or with an unresolved body it refuses
|
|
154
|
+
`PLAY0800`: read the required typed `arguments.subject` for the command, never match
|
|
155
|
+
message text. Older bundled binders refuse every attached handler (version gate:
|
|
156
|
+
toolchain `references/executable-subset.md`).
|
|
156
157
|
- **Binding refusals:** read toolchain `references/executable-subset.md` for
|
|
157
158
|
`PLAY0268`/`PLAY0271` families; binding is not rendering. Composite keys have
|
|
158
159
|
target-specific support, not blanket refusal. Never drop protection.
|
|
@@ -240,7 +241,8 @@ to disk with no managed staging and no safe stale-file removal; a failure can le
|
|
|
240
241
|
result. State the scope in the V5 report.
|
|
241
242
|
- Report V5 as separate results, each a result or "not run": admission, publication,
|
|
242
243
|
Debug build (`dotnet build <destination>/<Project>.csproj -c Debug`), Debug tests
|
|
243
|
-
(`dotnet test`
|
|
244
|
+
(`dotnet test <destination>/<Project>.csproj -c Debug --no-build` after the build; Stage-rendered apps use VSTest) and runtime. Render alone is the first two.
|
|
245
|
+
Use a built spec executable only in repositories whose spec projects really are executables (see [specs.csharp](../../rules/specs.csharp.md)); the rendered app's executable starts its web server, not its specs.
|
|
244
246
|
- A refusal is kept verbatim as reported: `PLAY*` (compile or bind), `PLAN-*` (execution
|
|
245
247
|
plan), `STAGE-*` (admission), `CLI-RENDER-*`, or a plain ownership error for a managed
|
|
246
248
|
file. The fix is an intent-preserving model change or a recorded gap, never an edit of
|
|
@@ -314,11 +314,14 @@ pure expressions, and no generated type shadowing a referenced one. Anything els
|
|
|
314
314
|
`STAGE-ESM-019`, `-021` or `-022`. A reducer needs a `StateView` slice, its read model in the
|
|
315
315
|
same slice, a required Guid or text identifier and a matching keyed query. Resolved
|
|
316
316
|
C# command/concept rule and iterator validation bodies have pure-gated render
|
|
317
|
-
paths; unsupported body/context shapes still refuse.
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
317
|
+
paths; unsupported body/context shapes still refuse. An attached command handler
|
|
318
|
+
beside unconditional `produces` with a resolved body binds as the v23 result contract
|
|
319
|
+
(Screenplay 4.250.0, decision 0117); Stage renders a C# body (`STAGE-IMPL-LANGUAGE` when
|
|
320
|
+
no `csharp` body exists) and its semantic Host and executor report a reached body as
|
|
321
|
+
`Unsupported(ImplementationBody)`. Without `produces`, with `produces ... when` or with
|
|
322
|
+
an unresolved body the handler refuses `PLAY0800` at binding; 4.210.0 to 4.249.x refuse
|
|
323
|
+
every attached handler with it and older binders use PLAY0268. Read the required typed
|
|
324
|
+
`arguments.subject` for the command rather than the message.
|
|
322
325
|
A pending handler beside unconditional productions binds as a described v23
|
|
323
326
|
command; rendering still refuses it with STAGE-IMPL-002 even in Stub mode.
|
|
324
327
|
Query-performer gaps are a separate contract: see [bodies and implementation gaps](current-boundaries.md#bodies-and-implementation-gaps).
|
package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/render-example.md
CHANGED
|
@@ -119,7 +119,7 @@ Why it is shaped this way:
|
|
|
119
119
|
| Forced | the same with `--force` | `written: 1`, the rest `unchanged` |
|
|
120
120
|
| Missing name | render without `--name` | exit 5: `A valid --name is required and must be a C# identifier` |
|
|
121
121
|
| Debug build | `dotnet build out/Marina.csproj -c Debug` | succeeds, 0 warnings, 0 errors |
|
|
122
|
-
| Debug tests | `dotnet test out/Marina.csproj -c Debug` | all specification classes pass |
|
|
122
|
+
| Debug tests | `dotnet test out/Marina.csproj -c Debug --no-build` after the Debug build (Stage-rendered apps use VSTest) | all specification classes pass |
|
|
123
123
|
|
|
124
124
|
Runtime (`docker compose up`, `/healthz`) and the frontend build are separate results.
|
|
125
125
|
|
|
@@ -132,8 +132,8 @@ Use the repo's own build/test workflow when it documents one (`README`/`CONTRIBU
|
|
|
132
132
|
|
|
133
133
|
Otherwise:
|
|
134
134
|
```bash
|
|
135
|
-
dotnet build # 0 errors
|
|
136
|
-
|
|
135
|
+
dotnet build # 0 errors; use dotnet test <project> --no-build only for VSTest (see specs.csharp)
|
|
136
|
+
./<project-dir>/bin/<Config>/<TFM>/<AssemblyName> # built spec executable; same discovered/passed counts
|
|
137
137
|
```
|
|
138
138
|
|
|
139
139
|
One operation per step; never mix a refactor and a behavior change in the same step. On red, stop and report the failure; repair only your edit without discarding unrelated worktree changes.
|
|
@@ -73,7 +73,8 @@ Keep the first restore. Skip a later one only when all four checks pass:
|
|
|
73
73
|
### Step 4: Apply the smallest change
|
|
74
74
|
|
|
75
75
|
- One explicit restore carrying every restore input, then `--no-restore`, `-restore:false` or `--no-build` on later steps.
|
|
76
|
-
-
|
|
76
|
+
- Supported executable suites run their built spec runner instead (see [running-specs](../cratis-specifications-csharp/references/running-specs.md)); the dotnet-test examples here are VSTest-only.
|
|
77
|
+
- Several `dotnet test` steps over one VSTest-only solution: build once, then `dotnet test --no-build` on each. Add `--no-restore -restore:false` if an rsp enables restore, including on .NET 8 and earlier. `--no-restore` alone still rebuilds.
|
|
77
78
|
- Keep self-contained publish settings. A `publish --no-build` still needs a prior build with matching configuration, framework, RID and self-contained output; restore compatibility does not prove that build outputs exist.
|
|
78
79
|
- Scope the change to CI and scripts. Leave `-restore` in `Directory.Build.rsp`, because developers rely on it; pass `-restore:false` per invocation instead.
|
|
79
80
|
- Never remove the first restore. If it is a `--locked-mode` gate, keep it there.
|
|
@@ -11,7 +11,7 @@ metadata:
|
|
|
11
11
|
|
|
12
12
|
# Test Filter Syntax Reference
|
|
13
13
|
|
|
14
|
-
Cratis rules in `.cratis/ai/rules/` (including `csharp.md`, `specs.csharp.md`, and `orleans.md`) and the `cratis-*` skills win where they differ. Specification authoring belongs to **cratis-specifications-csharp**;
|
|
14
|
+
Cratis rules in `.cratis/ai/rules/` (including `csharp.md`, `specs.csharp.md`, and `orleans.md`) and the `cratis-*` skills win where they differ. Specification authoring belongs to **cratis-specifications-csharp**; identify the actual runner rather than assuming xUnit v2/VSTest. Supported Cratis executable suites use direct runner flags first (see its [running-specs reference](../cratis-specifications-csharp/references/running-specs.md)). The dotnet-test forms below are technical syntax when that entrypoint is explicitly required, not the Cratis default.
|
|
15
15
|
|
|
16
16
|
Filter syntax depends on the **platform** and **test framework**.
|
|
17
17
|
|
|
@@ -408,9 +408,12 @@ dotnet restore
|
|
|
408
408
|
if ($LASTEXITCODE -ne 0) { throw "Restore failed; do not use stale assets." }
|
|
409
409
|
dotnet build --no-restore -m
|
|
410
410
|
if ($LASTEXITCODE -ne 0) { throw "Build failed; do not test stale outputs." }
|
|
411
|
-
|
|
411
|
+
./<project-dir>/bin/<Config>/<TFM>/<AssemblyName> # built spec executable
|
|
412
412
|
```
|
|
413
413
|
|
|
414
|
+
Use the evaluated output without rebuilding (see [running-specs](../../cratis-specifications-csharp/references/running-specs.md));
|
|
415
|
+
only VSTest uses `dotnet test <project> --no-build`. The executable step itself
|
|
416
|
+
produces no MSBuild binlog.
|
|
414
417
|
Use matching configuration/TFM/RID and restore-affecting properties in each stage.
|
|
415
418
|
`--no-restore` requires current assets; `--no-build` requires successfully built
|
|
416
419
|
matching test outputs. Keep restore-inclusive and build-only timings separate.
|
|
@@ -88,6 +88,15 @@ resolved. Route identification-only requests to `platform-detection`.
|
|
|
88
88
|
|
|
89
89
|
## Decision table
|
|
90
90
|
|
|
91
|
+
For supported Cratis xUnit v3, TUnit and native-runner suites, restore/build once
|
|
92
|
+
and run each project's built executable directly, or `dotnet <TargetPath.dll>`
|
|
93
|
+
when there is no apphost. Use the matching configuration/TFM and runner-specific
|
|
94
|
+
filter/report flags; see [running-specs](../cratis-specifications-csharp/references/running-specs.md).
|
|
95
|
+
Only identified VSTest projects default to `dotnet test <project> --no-build`.
|
|
96
|
+
Mixed suites run per project, never solution-wide `dotnet test`. The command-mode
|
|
97
|
+
forms below remain valid when the user explicitly requires dotnet-test syntax;
|
|
98
|
+
do not switch an executable suite to them as an automatic fallback.
|
|
99
|
+
|
|
91
100
|
| Detected mode / platform | Command shape | Never use |
|
|
92
101
|
|---|---|---|
|
|
93
102
|
| Classic non-SDK | Repository script, or full MSBuild followed by `vstest.console.exe` / `MSTest.exe` | Assuming `dotnet test` is compatible or migrating implicitly |
|