@cratis/pi 7.32.0 → 7.34.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/screenplay-modeler.md +1 -1
- package/package/corpus/agents/screenplay-renderer.md +1 -1
- package/package/corpus/agents/screenplay-reviewer.md +1 -1
- package/package/corpus/agents/slice-implementer.md +1 -1
- package/package/corpus/rules/profiles.md +1 -0
- package/package/corpus/skills/cratis-application-slice-conformance/LICENSE +2 -2
- package/package/corpus/skills/cratis-application-slice-conformance/SKILL.md +5 -0
- package/package/corpus/skills/cratis-application-slice-conformance/references/checklists.md +12 -0
- package/package/corpus/skills/cratis-application-slice-conformance/references/provenance.md +3 -4
- package/package/corpus/skills/cratis-application-slice-specifications/LICENSE +2 -2
- package/package/corpus/skills/cratis-application-slice-specifications/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-arc-react-page/LICENSE +2 -2
- package/package/corpus/skills/cratis-arc-react-page/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-chronicle-event-modeling/SKILL.md +12 -6
- package/package/corpus/skills/cratis-chronicle-reactor/LICENSE +2 -2
- package/package/corpus/skills/cratis-chronicle-reactor/SKILL.md +5 -2
- package/package/corpus/skills/cratis-chronicle-reactor/references/provenance.md +3 -3
- package/package/corpus/skills/cratis-chronicle-reactor/references/slice-delivery-checklist.md +93 -0
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/LICENSE +2 -2
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/SKILL.md +1 -1
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/references/provenance.md +3 -3
- package/package/corpus/skills/cratis-chronicle-read-model-specifications/references/view-lifecycle-checks.md +79 -0
- package/package/corpus/skills/cratis-event-model-diagram/LICENSE +7 -0
- package/package/corpus/skills/cratis-event-model-diagram/SKILL.md +26 -2
- package/package/corpus/skills/cratis-event-model-diagram/references/provenance.md +19 -0
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +16 -11
- 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 +7 -7
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/effects-and-idempotency.md +1 -1
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +5 -6
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/public-events-and-direction.md +2 -3
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/realization-and-gap-fill.md +9 -5
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/todo-list-example.md +6 -6
- package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/translate-example.md +1 -1
- package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +16 -15
- 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 +20 -19
- package/package/corpus/skills/cratis-screenplay-command-surface/references/compliance.md +3 -1
- 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 +5 -6
- package/package/corpus/skills/cratis-screenplay-command-surface/references/validate-rules.md +4 -2
- package/package/corpus/skills/cratis-screenplay-delivery-planning/LICENSE +9 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/SKILL.md +118 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/references/parallel-delivery.md +45 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/references/provenance.md +29 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/references/slice-counting.md +43 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/references/velocity-and-capacity.md +48 -0
- package/package/corpus/skills/cratis-screenplay-delivery-planning/verification.json +16 -0
- package/package/corpus/skills/cratis-screenplay-discovery/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-discovery/SKILL.md +6 -5
- package/package/corpus/skills/cratis-screenplay-discovery/references/divergent-sweep.md +1 -0
- package/package/corpus/skills/cratis-screenplay-discovery/references/domain-analysis-template.md +92 -0
- package/package/corpus/skills/cratis-screenplay-discovery/references/personas-and-causes.md +2 -2
- package/package/corpus/skills/cratis-screenplay-discovery/references/provenance.md +4 -3
- package/package/corpus/skills/cratis-screenplay-discovery/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-event-modeling/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +30 -29
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/nine-steps.md +7 -5
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +13 -10
- package/package/corpus/skills/cratis-screenplay-event-modeling/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/SKILL.md +26 -13
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/candidate-inventory.md +6 -1
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +7 -0
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/prologue-safety.md +22 -17
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/rule-modeling.md +2 -2
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/side-car-migration.md +1 -0
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +25 -25
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/language-reference.md +8 -2
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-loop.md +8 -3
- package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +38 -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/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +8 -8
- package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +2 -2
- package/package/corpus/skills/cratis-screenplay-model-review/references/checklist.md +4 -4
- package/package/corpus/skills/cratis-screenplay-model-review/references/model-inventory-report.md +75 -0
- package/package/corpus/skills/cratis-screenplay-model-review/references/provenance.md +3 -4
- package/package/corpus/skills/cratis-screenplay-model-review/references/public-keys-and-routes.md +1 -1
- package/package/corpus/skills/cratis-screenplay-model-review/references/worked-example.md +4 -3
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/SKILL.md +7 -5
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/core-rules-digest.md +131 -0
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/phases.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/provenance.md +25 -4
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/reasoning-notes.md +2 -2
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/verdicts-and-modes.md +1 -1
- package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/vocabulary-map.md +5 -4
- package/package/corpus/skills/cratis-screenplay-projections/SKILL.md +9 -5
- package/package/corpus/skills/cratis-screenplay-projections/references/pdl-grammar.md +4 -2
- package/package/corpus/skills/cratis-screenplay-read-surface/LICENSE +7 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/SKILL.md +16 -8
- package/package/corpus/skills/cratis-screenplay-read-surface/references/provenance.md +21 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/references/screen-patterns.md +130 -0
- package/package/corpus/skills/cratis-screenplay-read-surface/verification.json +1 -1
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +60 -47
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/delivery-protocol.md +17 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/drift-and-ledger.md +19 -2
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +24 -6
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/renderability-gate.md +21 -16
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/worked-example.md +34 -29
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/SKILL.md +5 -4
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/berth-reservations.md +1 -1
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-design.md +5 -4
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/invoicing-dues-example.md +32 -3
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/provenance.md +3 -4
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-catalogue.md +7 -6
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-examples.md +3 -3
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-workshop.md +15 -7
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +11 -10
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/view-and-story-specs.md +6 -4
- package/package/corpus/skills/cratis-screenplay-slice-design/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/SKILL.md +4 -3
- package/package/corpus/skills/cratis-screenplay-slice-design/references/command-inventory.md +2 -2
- package/package/corpus/skills/cratis-screenplay-slice-design/references/derived-condition-events.md +68 -0
- package/package/corpus/skills/cratis-screenplay-slice-design/references/field-lineage.md +1 -1
- package/package/corpus/skills/cratis-screenplay-slice-design/references/provenance.md +5 -5
- package/package/corpus/skills/cratis-screenplay-slice-design/references/read-model-design.md +17 -0
- package/package/corpus/skills/cratis-screenplay-slice-design/references/rule-layers.md +6 -6
- package/package/corpus/skills/cratis-screenplay-slice-design/references/worked-example.md +3 -3
- package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +7 -5
- package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +4 -3
- package/package/corpus/skills/cratis-screenplay-specifications/references/generated-fixtures.md +3 -2
- package/package/corpus/skills/cratis-screenplay-specifications/references/persona-callers-and-cases.md +3 -0
- package/package/corpus/skills/cratis-screenplay-specifications/references/reactions-and-cascades.md +3 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +14 -11
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/boundaries.md +31 -3
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/chronicle-boundaries.md +6 -6
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/consistency-and-concurrency.md +12 -11
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/evolution.md +18 -1
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/provenance.md +4 -4
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +1 -1
- package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/streams-example.md +1 -1
- package/package/corpus/skills/cratis-screenplay-toolchain/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +29 -18
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet-example.md +3 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +7 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +21 -2
- package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +5 -3
- package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +32 -18
- 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 +3 -4
- package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +46 -16
- 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 +8 -8
- package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +18 -13
- package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +41 -20
- package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +7 -2
- package/package/corpus/skills/cratis-screenplay-ui-composition/LICENSE +2 -2
- package/package/corpus/skills/cratis-screenplay-ui-composition/SKILL.md +10 -10
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/flow-review.md +1 -1
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/provenance.md +2 -3
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +41 -16
- package/package/corpus/skills/cratis-screenplay-ui-composition/references/worked-flow.md +17 -9
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +85 -77
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +65 -16
- 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/references/render-example.md +3 -1
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/rendered-application.md +30 -15
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/sandbox-and-specrunner.md +21 -1
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +9 -4
- package/package/profile-catalog.json +1 -0
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ sections, in this order:
|
|
|
11
11
|
not empty, the skill `LICENSE` carries the "Third-party notices" section with the **complete**
|
|
12
12
|
MIT text (copyright line, permission notice and disclaimer). Closely adapted material is
|
|
13
13
|
attributed to the source it came from, not to a neighboring one.
|
|
14
|
-
2. **Adapted closely (Martin Dilger and Nebulit GmbH
|
|
14
|
+
2. **Adapted closely (Martin Dilger and Nebulit GmbH).** One row per item taken from Martin Dilger and Nebulit GmbH's
|
|
15
15
|
agentic-engineer: source file, where it is used, how. Mark "idea; our wording kept" where only
|
|
16
16
|
the idea was taken. The skill `LICENSE` carries the Nebulit notice.
|
|
17
17
|
3. **Method lineage.** Public method sources (books, talks, standards), cited as sources of ideas.
|
|
@@ -34,11 +34,10 @@ full notice is in this skill's `LICENSE` ("Third-party notices").
|
|
|
34
34
|
| same file, "Mid-Workflow Entry" | `SKILL.md`, `phases.md` "Resume mid-workflow" | Entry points table and identity recomputation added |
|
|
35
35
|
| same file, "Final Output" and "Quality Checklist" | `phases.md` "Final output" and "Quality checklist (closing)" | Items rewritten around Screenplay verdicts, specifications and review |
|
|
36
36
|
|
|
37
|
-
## 2. Adapted closely (Martin Dilger and Nebulit GmbH
|
|
37
|
+
## 2. Adapted closely (Martin Dilger and Nebulit GmbH)
|
|
38
38
|
|
|
39
39
|
Source: https://github.com/Nebulit-GmbH/agentic-engineer at commit `07b0f30648d663cb588d7e2c7aa031af9dfc21f2`,
|
|
40
|
-
by Martin Dilger and Nebulit GmbH (https://nebulit.de)
|
|
41
|
-
is adapted with the agreement of Martin Dilger and Nebulit GmbH.
|
|
40
|
+
by Martin Dilger and Nebulit GmbH (https://nebulit.de), used with the explicit consent of Martin Dilger and Nebulit GmbH.
|
|
42
41
|
|
|
43
42
|
| Source file | Used in | How |
|
|
44
43
|
|---|---|---|
|
|
@@ -55,6 +54,28 @@ is adapted with the agreement of Martin Dilger and Nebulit GmbH.
|
|
|
55
54
|
| `.claude/skills/update-prompt-status/SKILL.md` and kit "exactly two status updates per prompt" | `references/per-turn-protocol.md` step 7 | Idea; one start marker and one closing outcome per turn, our wording |
|
|
56
55
|
| `.claude/skills/eventmodeling-core-rules/SKILL.md`: modeling and critic postures never mixed; a known refusal is a documented rule | `SKILL.md` "Modes", "Do not cut corners to save tokens or effort" | Idea; our wording kept |
|
|
57
56
|
| `.claude/skills/connect/SKILL.md`: discover capabilities once per session | `SKILL.md` "Run protocol", `references/identity-and-edits.md` | Idea; our wording kept |
|
|
57
|
+
| `.claude/skills/eventmodeling-core-rules/SKILL.md`: modes (modeling versus critic), element definitions and naming, causality, role catalog, field lineage, open question versus decided failure, offline-first, anti-patterns, structural shapes, quick self-check | `references/core-rules-digest.md` | Adapted closely as a one-page card translated to `.play` constructs. Not adopted: lanes, the single-issuer command rule, linked copies, the translation chain with a never-closing todo list, "read model never drives command validation" (Screenplay `reads` + `require`), the update-feeding-read-model procedure; "bed" is a candidate signal here, not an always-flag |
|
|
58
|
+
|
|
59
|
+
## Not adopted from agentic-engineer (rejected, with reasons)
|
|
60
|
+
|
|
61
|
+
Recorded once here for the whole method family, checked against the same commit
|
|
62
|
+
(`07b0f30648d663cb588d7e2c7aa031af9dfc21f2`). A rejection stays rejected unless a released Screenplay or
|
|
63
|
+
Chronicle capability removes its reason.
|
|
64
|
+
|
|
65
|
+
| Source file or topic | Reason |
|
|
66
|
+
|---|---|
|
|
67
|
+
| `connect`, `learn-eventmodelers-api`, `load-slice`, `update-prompt-status`, and the 24 `references/api-fallback.md` files | Transport and credentials for the eventmodelers board. The Screenplay MCP server (`cratis screenplay mcp`) is the only transport; its tool catalog is `cratis-screenplay-model-authoring` `references/mcp-tools.md` and the root is `mcpServers.screenplay.root` in `.cratis/ai.json` |
|
|
68
|
+
| `place-element`, `html-screen`, `storyboard-screen`, `discover-storyboard` HTML reconstruction | Board lanes, columns, cells and HTML or wireframe rendering. Screenplay screens are declarative and Stage renders them; a recreated page is never evidence |
|
|
69
|
+
| `.agent-modeling-kit/README.md`, `lib/config.js`, `package.json`, `package-lock.json`, root `CLAUDE.md` and `README.md` | Board runtime, config walk, package stubs and an Emmett/Postgres/Express/Flyway template; Chronicle and Arc are the runtime here |
|
|
70
|
+
| `.agent-modeling-kit/CLAUDE.md` and `AGENTS.md`: `<promise>`, progress file, board prompt queue, post-question-and-continue autonomy | Board-specific loop control. Our per-turn protocol and stop-or-assume keep the useful parts, and Cratis stops for consequential unknowns |
|
|
71
|
+
| `eventmodeling-designing-event-models/references/examples.md` | The order example embeds a calculated `total` event field and a generic domain; Cratis examples are compiled |
|
|
72
|
+
| Single issuer per command; a screen wired to more than one command always fails; "the bed" as an always-flag | Screenplay commands may have several origins and a screen several actions; the shape stays a candidate signal |
|
|
73
|
+
| "A read model never drives command validation" | Screenplay commands declare `reads` and `require`; a decision uses stored state only through declared `reads` |
|
|
74
|
+
| Compulsory todo list per automation; never-closing translation queue; every trigger is an event | Direct reactions, clock and application triggers and `capture` are supported; a translation holding pending work gets a terminal disposition |
|
|
75
|
+
| "Default gracefully" and log-and-drop for missing external data | Defaults are never fabricated and failures are recorded facts |
|
|
76
|
+
| Linked copies, backward-arrow handling, `session:` field mappings, `validate_model` batch calls | Board mechanics; caller identity is `context` and the model has no columns |
|
|
77
|
+
| "No natural end" red flag, event-granularity tip, archival splits, `no computed fields` as an absolute | Long-lived identities are normal here, generic update events are defects, and decided calculations are facts |
|
|
78
|
+
| Emmett decide/evolve structure, `processor.ts`, processor ids and locks, DLQ store, SQL operations, Flyway, Testcontainers, `routes.ts` | A different runtime; Chronicle and Arc own delivery, projection and transport |
|
|
58
79
|
|
|
59
80
|
## 3. Method lineage
|
|
60
81
|
|
package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/reasoning-notes.md
CHANGED
|
@@ -14,8 +14,8 @@ PLAY0477 retained for events. Specifications accept `description`, not documenta
|
|
|
14
14
|
put their longer reasoning on the owning slice. Projections/screens do not accept it.
|
|
15
15
|
Canonical printing retains documentation on its owner. It is report-only (PLAY0270),
|
|
16
16
|
absent from executable bytes and `modelRevision`; edits change source identity
|
|
17
|
-
(`verdicts-and-modes.md`). Neither description nor documentation
|
|
18
|
-
(Stage#178): model the rule first, never treat prose as enforcement.
|
|
17
|
+
(`verdicts-and-modes.md`). Neither description nor documentation reaches rendered code except as XML doc
|
|
18
|
+
comments (Stage#178 closed): model the rule first, never treat prose as enforcement.
|
|
19
19
|
|
|
20
20
|
Cover, briefly and only where real:
|
|
21
21
|
1. Scope: the business process and the identities its streams are keyed by.
|
package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/verdicts-and-modes.md
CHANGED
|
@@ -18,7 +18,7 @@ defines what each result means and how to report it. Do not copy version facts h
|
|
|
18
18
|
|
|
19
19
|
| Result | Evidence | Does NOT prove |
|
|
20
20
|
|---|---|---|
|
|
21
|
-
| V1 authorable | folder-mode validate with warnings as errors. The standalone compiler includes imports in folder and file mode;
|
|
21
|
+
| V1 authorable | folder-mode validate with warnings as errors. The standalone compiler includes imports in folder and file mode; `cratis` CLI 3.28.2 file validation ignored imports (cli#244, probed); since 3.28.4 (PR #258) it compiles the file with its imports, but folder mode stays the recommended cross-tool check | semantics, binding, specs |
|
|
22
22
|
| V2 executable diagnostics | the executable model reports no diagnostics for the scope | that any spec runs or passes |
|
|
23
23
|
| V3 binding-ready | the model binds to the executable semantic model | that any spec runs or passes |
|
|
24
24
|
| V4 reference specs run | the reference execution route only: engine, and per `.play` specification passed / failed / unsupported / cancelled | rendering, generated code, build or target tests |
|
package/package/corpus/skills/cratis-screenplay-modeling-lifecycle/references/vocabulary-map.md
CHANGED
|
@@ -18,10 +18,10 @@ speaks in them; never model board mechanics (lanes, node ids, positions).
|
|
|
18
18
|
| Chapter / workflow | `feature` | feature folder | vertical slices |
|
|
19
19
|
| Slice | `slice` (one behaviour, not one artifact of each kind) | vertical slice folder | vertical slices |
|
|
20
20
|
| Scenario (Given/When/Then) | `specification` | generated spec class `when_<spec_name>` (Debug) or hand-written C# specs | `cratis-screenplay-specifications`; C# spec skills |
|
|
21
|
-
| Storyline (ordered beats) | a **family** of specifications sharing example data, each one transition (no storyline syntax at
|
|
21
|
+
| Storyline (ordered beats) | a **family** of specifications sharing example data, each one transition (no storyline syntax at Screenplay 4.139.0) | several spec classes | specifications |
|
|
22
22
|
| Field validation | concept `validate` (every use) / command `validate`, `require` | `ConceptValidator<T>` / `CommandValidator<T>` | command validation |
|
|
23
23
|
| Role permission ("Cannot") | `policy` + `authorize` + `then denied` spec; ownership via `claim ... matches subject` | `[Authorize(Policy)]`, generated policies | authorization |
|
|
24
|
-
| Precondition on stream state | `reads` + `require` as stated intent, not enforced at
|
|
24
|
+
| Precondition on stream state | `reads` + `require` as stated intent, not enforced at Screenplay 4.139.0 (target: Arc `[ProtectedDecision]` + `DecisionRead<T>`, or Chronicle DCB; APIs available to gap-fill in Stage 4.73.1's scaffold of Arc 22.68.0/Chronicle 19.45.0, not emitted protection) | decision over a guarded read | command validation |
|
|
25
25
|
| Generated id (`derived:uuid4()`) | `generated` (authorable, not executable) | id supplied before `Handle()` | commands |
|
|
26
26
|
| External system / outbound call | `Translate` slice (inbound); `system`/`operation` (authorable, not executable) or Automation (outbound) | `ICommandOperation` / reactor | operations, reactors |
|
|
27
27
|
| HTML mockup | `screen` Level 1 + board (`visualize-model`) | default Scene composition | ui composition |
|
|
@@ -42,8 +42,9 @@ Screenplay meaning, and when you meet the older usage, translate it and say so.
|
|
|
42
42
|
- Screenplay **`reaction`**: the construct that models it (`when` trigger, optional `where`,
|
|
43
43
|
`invokes` a command or `produces` events).
|
|
44
44
|
- Chronicle **reactor**: C# observer, usually for side effects; it does not by itself define
|
|
45
|
-
business decisions. A Screenplay reaction is authorable and bindable, but Stage
|
|
46
|
-
Translate slice: the reactor and command are gap-fill code.
|
|
45
|
+
business decisions. A Screenplay reaction is authorable and bindable, but Stage 4.73.1 renders no Automation or
|
|
46
|
+
Translate slice: the reactor and command are gap-fill code. A reaction that both produces events and invokes commands is
|
|
47
|
+
refused by Stage (`STAGE-ESM-037`); Arc 22.72.0 and later run one reactor returning events and commands (the Stage scaffold's Arc 22.68.0 needs a proven override), so keep the reaction whole.
|
|
47
48
|
|
|
48
49
|
## Scenario vs specification
|
|
49
50
|
"Scenario" is the Event Modeling example and the scenario *types* `cratis-screenplay-scenario-coverage` uses for
|
|
@@ -35,7 +35,8 @@ source is the single flow model.
|
|
|
35
35
|
The update follows `commands.md`, `events.md` and `mcp/authoring-tools.md` at
|
|
36
36
|
that main commit (after v4.52.0); no PDL example changes in this update.
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Originally checked against the Screenplay repository at tag `v4.31.0` (commit `355dffb`; the
|
|
39
|
+
projection grammar was re-read at v4.139.0 for headers and dynamic keys):
|
|
39
40
|
`Documentation/screenplay/projections/` (including `semantic-model.md`, `keys.md`
|
|
40
41
|
and `variants.md`), `readmodels.md`, `diagnostics.md` and decisions 0001 and 0002.
|
|
41
42
|
Every example below compiles with that version's compiler. Reverify before
|
|
@@ -88,8 +89,11 @@ Read [observer filters](../cratis-screenplay-toolchain/references/production-rou
|
|
|
88
89
|
|
|
89
90
|
## Projection-level directives
|
|
90
91
|
|
|
91
|
-
`
|
|
92
|
-
|
|
92
|
+
`description "..."` (or a fenced text block) on the projection header (report-only `PLAY0270`; variants
|
|
93
|
+
and nested blocks take none), `no automap`, `sequence <name>`, `file <path>`. `sequence` is a realization
|
|
94
|
+
concern and does not bind to the executable model. A mapping target may end in a dynamic dictionary
|
|
95
|
+
key, `count eventCountByType.$eventContext.eventType.id` (one entry per distinct value); only
|
|
96
|
+
`$eventContext` resolves there, any other `$` text is a literal key with warning `PLAY0299`.
|
|
93
97
|
|
|
94
98
|
⚠️ **Do not write `key` on the projection.** It parses, but neither Chronicle nor
|
|
95
99
|
the executable model routes any event by it, and it is not a default for the
|
|
@@ -328,8 +332,8 @@ What the executable model does with it (ESM v3):
|
|
|
328
332
|
- The body is an opaque attachment identified by a content hash, never compiled
|
|
329
333
|
or run by Screenplay. The reference runner cannot compute reducer state, so a
|
|
330
334
|
specification that reads a reducer-built read model reports unsupported and
|
|
331
|
-
never passes. A target must supply the transition. Stage 4.
|
|
332
|
-
(Roslyn allowlist); an impure body is gap-fill code, and the model stays the contract.
|
|
335
|
+
never passes. A target must supply the transition. Stage (4.73.1) admits only pure reducer bodies
|
|
336
|
+
(Roslyn allowlist, `STAGE-ESM-019`/`-022`); an impure body is gap-fill code, and the model stays the contract.
|
|
333
337
|
|
|
334
338
|
**Prefer a projection where one will do.** A reducer is code, and code is the part
|
|
335
339
|
of a document a reader cannot check at a glance.
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
|
|
11
11
|
Checked against `Documentation/screenplay/projections/{grammar,semantic-model,keys,variants}.md`
|
|
12
12
|
and `Source/DotNET/Screenplay/Parsing/ProjectionParser.cs` at Screenplay tag
|
|
13
|
-
`v4.31.0` (commit `355dffb`)
|
|
13
|
+
`v4.31.0` (commit `355dffb`); the header `description` and the dynamic dictionary-key target
|
|
14
|
+
(`Target = ["@"] Path [DynamicKey]`, `DynamicKey = "." "$eventContext" "." EventContextPath`) were added in
|
|
15
|
+
later releases and re-read at v4.139.0.
|
|
14
16
|
|
|
15
17
|
The grammar says what **parses**. It does not say what an event does at runtime:
|
|
16
18
|
Chronicle's lowering decides that (Screenplay decision 0001), and the
|
|
@@ -143,7 +145,7 @@ LiteralKeyword = "literal", " ", Literal ; (* parsed at the Expr level *)
|
|
|
143
145
|
| `PLAY0190` | A reducer rule body opens with an unknown word |
|
|
144
146
|
| `PLAY0191` | A read model is built by more than one projection or reducer |
|
|
145
147
|
| `PLAY0192` | A read model is declared more than once |
|
|
146
|
-
| `PLAY0295`–`PLAY0299` | An `$eventContext` path the event-context catalog does not have |
|
|
148
|
+
| `PLAY0295`–`PLAY0299` | An `$eventContext` path the event-context catalog does not have; `PLAY0299` also warns when a dynamic dictionary key uses a `$` source other than `$eventContext` |
|
|
147
149
|
| `PLAY0380` | Chronicle drops part of a construct: `all` below the top level, or `automap` on a joined event |
|
|
148
150
|
| `PLAY0381` | A projection-level `key` routes no event |
|
|
149
151
|
| `PLAY0382`–`PLAY0385` | Variant errors: no `enters on`, shared mapping missing on a variant, duplicate variant name, entering event claimed twice |
|
|
@@ -1,2 +1,9 @@
|
|
|
1
1
|
Copyright (c) Cratis. All rights reserved.
|
|
2
2
|
Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
Third-party notices
|
|
5
|
+
|
|
6
|
+
This skill adapts material from agentic-engineer by Martin Dilger and Nebulit GmbH
|
|
7
|
+
(https://github.com/Nebulit-GmbH/agentic-engineer, commit 07b0f30648d663cb588d7e2c7aa031af9dfc21f2;
|
|
8
|
+
https://nebulit.de), used with the explicit consent of Martin Dilger and Nebulit GmbH. The adapted
|
|
9
|
+
material remains credited to Martin Dilger and Nebulit GmbH. See references/provenance.md.
|
|
@@ -150,7 +150,8 @@ pushing; without the marker a query is one-shot, which is the default and what
|
|
|
150
150
|
most reads are. The marker qualifies only *how* the result arrives, so it composes
|
|
151
151
|
with `[]`, `optional`, `by`, `filter`, `authorize` and a `performer`, and a screen binds
|
|
152
152
|
to a live query exactly as it binds to a one-shot one. The delivery itself is the
|
|
153
|
-
target runtime's: the executable model
|
|
153
|
+
target runtime's: the executable model binds `observable` queries (delivery `live`) that
|
|
154
|
+
have no `filter`, `scoped to` or `performer`.
|
|
154
155
|
|
|
155
156
|
Paging, sorting and change-set delivery for queries are accepted as Screenplay
|
|
156
157
|
decision 0010 but **not in the language yet**. Do not invent syntax for them.
|
|
@@ -173,13 +174,14 @@ on the header line is a declaration error, not a shorthand.
|
|
|
173
174
|
|
|
174
175
|
### What runs
|
|
175
176
|
|
|
176
|
-
In the Screenplay 4.
|
|
177
|
-
`=> <ReadModel> optional` with one caller-supplied `by` argument
|
|
178
|
-
|
|
179
|
-
|
|
177
|
+
In the Screenplay 4.139.0 executable model (admitted since 4.105.0) these bind: a keyed
|
|
178
|
+
`=> <ReadModel> optional` with one caller-supplied `by` argument, an unfiltered list
|
|
179
|
+
`=> <ReadModel>[]`, a list narrowed by one caller-supplied `by` key, and the `observable`
|
|
180
|
+
form of each. `filter`, `scoped to`, `performer`, `by ... from` and composite `by` report
|
|
181
|
+
`PLAY0268`, as does a single non-optional `=> <ReadModel>`. Its `authorize` gate runs before
|
|
180
182
|
the lookup, ANDed with module and feature gates; a denied caller gets
|
|
181
183
|
`Unauthorized`. Pin that with a `given caller` fixture and `then denied` (see
|
|
182
|
-
`cratis-screenplay-specifications`). Model
|
|
184
|
+
`cratis-screenplay-specifications`). Model `filter`, `scoped to` and `performer` shapes when the
|
|
183
185
|
application needs them; just do not claim the reference runner exercised them.
|
|
184
186
|
|
|
185
187
|
## `screen` — three levels
|
|
@@ -192,8 +194,10 @@ commands and screens it names are declared elsewhere.
|
|
|
192
194
|
```screenplay excerpt
|
|
193
195
|
screen InvoiceList
|
|
194
196
|
data InvoiceListReadModel[] via query ListInvoices
|
|
195
|
-
|
|
196
|
-
|
|
197
|
+
section registerInvoiceInput
|
|
198
|
+
title "Register invoice"
|
|
199
|
+
on click
|
|
200
|
+
navigate to RegisterInvoiceScreen
|
|
197
201
|
action CancelInvoice
|
|
198
202
|
```
|
|
199
203
|
|
|
@@ -307,8 +311,12 @@ binding failures are errors.
|
|
|
307
311
|
Read `references/versions.md` in `cratis-screenplay-toolchain` when choosing a tool, checking versions, or assessing executable and renderable subsets. Where a construct sits in the
|
|
308
312
|
method: `cratis-screenplay-modeling-lifecycle` and `cratis-screenplay-slice-design`.
|
|
309
313
|
|
|
314
|
+
Read [screen patterns](references/screen-patterns.md) when deciding whether a screen is an input, status or error-state screen and which `data` and `action` lines it needs.
|
|
315
|
+
|
|
310
316
|
## Route near misses
|
|
311
317
|
|
|
318
|
+
Attribution and licences: `references/provenance.md`.
|
|
319
|
+
|
|
312
320
|
- How events fill the read model: `cratis-screenplay-projections`.
|
|
313
321
|
- Layouts, templates, forms, component bindings, toolbars, outlets, contributions, packages and themes: `cratis-screenplay-ui-composition`.
|
|
314
322
|
- Asserting query results: `cratis-screenplay-specifications`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Provenance
|
|
2
|
+
|
|
3
|
+
## Adapted closely (Martin Dilger and Nebulit GmbH)
|
|
4
|
+
|
|
5
|
+
Source: https://github.com/Nebulit-GmbH/agentic-engineer at commit `07b0f30648d663cb588d7e2c7aa031af9dfc21f2`,
|
|
6
|
+
by Martin Dilger and Nebulit GmbH (https://nebulit.de), used with the explicit consent of Martin Dilger
|
|
7
|
+
and Nebulit GmbH. The notice is in this skill's `LICENSE`.
|
|
8
|
+
|
|
9
|
+
| Source file | Used in | How |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `.claude/skills/eventmodeling-storyboarding-events/SKILL.md`, "Common Patterns": input screen, status screen, error state | `references/screen-patterns.md` | Adapted closely and mapped to `screen`, `data`, `action` and `specification` (`then error`); one screen per column, lanes, actor perspective rows and mandatory rendering not adopted; the example is compiled with Screenplay 4.139.0 |
|
|
12
|
+
|
|
13
|
+
Not adopted: HTML screen reconstruction and wireframe sketching (`html-screen`, `storyboard-screen`), which are board
|
|
14
|
+
mechanics; Screenplay screens are declarative and Stage renders them.
|
|
15
|
+
|
|
16
|
+
## Other lineage
|
|
17
|
+
|
|
18
|
+
- Screenplay language documentation and the released tool, pinned in `cratis-screenplay-toolchain`
|
|
19
|
+
`references/versions.md`: the `readmodel`, `query` and `screen` constructs.
|
|
20
|
+
- Event Modeling (Adam Dymitruk) and Martin Dilger, *Understanding Eventsourcing*: the screen as the point where
|
|
21
|
+
a person reads a view and decides.
|
|
@@ -0,0 +1,130 @@
|
|
|
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
|
+
# Screen patterns
|
|
5
|
+
|
|
6
|
+
## Contents
|
|
7
|
+
|
|
8
|
+
- Input screen
|
|
9
|
+
- Status screen
|
|
10
|
+
- Error state
|
|
11
|
+
- A complete example
|
|
12
|
+
- What a screen pattern is not
|
|
13
|
+
|
|
14
|
+
Three screen shapes recur in almost every model. Decide which one a screen is before declaring
|
|
15
|
+
its `data` and `action` lines; the shape tells you which read model and which command it needs.
|
|
16
|
+
Adapted from Martin Dilger and Nebulit GmbH's storyboarding patterns (see `provenance.md`),
|
|
17
|
+
translated to `screen`, `data`, `action` and `specification`.
|
|
18
|
+
|
|
19
|
+
## Input screen
|
|
20
|
+
|
|
21
|
+
The person fills in a form, submits, and a fact is recorded.
|
|
22
|
+
|
|
23
|
+
- The form fields are the command's inputs; a field the person should not supply (their own
|
|
24
|
+
identity, the tenant) comes from context, not the form (`cratis-screenplay-command-surface`
|
|
25
|
+
`references/context.md`).
|
|
26
|
+
- The submit is `action <Command>` on the screen. The screen needs no read model when it is a
|
|
27
|
+
blank creation form; when it shows current state before the person acts (the berth's
|
|
28
|
+
availability, the amount still owed), it also needs `data <ReadModel> via query <Query>`.
|
|
29
|
+
- After success the person lands somewhere meaningful: `navigate to <Screen>` on the action, or the
|
|
30
|
+
list that now contains the new item. Where the person goes next is part of the story, so name it.
|
|
31
|
+
|
|
32
|
+
## Status screen
|
|
33
|
+
|
|
34
|
+
The person looks at where something stands and decides what to do next.
|
|
35
|
+
|
|
36
|
+
- `data <ReadModel> via query <Query> [by <param>]` supplies the current state, built from the
|
|
37
|
+
events so far. Every field shown has a source in that read model.
|
|
38
|
+
- The available actions depend on state. A static `action` line is always offered; an action that
|
|
39
|
+
must differ by state is a guarded action (`references/guarded-actions.md`), never prose.
|
|
40
|
+
- A status screen with no incoming view is a gap; only a blank creation form is exempt.
|
|
41
|
+
|
|
42
|
+
## Error state
|
|
43
|
+
|
|
44
|
+
The person acts and the command is refused: no event is recorded, a message is shown, and the
|
|
45
|
+
person can retry or choose another action.
|
|
46
|
+
|
|
47
|
+
- The refusal is not drawn on the screen. It is behavior, pinned by a `specification` with
|
|
48
|
+
`then error` (a rule) or `then denied` (a gate), and by the command's `validate` and `require`
|
|
49
|
+
messages, which are the text the person sees.
|
|
50
|
+
- Name the way out. After a refusal the person can correct the input and submit again, or take a
|
|
51
|
+
different action on the same screen. If neither is possible, the slice has a dead end; record
|
|
52
|
+
it as an open question.
|
|
53
|
+
- Do not add a screen per error. One screen with its refusal specifications covers the states.
|
|
54
|
+
|
|
55
|
+
## A complete example
|
|
56
|
+
|
|
57
|
+
A berth booking form that shows availability (input screen over a view), a booking list that
|
|
58
|
+
shows state (status screen), and the refusal pinned by a specification (error state).
|
|
59
|
+
|
|
60
|
+
```screenplay
|
|
61
|
+
domain Harbourlight.Berths
|
|
62
|
+
|
|
63
|
+
concept BookingId : Uuid
|
|
64
|
+
concept BerthName : String
|
|
65
|
+
validate
|
|
66
|
+
not empty message "A berth needs a name"
|
|
67
|
+
|
|
68
|
+
policy IsAuthenticated
|
|
69
|
+
require authenticated
|
|
70
|
+
|
|
71
|
+
module Berths
|
|
72
|
+
description "Berth bookings for one marina"
|
|
73
|
+
authorize IsAuthenticated
|
|
74
|
+
feature Bookings
|
|
75
|
+
slice StateChange BookBerth
|
|
76
|
+
description "A skipper books a berth"
|
|
77
|
+
command BookBerth
|
|
78
|
+
bookingId BookingId identifier
|
|
79
|
+
berth BerthName
|
|
80
|
+
produces BerthBooked
|
|
81
|
+
for bookingId
|
|
82
|
+
berth = berth
|
|
83
|
+
event BerthBooked
|
|
84
|
+
berth BerthName
|
|
85
|
+
screen BookBerthScreen
|
|
86
|
+
title "Book a berth"
|
|
87
|
+
action BookBerth
|
|
88
|
+
navigate to OpenBookingsScreen
|
|
89
|
+
specification BookingABerth
|
|
90
|
+
given caller
|
|
91
|
+
authenticated
|
|
92
|
+
when BookBerth
|
|
93
|
+
bookingId = "3b0c7a14-5d2e-4f61-8a9b-0c1d2e3f4a01"
|
|
94
|
+
berth = "Pier 2, berth 14"
|
|
95
|
+
then BerthBooked
|
|
96
|
+
for "3b0c7a14-5d2e-4f61-8a9b-0c1d2e3f4a01"
|
|
97
|
+
berth = "Pier 2, berth 14"
|
|
98
|
+
specification BookingWithoutABerthNameIsRefused
|
|
99
|
+
given caller
|
|
100
|
+
authenticated
|
|
101
|
+
when BookBerth
|
|
102
|
+
bookingId = "3b0c7a14-5d2e-4f61-8a9b-0c1d2e3f4a02"
|
|
103
|
+
berth = ""
|
|
104
|
+
then error "A berth needs a name"
|
|
105
|
+
|
|
106
|
+
slice StateView OpenBookings
|
|
107
|
+
description "The harbour office lists the bookings that hold a berth"
|
|
108
|
+
readmodel OpenBooking
|
|
109
|
+
bookingId BookingId
|
|
110
|
+
berth BerthName
|
|
111
|
+
query ListOpenBookings => OpenBooking[]
|
|
112
|
+
projection OpenBookings => OpenBooking
|
|
113
|
+
from BerthBooked
|
|
114
|
+
bookingId = $eventSourceId
|
|
115
|
+
berth = berth
|
|
116
|
+
screen OpenBookingsScreen
|
|
117
|
+
title "Open bookings"
|
|
118
|
+
data OpenBooking[] via query ListOpenBookings
|
|
119
|
+
action BookBerth
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## What a screen pattern is not
|
|
123
|
+
|
|
124
|
+
- Not a column or a lane: a screen is a declaration in a slice, not a position on a timeline.
|
|
125
|
+
One screen per step is not a rule; a screen hosts every action the person can reasonably take
|
|
126
|
+
there, and an action may be reachable from several screens.
|
|
127
|
+
- Not a mockup: a drawn page is never evidence for the model, and a Level 1 screen is a data and
|
|
128
|
+
action contract that a renderer or a person fills in (`cratis-screenplay-ui-composition`).
|
|
129
|
+
- Not mandatory to render: a screen that stays design-only is still a contract for lineage and
|
|
130
|
+
review.
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
{ "kind": "skill-contains", "value": "The tenant is the default and stays unstated" },
|
|
17
17
|
{ "kind": "skill-contains", "value": "belongs on a `from` parameter, never on a `filter`" },
|
|
18
18
|
{ "kind": "skill-contains", "value": "warnings, not errors" },
|
|
19
|
-
{ "kind": "skill-contains", "value": "the executable model
|
|
19
|
+
{ "kind": "skill-contains", "value": "the executable model binds `observable` queries" },
|
|
20
20
|
{ "kind": "skill-contains", "value": "A compiling query is not evidence that access control works" },
|
|
21
21
|
{ "kind": "skill-contains", "value": "decision 0010 but **not in the language yet**" }
|
|
22
22
|
]
|
|
@@ -5,5 +5,5 @@ Third-party notices
|
|
|
5
5
|
|
|
6
6
|
This skill adapts material from agentic-engineer by Martin Dilger and Nebulit GmbH
|
|
7
7
|
(https://github.com/Nebulit-GmbH/agentic-engineer, commit 07b0f30648d663cb588d7e2c7aa031af9dfc21f2;
|
|
8
|
-
https://nebulit.de), used with the
|
|
9
|
-
|
|
8
|
+
https://nebulit.de), used with the explicit consent of Martin Dilger and Nebulit GmbH. The adapted
|
|
9
|
+
material remains credited to Martin Dilger and Nebulit GmbH.
|
|
@@ -9,9 +9,10 @@ license: MIT
|
|
|
9
9
|
## Purpose
|
|
10
10
|
|
|
11
11
|
Act as a **capability probe and deterministic delivery verifier**, not as a code author.
|
|
12
|
-
`cratis render`
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
`cratis render` compiles and binds the whole model, then admits the selected scope (the whole
|
|
13
|
+
application, or `--scope` modules, features and slices): if any construct in that scope is outside
|
|
14
|
+
what Stage admits, that run publishes nothing. This skill finds out what renders, publishes it,
|
|
15
|
+
proves it builds and that its generated specifications pass, and reports everything else honestly.
|
|
15
16
|
Behaviour the renderer rejects is delivered by `slice-implementer` with the `.play` model as
|
|
16
17
|
the contract, never smuggled into `Customizations/`.
|
|
17
18
|
|
|
@@ -21,23 +22,24 @@ rule is in `cratis-screenplay-modeling-lifecycle` ("Decide the level first"); it
|
|
|
21
22
|
|
|
22
23
|
## Verified product sources
|
|
23
24
|
|
|
24
|
-
Version pins live once in `cratis-screenplay-toolchain` `references/versions.md
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
`
|
|
37
|
-
|
|
38
|
-
(
|
|
39
|
-
|
|
40
|
-
this skill links them and never
|
|
25
|
+
Version pins live once in `cratis-screenplay-toolchain` `references/versions.md`; read it before
|
|
26
|
+
selecting the compiler and renderer for delivery. Current pair: CLI 3.53.1 bundling Screenplay
|
|
27
|
+
4.137.0 and Stage 4.73.1 (the standalone compiler is newer, 4.139.0). Render options (`--scope`,
|
|
28
|
+
`--check`, `--package-set`) and exit codes were read at cli `v3.53.1` `Documentation/reference/screenplay.md`
|
|
29
|
+
and `cratis render --help`; admission at Stage `v4.73.1`. Stage's scaffold pins Arc 22.68.0 and
|
|
30
|
+
Chronicle 19.45.0, which are not the latest releases (`cratis-stage-rendering-and-sandbox`
|
|
31
|
+
`references/rendered-application.md`). Source reading is not a new render run.
|
|
32
|
+
|
|
33
|
+
Runs: the worked example (`references/worked-example.md`) was probed with cratis 3.53.1 (observed; the
|
|
34
|
+
3.28.2/3.28.3 runs are history). With public CLI 3.43.0 (Stage 4.52.0) the canonical `ScreenComposition`
|
|
35
|
+
corpus was rendered and published successfully, and an MCP-edited copy was rendered, run and checked in
|
|
36
|
+
the browser; the CLI 3.40.7 browser acceptance run passed 51 assertions (Cratis/Screenplay#605). The AI
|
|
37
|
+
repository's `screenplay-mcp-transcript.ts` harness proves the real stdio proposal/apply path against the
|
|
38
|
+
packaged CLI. Guarded Close actions (`STAGE-SCENE-ACTION-001`) and double-click interactions
|
|
39
|
+
(`STAGE-SCENE-INTERACTION-001`) are refused and recorded as unsupported, never emulated. UI-profile
|
|
40
|
+
rejection (`CLI-RENDER-007` to `-010`) and render-then-recover shipped in 3.41.0 (Cratis/cli#301). The
|
|
41
|
+
renderer facts are owned by `cratis-stage-rendering-and-sandbox`; this skill links them and never
|
|
42
|
+
restates the admission table.
|
|
41
43
|
|
|
42
44
|
## When to use / when not
|
|
43
45
|
|
|
@@ -64,30 +66,36 @@ assume an answer to 4, and record it as `blocked` for the user.
|
|
|
64
66
|
| Case | Situation | What happens |
|
|
65
67
|
| --- | --- | --- |
|
|
66
68
|
| **A. Admission failure** | the probe reports blocking diagnostics | nothing was rendered or published by this run. Report the codes; the user chooses the next step (see "Procedure" 3) |
|
|
67
|
-
| **B. Generated base plus authorized gap-fill** | an
|
|
69
|
+
| **B. Generated base plus authorized gap-fill** | an admitted render (whole, or a `--scope` of the admitted slices) exists and the user separately authorized hand-written scope, or a seam the model names needs an adapter | the generated output stays managed and untouched; hand-written code lives in `Customizations/` or a separate project (seam adapters by this skill, business gap-fill by `slice-implementer`), serves named model elements only, never claims render admission, and V5 is reported for the generated base **with its scope stated** |
|
|
68
70
|
| **C. Fully hand-written delivery** | the scope cannot render and no generated base is wanted | `slice-implementer` delivers it with the model as the contract (`references/gap-fill-handoff.md`); V5 is `not run: no render` |
|
|
69
71
|
|
|
70
|
-
Evolved events
|
|
72
|
+
Evolved events are gap-fill too: Stage still refuses (4.73.1) any evolved event and its dependent scope with `STAGE-ESM-026`, because it cannot render Chronicle event-type migrations yet (Stage#204). Events at their initial revision still render. Hand-write the evolved events and their migrations per `cratis-chronicle-event-type-migration`, with the model as the contract.
|
|
71
73
|
|
|
72
|
-
Generated command values and `returns` responses (ESM v7) bind and run in the reference runner on standalone
|
|
73
|
-
|
|
74
|
-
refused generated values and responses with `STAGE-ESM-028`/`STAGE-ESM-029` (`cratis-screenplay-toolchain`
|
|
75
|
-
`references/versions.md`). When target admission refuses these members, use case A or C: keep
|
|
74
|
+
Generated command values and `returns` responses (ESM v7) bind and run in the reference runner on the standalone
|
|
75
|
+
tool. Stage still refuses them with `STAGE-ESM-028`/`STAGE-ESM-029` (4.73.1). When target admission refuses these members, use case A or C: keep
|
|
76
76
|
the model, hand-write the command and its response with the model (and its fixtures and `then returns`
|
|
77
77
|
specifications) as the contract, and report V3 from the standalone tool and V5 as `not run: no render`.
|
|
78
78
|
|
|
79
|
-
Models with event sources, streams or command routes bind and reference-execute as ESM v8 on standalone
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
Models with event sources, streams or command routes bind and reference-execute as ESM v8 on the standalone
|
|
80
|
+
tool, so report V3 and V4 from that tool. The pinned CLI/Stage pair
|
|
81
|
+
(`cratis-screenplay-toolchain/references/versions.md`) reaches v8 route checks
|
|
82
|
+
and construct admission through v10. Public publication,
|
|
82
83
|
foreign events/event captures and v10 reaction identity/filters/production overrides
|
|
83
84
|
still receive typed refusals; reducer filters render. Keep refused scope as case A/C,
|
|
84
85
|
never infer target support from binding. Read Stage's `references/admission.md` and
|
|
85
86
|
toolchain `references/sources-and-streams.md`.
|
|
86
87
|
|
|
88
|
+
**Mixed reaction effects.** A reaction that both `produces` events and `invokes` commands is refused by
|
|
89
|
+
Stage (`STAGE-ESM-037`, Stage#207) although Arc 22.72.0 and later run one reactor returning events
|
|
90
|
+
and commands (events appended first as one batch, then commands in order, no cross-effect
|
|
91
|
+
transaction; a retry can repeat the events, so use `[OnceOnly]`/idempotent handling per
|
|
92
|
+
`cratis-chronicle-reactor`). Keep the modeled reaction whole and gap-fill it as that one reactor; never
|
|
93
|
+
split it or drop an effect to get a render. The scaffold pins Arc 22.68.0; whether a newer Arc
|
|
94
|
+
override in `Customizations/Dependencies.props` restores next to it is unverified, so prove it with a restore and build.
|
|
95
|
+
|
|
87
96
|
Two rules hold in every case: a customization never makes a rejected model renderable, and
|
|
88
|
-
a whole-application V5 is never claimed from a subset.
|
|
89
|
-
|
|
90
|
-
import-only root file.
|
|
97
|
+
a whole-application V5 is never claimed from a subset. `--scope` renders an admitted part (the whole
|
|
98
|
+
model still compiles and binds) and its V5 states the scope.
|
|
91
99
|
|
|
92
100
|
## Procedure
|
|
93
101
|
|
|
@@ -96,17 +104,21 @@ import-only root file.
|
|
|
96
104
|
`references/verdicts-and-modes.md` "Source identity"), the model root, `--name`,
|
|
97
105
|
`--project-name`, `--root-namespace` and target `cratis`. Take V1 and V3 from
|
|
98
106
|
`cratis-screenplay-toolchain`; report each with tool and version. V3 from a different
|
|
99
|
-
compiler version does not prove the cratis-bundled binder admits the model (
|
|
100
|
-
4.
|
|
107
|
+
compiler version does not prove the cratis-bundled binder admits the model (the bundle is
|
|
108
|
+
4.137.0, the standalone tool 4.139.0). `cratis screenplay validate --executable <root>` binds with
|
|
109
|
+
the bundled compiler and writes nothing: use it as the bundled-binder check (toolchain `references/verdicts.md`).
|
|
101
110
|
2. **Probe.** `cratis render <model-root> --name <App> --destination <probe-dir> -o json`
|
|
102
|
-
(exit 0 published, 5 refused with nothing published, 1 missing input)
|
|
111
|
+
(exit 0 published, 5 refused with nothing published, 1 missing input); add `--check` to plan
|
|
112
|
+
against the destination without writing (exit 6 changes pending) and `--scope <Module.Feature.Slice>`
|
|
113
|
+
(repeatable) to render an admitted part. Classify every
|
|
103
114
|
diagnostic with `references/renderability-gate.md`: model fix in the chosen mode,
|
|
104
115
|
capability gap, tool skew or environment. Group by code and count; do not paste the list.
|
|
105
116
|
3. **When admission fails** (case A) present the options, the user decides:
|
|
106
117
|
(a) keep design mode and record the gaps; (b) narrow to renderable mode, where the modeler
|
|
107
118
|
changes the model for business reasons and **without** removing protection (`pii`,
|
|
108
119
|
authorization, rules); (c) deliver the non-renderable scope by hand (case C), with a ledger
|
|
109
|
-
entry (`references/drift-and-ledger.md`)
|
|
120
|
+
entry (`references/drift-and-ledger.md`); (d) render the admitted part with `--scope` and gap-fill the rest
|
|
121
|
+
(case B).
|
|
110
122
|
4. **Publish.** The probe destination by default. Another destination needs the user's intent;
|
|
111
123
|
`--force` needs approval naming its effect and destination (a request that already names them
|
|
112
124
|
counts). Read the receipt: written, unchanged, removed, `recovered`. `recovered: true` means
|
|
@@ -120,13 +132,13 @@ import-only root file.
|
|
|
120
132
|
the generated types the adapter touches (bounded), write the adapter behind a small interface
|
|
121
133
|
with no business decisions, rebuild, retest. Never edit a managed file; never add behaviour the
|
|
122
134
|
model does not state. Detail: `references/delivery-protocol.md` section 4.
|
|
123
|
-
7. **Report authored-UI parity.**
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
135
|
+
7. **Report authored-UI parity.** Require explicit plan/runtime evidence for each authored screen,
|
|
136
|
+
form, layout, template, toolbar, component, outlet, route, package/icon use, theme and persona view,
|
|
137
|
+
or a blocking diagnostic or "not rendered" with the responsible tool version; silent fallback to
|
|
138
|
+
default composition is a failure (Stage 4.24 rendered the default composition only).
|
|
139
|
+
8. **Drift:** `cratis render ... --check` (exit 6 pending); also compare the manifest's `semanticRevision`
|
|
140
|
+
with a fresh render under the same inputs. For hand-written scope, `cratis screenplay conform` gives
|
|
141
|
+
structural code-vs-model evidence (`references/drift-and-ledger.md`).
|
|
130
142
|
9. **Hand off** the packet: verdict lines, spec mapping, edit requests for the modeler, ledger
|
|
131
143
|
entries, UI omissions, learning candidates (at most 3).
|
|
132
144
|
|
|
@@ -140,8 +152,8 @@ Adapters and non-renderable scope follow the contract rules of `cratis-applicati
|
|
|
140
152
|
(`cratis-application-slice-conformance` `references/build-prompts.md`).
|
|
141
153
|
- One ledger scope per `slice-implementer` brief; the brief carries addresses and paths, not contents.
|
|
142
154
|
- Model-enforced rules realized in code (state-dependent rules) need a protected read or
|
|
143
|
-
concurrency scope; never claim them from prose.
|
|
144
|
-
Arc 22.
|
|
155
|
+
concurrency scope; never claim them from prose. Stage 4.73.1 rendered apps scaffold
|
|
156
|
+
Arc 22.68.0/Chronicle 19.45.0; API availability alone is not verified enforcement.
|
|
145
157
|
- Adapters that call outside systems follow `cratis-engineering-effect-boundaries`; slice
|
|
146
158
|
specifications follow `cratis-application-slice-specifications`.
|
|
147
159
|
- Realization notes are the explicit realization requirements stated in a slice `description` or `documentation`
|
|
@@ -155,8 +167,9 @@ Adapters and non-renderable scope follow the contract rules of `cratis-applicati
|
|
|
155
167
|
- This skill changes no model. Model fixes are edit requests (address, change, rationale) to the owning session.
|
|
156
168
|
- Code reading is bounded: `Customizations/*`, the file and line a build or test error names,
|
|
157
169
|
and the declared hooks. Never browse managed output, `bin/` or `obj/`.
|
|
158
|
-
- `description` and `documentation`
|
|
159
|
-
unenforced
|
|
170
|
+
- `description` and `documentation` reach rendered code only as XML documentation comments (Stage#178),
|
|
171
|
+
never as behavior. A rule stated only in prose is unenforced: ledger entry or target requirement,
|
|
172
|
+
never "delivered".
|
|
160
173
|
- The `cratis run` sandbox enforces neither validation nor authorization on its default engine; it
|
|
161
174
|
is no evidence for denial behaviour.
|
|
162
175
|
- Never remove `pii`, `secret`, authorization or rules to get a render through; report the gap.
|