@cratis/pi 7.56.2 → 7.57.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/harnesses/copilot/instructions/elixir.instructions.md +2 -2
- package/package/corpus/product-sync.json +11 -9
- package/package/corpus/rules/elixir.md +2 -2
- package/package/corpus/skills/cratis-arc-command/SKILL.md +1 -1
- package/package/corpus/skills/cratis-arc-command/references/command-result.md +29 -0
- package/package/corpus/skills/cratis-arc-command/references/fresh-identifiers.md +65 -5
- package/package/corpus/skills/cratis-chronicle-client-elixir/SKILL.md +64 -87
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/append-api.md +10 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/captures.md +43 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/client-options.md +6 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/connections.md +1 -1
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/constraints.md +63 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/decision-reads.md +65 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/discovery-and-generations.md +56 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/event-sources.md +1 -1
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/idioms-and-inspection.md +2 -2
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/observability.md +37 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/patterns.md +22 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/pitfalls.md +9 -1
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/projections.md +28 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/read-models.md +41 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/testing.md +63 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/upgrading.md +18 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/verification.json +17 -4
- package/package/corpus/skills/cratis-chronicle-decision-reads/SKILL.md +11 -0
- package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +2 -2
- package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/scenario-catalogue.md +1 -1
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +6 -5
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/behavior-walk.md +2 -2
- package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/sandbox-and-specrunner.md +34 -2
- package/package.json +1 -1
|
@@ -36,12 +36,12 @@ Two engines:
|
|
|
36
36
|
|
|
37
37
|
| Engine | Selected by | Behaviour |
|
|
38
38
|
| --- | --- | --- |
|
|
39
|
-
| EventModel (default) | nothing | Commands evaluate their modeled `produces` mappings, append the facts to Chronicle and echo the payload. **
|
|
39
|
+
| EventModel (default) | nothing | Commands evaluate their modeled `produces` mappings, append the facts to Chronicle and echo the payload. **Only part of modeled validation is enforced, and no authorization.** See [What the default engine enforces](#what-the-default-engine-enforces). It registers Chronicle projections. Named event sources, streams and routes are refused with `STAGE-ESM-030` (`/stage/status` reports `state: "unsupported"` and `/api/**` answers 501), so a routed model does not run here |
|
|
40
40
|
| Semantic | `Stage__Runtime__Engine=semantic` | Evaluates validation, requirements, authorization, conditional production and constraints before accepting a command; appends one batch; denied is HTTP 403, validation or constraint failure HTTP 400, an unsupported command HTTP 501. `GET /stage/semantic/admission` lists what is admitted. Executes routes and event-triggered reactions (including `where`, `runs as`, `from`, productions, invocations and cascades), settling them with the initiating command in one batch. Refuses a model it cannot execute (`state: "unsupported"`, `/api/**` returns 501). Read models are in-process, not Chronicle projections in the Workbench; the history is unbounded, so use it for short sessions |
|
|
41
41
|
|
|
42
42
|
Do not read an answering sandbox as evidence of correct authorization. Callers are
|
|
43
43
|
built from unsigned `x-ms-client-principal` headers that anyone who can reach the host can
|
|
44
|
-
forge, the default engine enforces
|
|
44
|
+
forge, the default engine enforces no authorization, and the session should stay private (loopback
|
|
45
45
|
ports or an authenticated proxy). Rendered applications use the renderer's admitted Arc
|
|
46
46
|
authorization instead, which is the thing to test for production behavior (Debug tests
|
|
47
47
|
of a render, [render-example.md](render-example.md)).
|
|
@@ -61,6 +61,38 @@ launch failure, nonzero exit or invalid report is 502. The timeout defaults to 1
|
|
|
61
61
|
(1–600, including queue); specifications stay available after a later world-rebuild or
|
|
62
62
|
registration failure if the model was admitted.
|
|
63
63
|
|
|
64
|
+
### What the default engine enforces
|
|
65
|
+
|
|
66
|
+
When a command that declares at least one `produces` executes, the default engine
|
|
67
|
+
refuses it with a validation result naming the property, and appends nothing, if:
|
|
68
|
+
|
|
69
|
+
- a property the command's schema requires is missing or `null`;
|
|
70
|
+
- a top-level property breaks a declarative `validate` rule with a literal operand:
|
|
71
|
+
`not empty`, `matches "<regex>"`, `length == <n>`, `min <n>` or `max <n>` on text, or
|
|
72
|
+
`>`, `>=`, `<`, `<=` on a number.
|
|
73
|
+
|
|
74
|
+
Some rules are checked with the wrong meaning:
|
|
75
|
+
|
|
76
|
+
- `min` and `max` on a number are checked as the length of the number's text, so
|
|
77
|
+
`quantity min 1` accepts `0` and `quantity min 2` refuses `9`;
|
|
78
|
+
- `not empty` on a nested property (`address.name`) refuses every payload, including a
|
|
79
|
+
valid one, because the dotted path is looked up as a top-level key; other rules on
|
|
80
|
+
nested properties are skipped.
|
|
81
|
+
|
|
82
|
+
Everything else passes unchecked:
|
|
83
|
+
|
|
84
|
+
- `all >` and `all >=` over element paths;
|
|
85
|
+
- `==` and `!=`, `matches email`, `rule <Name>`, and any rule whose operand is another
|
|
86
|
+
property or a value resolved at run time, such as `today`;
|
|
87
|
+
- concept rules, `require` over read models, and uniqueness constraints;
|
|
88
|
+
- command `authorize` and query `authorize`;
|
|
89
|
+
- every check on a command without `produces`, and the `/validate` route, which runs none
|
|
90
|
+
of these checks.
|
|
91
|
+
|
|
92
|
+
A refusal or an acceptance from the default engine therefore proves nothing beyond the
|
|
93
|
+
lists above. Use the semantic engine, or Debug tests of a render, for
|
|
94
|
+
evidence about the rest.
|
|
95
|
+
|
|
64
96
|
## Refusals shared by both engines
|
|
65
97
|
|
|
66
98
|
Both engines refuse public events (`STAGE-ESM-032`), foreign or source-event captures
|