@cratis/pi 7.112.0 → 7.114.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/application-profile.instructions.md +1 -1
- package/package/corpus/harnesses/copilot/instructions/orleans.instructions.md +10 -2
- package/package/corpus/harnesses/copilot/instructions/pull-requests.instructions.md +7 -0
- package/package/corpus/harnesses/copilot/instructions/specs.csharp.instructions.md +4 -4
- package/package/corpus/harnesses/copilot/instructions/vertical-slices.instructions.md +1 -1
- package/package/corpus/hooks/scripts/cratis-store-mutations.json +4 -0
- package/package/corpus/product-sync.json +88 -88
- package/package/corpus/rules/application-profile.md +1 -1
- package/package/corpus/rules/orleans.md +10 -2
- package/package/corpus/rules/pull-requests.md +7 -0
- package/package/corpus/rules/specs.csharp.md +4 -4
- package/package/corpus/rules/vertical-slices.md +1 -1
- package/package/corpus/skills/cratis-application-slice-specifications/references/query-and-decision-scenarios.md +19 -0
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/SKILL.md +8 -0
- package/package/corpus/skills/cratis-arc-authentication-authorization-and-identity/references/authproxy.md +26 -0
- package/package/corpus/skills/cratis-arc-command/references/proxy-generation.md +10 -1
- package/package/corpus/skills/cratis-arc-command-execution/SKILL.md +3 -2
- package/package/corpus/skills/cratis-arc-command-execution/references/occurrence-commands.md +7 -6
- package/package/corpus/skills/cratis-arc-command-validation/SKILL.md +5 -0
- package/package/corpus/skills/cratis-arc-command-validation/references/input-binding.md +17 -0
- package/package/corpus/skills/cratis-arc-command-validation/references/protected-validator-construction.md +94 -0
- package/package/corpus/skills/cratis-arc-ef-core-migration/SKILL.md +18 -0
- package/package/corpus/skills/cratis-arc-query-paging/SKILL.md +11 -4
- package/package/corpus/skills/cratis-arc-query-paging/references/live-query-processing.md +71 -0
- package/package/corpus/skills/cratis-arc-react-page/SKILL.md +11 -0
- package/package/corpus/skills/cratis-arc-validation-kotlin/SKILL.md +20 -3
- package/package/corpus/skills/cratis-chronicle-cli-operations/SKILL.md +11 -2
- package/package/corpus/skills/cratis-chronicle-cli-operations/references/command-effects.md +7 -0
- package/package/corpus/skills/cratis-chronicle-cli-operations/references/project-tooling.md +91 -0
- package/package/corpus/skills/cratis-chronicle-cli-operations/references/recovery-and-comparison.md +68 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/SKILL.md +12 -0
- package/package/corpus/skills/cratis-chronicle-client-elixir/references/decision-reads.md +10 -0
- package/package/corpus/skills/cratis-chronicle-client-go/SKILL.md +12 -2
- package/package/corpus/skills/cratis-chronicle-client-kotlin/SKILL.md +4 -0
- package/package/corpus/skills/cratis-chronicle-client-kotlin/references/annotations-and-handlers.md +6 -1
- package/package/corpus/skills/cratis-chronicle-client-kotlin/references/fundamentals-migration.md +48 -0
- package/package/corpus/skills/cratis-chronicle-client-typescript/SKILL.md +18 -0
- package/package/corpus/skills/cratis-chronicle-client-typescript/references/lifecycle.md +7 -0
- package/package/corpus/skills/cratis-chronicle-read-model/references/queries.md +5 -3
- package/package/corpus/skills/cratis-cli-terminal-workbench/SKILL.md +5 -1
- package/package/corpus/skills/cratis-components-common-controls/SKILL.md +11 -0
- package/package/corpus/skills/cratis-components-data-surfaces/SKILL.md +5 -0
- package/package/corpus/skills/cratis-components-data-surfaces/references/query-table-updates.md +51 -0
- package/package/corpus/skills/cratis-components-schema-editor/references/tree-layout.md +18 -0
- package/package/corpus/skills/cratis-components-stepper-command-dialog/SKILL.md +11 -0
- package/package/corpus/skills/cratis-fundamentals-type-discovery/SKILL.md +13 -0
- package/package/corpus/skills/cratis-orleans-jobs/SKILL.md +39 -51
- package/package/corpus/skills/cratis-orleans-jobs/references/lifecycle-and-placement.md +52 -0
- package/package/corpus/skills/cratis-orleans-jobs/references/state-machines.md +3 -1
- package/package/corpus/skills/cratis-release-notes/SKILL.md +23 -0
- package/package/corpus/skills/cratis-screenplay-command-surface/references/protected-reads.md +3 -2
- package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/prologue-safety.md +14 -0
- package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
- package/package/corpus/skills/cratis-specifications-csharp/SKILL.md +14 -2
- package/package/corpus/skills/cratis-specifications-csharp/references/running-specs.md +8 -1
- package/package/corpus/skills/cratis-specifications-csharp/references/shared-lifecycle.md +19 -2
- package/package.json +1 -1
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
}
|
|
64
64
|
],
|
|
65
65
|
"synced": {
|
|
66
|
-
"version": "22.
|
|
67
|
-
"date": "2026-10-
|
|
68
|
-
"by": "Cratis/AI#
|
|
66
|
+
"version": "22.139.0",
|
|
67
|
+
"date": "2026-10-25",
|
|
68
|
+
"by": "Cratis/AI#820"
|
|
69
69
|
},
|
|
70
70
|
"covers": {
|
|
71
71
|
"skills": [
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"vertical-slices.md"
|
|
100
100
|
]
|
|
101
101
|
},
|
|
102
|
-
"notes": "Reviewed releases 22.
|
|
102
|
+
"notes": "Reviewed all 53 releases 22.117.1-22.139.0 at tagged sources. Corrected public-only query discovery, single observations, pre-transport occurrence append refusal, assignable pipeline responses, concept binding/annotations, protected validator construction and key metadata; added live query/calendar, upsert, scenario, authentication and proxy-generation guidance. Existing response validation, React lifetimes, tenant routing and storage resolution guidance retained after reviewing fixes; internal/dependency changes need no extra consumer action. Screenplay/Scene/Stage deltas belong to their owning lanes. No live runtime probe; prior floor established in Cratis/AI#773."
|
|
103
103
|
},
|
|
104
104
|
{
|
|
105
105
|
"id": "ai",
|
|
@@ -125,9 +125,9 @@
|
|
|
125
125
|
}
|
|
126
126
|
],
|
|
127
127
|
"synced": {
|
|
128
|
-
"version": "3.
|
|
129
|
-
"date": "2026-10-
|
|
130
|
-
"by": "Cratis/AI#
|
|
128
|
+
"version": "3.100.0",
|
|
129
|
+
"date": "2026-10-25",
|
|
130
|
+
"by": "Cratis/AI#820"
|
|
131
131
|
},
|
|
132
132
|
"covers": {
|
|
133
133
|
"skills": [
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
],
|
|
159
159
|
"rules": []
|
|
160
160
|
},
|
|
161
|
-
"notes": "
|
|
161
|
+
"notes": "Reviewed all 35 releases 3.76.0-3.100.0 at tagged sources: refusal-aware job actions, observer-wide retry, exact manual stream repair, retained-job deletion, bounded namespace metadata comparison, release notes/cached templates, Pi adapters/profile MCP and isolated AI conformance/install-only checks. Updated CLI operations and terminal Workbench guidance. Multi-service context/orchestration unchanged. Reviewed bundled render/run changes through Stage 4.196.0 and Screenplay 4.240.2, ESM v29/v30 admission, reducer migration, executable target validation, model-root resolution and sample packs; Screenplay/Stage/Prologue skill edits reserved for their owning lanes. No live store, render, harness or browser probe. Prior floor established in Cratis/AI#752."
|
|
162
162
|
},
|
|
163
163
|
{
|
|
164
164
|
"id": "screenplay",
|
|
@@ -171,9 +171,9 @@
|
|
|
171
171
|
}
|
|
172
172
|
],
|
|
173
173
|
"synced": {
|
|
174
|
-
"version": "4.
|
|
175
|
-
"date": "2026-10-
|
|
176
|
-
"by": "Cratis/AI#
|
|
174
|
+
"version": "4.245.0",
|
|
175
|
+
"date": "2026-10-25",
|
|
176
|
+
"by": "Cratis/AI#820"
|
|
177
177
|
},
|
|
178
178
|
"covers": {
|
|
179
179
|
"skills": [
|
|
@@ -201,7 +201,7 @@
|
|
|
201
201
|
],
|
|
202
202
|
"rules": []
|
|
203
203
|
},
|
|
204
|
-
"notes": "Cratis/AI#779: reference-runner capability refusals taught as scoped per specification (introduced in v4.213.2, Cratis/Screenplay#897) from the v4.216.0 tool and MCP documentation and plan source: an unadmitted projection (UnsupportedEventContext, UnsupportedProjectionBlock) marks unsupported only the specifications that reach it or its read model, the others run and planIssues lists deferred issues; application-level issues still block every selected specification; no new render/runtime probe. Prior: Cratis/AI#776: PLAY0802 ReservedStoredName (introduced in v4.213.3, Cratis/Screenplay#893) taught from the v4.216.0 compilers and documentation: stored event source `Default` and stored event stream `All` (ordinal, name or `id` pin) refused at authoring time, a pin away from the reserved name valid, PLAY0273 kept as the binding backstop; no new render/runtime probe. Prior: Cratis/AI#784: standalone Screenplay 4.216.0 pinned; compiler contract replaced by the v4.216.0 release asset (adds the propose-repair destinationIntent v1 schema and PLAY0802 ReservedStoredName). Source-checked decision 0096 and the MCP reference for the explicit author-intent PLAY0470 repair: repair-intents discovery, intentActions feature detection, complete per-production selections, retained production-destination report and identity views, explicit apply and refusals. No new render/runtime probe. Prior: Cratis/AI#771: standalone Screenplay 4.213.0 pinned; regenerated compiler contract is byte-identical to the v4.213.0 release asset and unchanged from 4.212.4. Reviewed the full v4.212.4-v4.213.0 delta against tagged decision 0093 and MCP reference: pre-binding container identities and stable binding/migration continuity, own-slice member substitutions, containerIdentities completeness/ambiguity/collision refusals, retained ambiguous notes, explicit semanticRenames/retirements, binding fixes through MCP, exact reopen exception, notes/identity rollback and exact-ID re-add anchoring. No grammar, binder, ESM or diagnostic-code changes; no new render/runtime probe. Prior: Cratis/AI#772: standalone Screenplay 4.212.4 pinned; regenerated compiler contract is byte-identical to the v4.212.4 release asset. Source-checked joined-event automap/no automap overrides and level fallback in executable binding; PLAY0380 covers only all inside children/nested. No new render/runtime probe. Prior: Cratis/AI#769: standalone Screenplay 4.212.3 pinned; regenerated compiler contract is byte-identical to the v4.212.3 release asset. Source-checked both compilers and projection documentation for PLAY0801 DuplicateEventInProjectionScope: shared from/removal/clear set, separate join set, fresh sets per children/nested/variant level, and no two-row update through repeated from blocks with different keys. No new render/runtime probe. Prior: Cratis/AI#768: standalone Screenplay 4.212.2 pinned; regenerated compiler contract is byte-identical to the v4.212.2 release asset (unchanged from the previous contract). Source-checked v4.212.0 split-model dotted note targets, open-workspace applicationIdentity and complete add/reanchor substitutions; unbound container identities are not claimed. v4.212.1 aligns PLAY0535 collection fields, optional parameters and single-result identity inference. v4.212.2 counts read-only query denials for SPEC004, not SPEC006. No new render/runtime probe. Prior: Cratis/AI#762 and #761: source-checked v4.210.0 and v4.211.0 contracts for PLAY0800 CommandHandlerRequiresAttachment (required typed subject, permanent code-attachment requirement, other PLAY0268 families unchanged), independent reference remove/add batches, located same-text ambiguity conflicts and string MCP conflict/move-report document fields. v4.211.1 mapping changes inspected but excluded from this guidance update at the user's request; no typed PLAY0273 property/type arguments are claimed. Standalone Screenplay 4.211.1 and its compiler contract pinned; the contract is a byte-identical copy of the v4.211.1 release asset. No new render/runtime probe. Prior: Standalone 4.205.0 and byte-identical compiler contract pinned. Cratis/AI#746: Uuid ==/!= in command require and produces when (ESM v28): same-concept rule, bare Uuid against a concept, canonical literals, protected read paths in require only; PLAY0268 (different concepts, ordering, Uuid validation and concept rules, read paths in produces when) and PLAY0273 (non-canonical literal) checked against the 4.205.0 compiler, v28 selection read from the MCP executable-model view; Stage admits exact v1-v21 and v23-v26 pairs so v28 is refused STAGE-ESM-016, not probed against a Stage image; CLI 3.74.0 renders through v26. Prior: Standalone 4.204.0 and byte-identical compiler contract pinned. Cratis/AI#702 and #691: PLAY0690 reducer identity (Screenplay 4.170.0, native compiler only) and the screenplay.json validation gate (Screenplay 4.165.0; cratis screenplay validate reads it from CLI 3.65.0) are taught and probed against the 4.204.0 compiler. Cratis/AI#743: flat composite read-model keys (ESM v27): untyped projection key blocks on root from and remove with, equality-filter lists, single-instance by blocks and per-part fixtures, with PLAY0661/PLAY0662/PLAY0268 refusals checked against the 4.204.0 compiler; Stage origin/main still refuses v27 with STAGE-ESM-016 (stage-rendering.md); Stage v4.135.0 v26 admission (Host and executor run date comparisons; renderer STAGE-ESM-046) was source-checked for this sync; no render or runtime probe. Prior: Standalone 4.201.0 and byte-identical compiler contract pinned. Cratis/AI#733: the ui profile root template, shell options, appearance and new screens default (PLAY0788-PLAY0799, quick fix for the legacy layout line, ui-profiles MCP tool, 44 tools). Cratis/AI#735: chronological Date/DateTime ordering in command conditions and command/property literal validation (ESM v26), UTC tick precision and pre-rule offset validation; then matching remains ordinal. Source-checked Screenplay v4.199.0 commands, diagnostics, interoperability and specifications documentation plus decision 0087. Stage v4.127.1 still refuses v26 with STAGE-ESM-016 (stage-rendering.md and SemanticVersionFeatures.Supports); no render/runtime probe. Cratis/AI#576: prior mechanical compiler catch-up. Language batch #717/#722/#723/#724/#720/#728/#734 teaches atomic reaction batches (v22), described payload handlers (v23), portable linear matching, ordinal text rules (v24), protected command reads (v25), diagnostic arguments and event-source invokes mappings. Facts read at Screenplay v4.198.0 and introducing tags; Stage v4.127.0 admits exact v1-v21 and v23-v25 pairs but refuses v22/v26 and mixed pairs (STAGE-ESM-016), protected reads (044), atomic mode (043) and described handlers (STAGE-IMPL-002), even Stub mode. Stage text rules execute/render; no new renderer/runtime probe or Stage pin uplift. Cratis/AI#706: application navigation regions (module inherit, extend or override), toolbar slice buttons, blueprint template references and sample data packs in cratis-screenplay-ui-composition (references/application-shell.md), with the canonical shell vector and the rejection codes PLAY0710-PLAY0722 and PLAY0740-PLAY0765. Examples moved to the executable-state rules since 4.164: translator reactions in an Automation slice beside the Translate slice (PLAY0694) and the first record of a capture key appended with `when added`. Earlier: Standalone 4.164.0 and byte-identical compiler contract pinned. Cratis/AI#663: one origin per capture (PLAY0687). #668: executable no-event/redelivery v17. #684: concept query-argument validation in every version and query-error assertions v18. #681: executable refusal branches and refusal values v19. #666: proposal summary/severity counts and exact structural source proposals. Generated-concept rules select v20 with PLAY0688/0689 proofs and derived-matches repair; generated secrets and preview strategies remain refused. Release-baseline from-esm admission reads storedName. Standalone binding is not renderer admission: Stage 4.103.0 admits v1-v17 and v19; CLI 3.62.0 bundles Screenplay 4.159.0 / Stage 4.99.0 and renders through v16. Prior evidence remains unless superseded; no new renderer, Docker or browser probe."
|
|
204
|
+
"notes": "Cratis/AI#820: reviewed v4.245.0 release; protected-read constraint precedence preserved. Review correction: removed unsupported parser-repair and inbound-public refusal release attributions and the incorrect PLAY0136 event-key claim, restoring prior teaching. Published contract asset is byte-identical to the previous snapshot; pin and compatibility entry advanced together. Prior: Cratis/AI#779: reference-runner capability refusals taught as scoped per specification (introduced in v4.213.2, Cratis/Screenplay#897) from the v4.216.0 tool and MCP documentation and plan source: an unadmitted projection (UnsupportedEventContext, UnsupportedProjectionBlock) marks unsupported only the specifications that reach it or its read model, the others run and planIssues lists deferred issues; application-level issues still block every selected specification; no new render/runtime probe. Prior: Cratis/AI#776: PLAY0802 ReservedStoredName (introduced in v4.213.3, Cratis/Screenplay#893) taught from the v4.216.0 compilers and documentation: stored event source `Default` and stored event stream `All` (ordinal, name or `id` pin) refused at authoring time, a pin away from the reserved name valid, PLAY0273 kept as the binding backstop; no new render/runtime probe. Prior: Cratis/AI#784: standalone Screenplay 4.216.0 pinned; compiler contract replaced by the v4.216.0 release asset (adds the propose-repair destinationIntent v1 schema and PLAY0802 ReservedStoredName). Source-checked decision 0096 and the MCP reference for the explicit author-intent PLAY0470 repair: repair-intents discovery, intentActions feature detection, complete per-production selections, retained production-destination report and identity views, explicit apply and refusals. No new render/runtime probe. Prior: Cratis/AI#771: standalone Screenplay 4.213.0 pinned; regenerated compiler contract is byte-identical to the v4.213.0 release asset and unchanged from 4.212.4. Reviewed the full v4.212.4-v4.213.0 delta against tagged decision 0093 and MCP reference: pre-binding container identities and stable binding/migration continuity, own-slice member substitutions, containerIdentities completeness/ambiguity/collision refusals, retained ambiguous notes, explicit semanticRenames/retirements, binding fixes through MCP, exact reopen exception, notes/identity rollback and exact-ID re-add anchoring. No grammar, binder, ESM or diagnostic-code changes; no new render/runtime probe. Prior: Cratis/AI#772: standalone Screenplay 4.212.4 pinned; regenerated compiler contract is byte-identical to the v4.212.4 release asset. Source-checked joined-event automap/no automap overrides and level fallback in executable binding; PLAY0380 covers only all inside children/nested. No new render/runtime probe. Prior: Cratis/AI#769: standalone Screenplay 4.212.3 pinned; regenerated compiler contract is byte-identical to the v4.212.3 release asset. Source-checked both compilers and projection documentation for PLAY0801 DuplicateEventInProjectionScope: shared from/removal/clear set, separate join set, fresh sets per children/nested/variant level, and no two-row update through repeated from blocks with different keys. No new render/runtime probe. Prior: Cratis/AI#768: standalone Screenplay 4.212.2 pinned; regenerated compiler contract is byte-identical to the v4.212.2 release asset (unchanged from the previous contract). Source-checked v4.212.0 split-model dotted note targets, open-workspace applicationIdentity and complete add/reanchor substitutions; unbound container identities are not claimed. v4.212.1 aligns PLAY0535 collection fields, optional parameters and single-result identity inference. v4.212.2 counts read-only query denials for SPEC004, not SPEC006. No new render/runtime probe. Prior: Cratis/AI#762 and #761: source-checked v4.210.0 and v4.211.0 contracts for PLAY0800 CommandHandlerRequiresAttachment (required typed subject, permanent code-attachment requirement, other PLAY0268 families unchanged), independent reference remove/add batches, located same-text ambiguity conflicts and string MCP conflict/move-report document fields. v4.211.1 mapping changes inspected but excluded from this guidance update at the user's request; no typed PLAY0273 property/type arguments are claimed. Standalone Screenplay 4.211.1 and its compiler contract pinned; the contract is a byte-identical copy of the v4.211.1 release asset. No new render/runtime probe. Prior: Standalone 4.205.0 and byte-identical compiler contract pinned. Cratis/AI#746: Uuid ==/!= in command require and produces when (ESM v28): same-concept rule, bare Uuid against a concept, canonical literals, protected read paths in require only; PLAY0268 (different concepts, ordering, Uuid validation and concept rules, read paths in produces when) and PLAY0273 (non-canonical literal) checked against the 4.205.0 compiler, v28 selection read from the MCP executable-model view; Stage admits exact v1-v21 and v23-v26 pairs so v28 is refused STAGE-ESM-016, not probed against a Stage image; CLI 3.74.0 renders through v26. Prior: Standalone 4.204.0 and byte-identical compiler contract pinned. Cratis/AI#702 and #691: PLAY0690 reducer identity (Screenplay 4.170.0, native compiler only) and the screenplay.json validation gate (Screenplay 4.165.0; cratis screenplay validate reads it from CLI 3.65.0) are taught and probed against the 4.204.0 compiler. Cratis/AI#743: flat composite read-model keys (ESM v27): untyped projection key blocks on root from and remove with, equality-filter lists, single-instance by blocks and per-part fixtures, with PLAY0661/PLAY0662/PLAY0268 refusals checked against the 4.204.0 compiler; Stage origin/main still refuses v27 with STAGE-ESM-016 (stage-rendering.md); Stage v4.135.0 v26 admission (Host and executor run date comparisons; renderer STAGE-ESM-046) was source-checked for this sync; no render or runtime probe. Prior: Standalone 4.201.0 and byte-identical compiler contract pinned. Cratis/AI#733: the ui profile root template, shell options, appearance and new screens default (PLAY0788-PLAY0799, quick fix for the legacy layout line, ui-profiles MCP tool, 44 tools). Cratis/AI#735: chronological Date/DateTime ordering in command conditions and command/property literal validation (ESM v26), UTC tick precision and pre-rule offset validation; then matching remains ordinal. Source-checked Screenplay v4.199.0 commands, diagnostics, interoperability and specifications documentation plus decision 0087. Stage v4.127.1 still refuses v26 with STAGE-ESM-016 (stage-rendering.md and SemanticVersionFeatures.Supports); no render/runtime probe. Cratis/AI#576: prior mechanical compiler catch-up. Language batch #717/#722/#723/#724/#720/#728/#734 teaches atomic reaction batches (v22), described payload handlers (v23), portable linear matching, ordinal text rules (v24), protected command reads (v25), diagnostic arguments and event-source invokes mappings. Facts read at Screenplay v4.198.0 and introducing tags; Stage v4.127.0 admits exact v1-v21 and v23-v25 pairs but refuses v22/v26 and mixed pairs (STAGE-ESM-016), protected reads (044), atomic mode (043) and described handlers (STAGE-IMPL-002), even Stub mode. Stage text rules execute/render; no new renderer/runtime probe or Stage pin uplift. Cratis/AI#706: application navigation regions (module inherit, extend or override), toolbar slice buttons, blueprint template references and sample data packs in cratis-screenplay-ui-composition (references/application-shell.md), with the canonical shell vector and the rejection codes PLAY0710-PLAY0722 and PLAY0740-PLAY0765. Examples moved to the executable-state rules since 4.164: translator reactions in an Automation slice beside the Translate slice (PLAY0694) and the first record of a capture key appended with `when added`. Earlier: Standalone 4.164.0 and byte-identical compiler contract pinned. Cratis/AI#663: one origin per capture (PLAY0687). #668: executable no-event/redelivery v17. #684: concept query-argument validation in every version and query-error assertions v18. #681: executable refusal branches and refusal values v19. #666: proposal summary/severity counts and exact structural source proposals. Generated-concept rules select v20 with PLAY0688/0689 proofs and derived-matches repair; generated secrets and preview strategies remain refused. Release-baseline from-esm admission reads storedName. Standalone binding is not renderer admission: Stage 4.103.0 admits v1-v17 and v19; CLI 3.62.0 bundles Screenplay 4.159.0 / Stage 4.99.0 and renders through v16. Prior evidence remains unless superseded; no new renderer, Docker or browser probe."
|
|
205
205
|
},
|
|
206
206
|
{
|
|
207
207
|
"id": "scene",
|
|
@@ -229,9 +229,9 @@
|
|
|
229
229
|
"repository": "Cratis/Orleans",
|
|
230
230
|
"packages": [],
|
|
231
231
|
"synced": {
|
|
232
|
-
"version": "1.
|
|
233
|
-
"date": "2026-10-
|
|
234
|
-
"by": "Cratis/AI#
|
|
232
|
+
"version": "1.30.0",
|
|
233
|
+
"date": "2026-10-25",
|
|
234
|
+
"by": "Cratis/AI#820"
|
|
235
235
|
},
|
|
236
236
|
"covers": {
|
|
237
237
|
"skills": [
|
|
@@ -243,7 +243,7 @@
|
|
|
243
243
|
]
|
|
244
244
|
},
|
|
245
245
|
"coverage": "tracked",
|
|
246
|
-
"notes": "
|
|
246
|
+
"notes": "Reviewed all 33 releases 1.17.0-1.30.0 at tagged sources: local IJobs and recovery keys, activation-safe callbacks and drain/admission, bounded retries/test runs, durable plans and initialization hooks, finalized-stop/outcome storage and independent placement/metadata throttle; corrected jobs and Orleans hosting guidance. Internal fixes require no extra consumer action; no live silo probe. Prior floor established in Cratis/AI#620."
|
|
247
247
|
},
|
|
248
248
|
{
|
|
249
249
|
"id": "keldakraft",
|
|
@@ -331,9 +331,9 @@
|
|
|
331
331
|
"repository": "Cratis/Arc.Go",
|
|
332
332
|
"packages": [],
|
|
333
333
|
"synced": {
|
|
334
|
-
"version": "0.1.
|
|
335
|
-
"date": "2026-10-
|
|
336
|
-
"by": "Cratis/AI#
|
|
334
|
+
"version": "0.1.2",
|
|
335
|
+
"date": "2026-10-25",
|
|
336
|
+
"by": "Cratis/AI#820"
|
|
337
337
|
},
|
|
338
338
|
"covers": {
|
|
339
339
|
"skills": [
|
|
@@ -345,7 +345,7 @@
|
|
|
345
345
|
]
|
|
346
346
|
},
|
|
347
347
|
"coverage": "tracked",
|
|
348
|
-
"notes": "
|
|
348
|
+
"notes": "Cratis/AI#820: reviewed v0.1.2 release. Snapshot HEAD handling no longer enumerates bodies; existing root-module guidance promises no HEAD conformance and teaches no body enumeration on HEAD. No teaching update needed; packaging/runtime fix only, no new Go execution evidence."
|
|
349
349
|
},
|
|
350
350
|
{
|
|
351
351
|
"id": "templates",
|
|
@@ -353,9 +353,9 @@
|
|
|
353
353
|
"repository": "Cratis/Templates",
|
|
354
354
|
"packages": [],
|
|
355
355
|
"synced": {
|
|
356
|
-
"version": "1.
|
|
357
|
-
"date": "2026-10-
|
|
358
|
-
"by": "Cratis/AI#
|
|
356
|
+
"version": "1.8.1",
|
|
357
|
+
"date": "2026-10-25",
|
|
358
|
+
"by": "Cratis/AI#820"
|
|
359
359
|
},
|
|
360
360
|
"covers": {
|
|
361
361
|
"skills": [],
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
]
|
|
365
365
|
},
|
|
366
366
|
"coverage": "tracked",
|
|
367
|
-
"notes": "
|
|
367
|
+
"notes": "Cratis/AI#820: reviewed v1.8.0-v1.8.1. Tagged Cratis and CratisAspire app csproj sources enable CratisReadProtection On; application-profile now distinguishes new scaffolds from existing apps. 1.8.1 package metadata has no teaching impact. No scaffold execution claimed."
|
|
368
368
|
},
|
|
369
369
|
{
|
|
370
370
|
"id": "fundamentals",
|
|
@@ -381,9 +381,9 @@
|
|
|
381
381
|
}
|
|
382
382
|
],
|
|
383
383
|
"synced": {
|
|
384
|
-
"version": "7.
|
|
385
|
-
"date": "2026-10-
|
|
386
|
-
"by": "Cratis/AI#
|
|
384
|
+
"version": "7.26.1",
|
|
385
|
+
"date": "2026-10-25",
|
|
386
|
+
"by": "Cratis/AI#820"
|
|
387
387
|
},
|
|
388
388
|
"covers": {
|
|
389
389
|
"skills": [
|
|
@@ -399,7 +399,7 @@
|
|
|
399
399
|
"concepts.md"
|
|
400
400
|
]
|
|
401
401
|
},
|
|
402
|
-
"notes": "Source-checked v7.25.0: IGeneratable/IGeneratableInContext, GenerationContext, UUID/ULID/TypeID/NanoID/bytes and finite GenerateValue.Pattern overloads with optional Checksum, inclusive Int64 Integer, and HasValidChecksum. Pattern date segments use captured UTC time; check digits add no entropy or authorization and do not automatically add validation. No Stage version uplift or generated-secret admission is implied."
|
|
402
|
+
"notes": "Cratis/AI#820: reviewed v7.25.1-v7.26.1, all four releases. Tagged DerivedTypes.For(ITypes) weak per-universe caching and generator build fixes taught in type-discovery; logo and test-package packing are metadata-only. No runtime probe. Prior: Source-checked v7.25.0: IGeneratable/IGeneratableInContext, GenerationContext, UUID/ULID/TypeID/NanoID/bytes and finite GenerateValue.Pattern overloads with optional Checksum, inclusive Int64 Integer, and HasValidChecksum. Pattern date segments use captured UTC time; check digits add no entropy or authorization and do not automatically add validation. No Stage version uplift or generated-secret admission is implied."
|
|
403
403
|
},
|
|
404
404
|
{
|
|
405
405
|
"id": "components",
|
|
@@ -412,9 +412,9 @@
|
|
|
412
412
|
}
|
|
413
413
|
],
|
|
414
414
|
"synced": {
|
|
415
|
-
"version": "4.
|
|
416
|
-
"date": "2026-10-
|
|
417
|
-
"by": "Cratis/AI#
|
|
415
|
+
"version": "4.38.0",
|
|
416
|
+
"date": "2026-10-25",
|
|
417
|
+
"by": "Cratis/AI#820"
|
|
418
418
|
},
|
|
419
419
|
"covers": {
|
|
420
420
|
"skills": [
|
|
@@ -432,7 +432,7 @@
|
|
|
432
432
|
"components.md"
|
|
433
433
|
]
|
|
434
434
|
},
|
|
435
|
-
"notes": "
|
|
435
|
+
"notes": "Cratis/AI#820: reviewed all 15 stable releases v4.27.0-v4.38.0. Tagged docs/source and release notes inform serverQuery, paginator localization, query-state/selection, schema preservation/generated/UUID, GuidField, dialog focus/dismissal, non-modal dates and router integration. Adapter unchecked rendering is a runtime fix; package metadata requires no teaching update. Source review only; prior browser evidence not extended."
|
|
436
436
|
},
|
|
437
437
|
{
|
|
438
438
|
"id": "chronicle-go",
|
|
@@ -440,9 +440,9 @@
|
|
|
440
440
|
"repository": "Cratis/Chronicle.Go",
|
|
441
441
|
"packages": [],
|
|
442
442
|
"synced": {
|
|
443
|
-
"version": "0.
|
|
444
|
-
"date": "2026-10-
|
|
445
|
-
"by": "Cratis/AI#
|
|
443
|
+
"version": "0.11.1",
|
|
444
|
+
"date": "2026-10-25",
|
|
445
|
+
"by": "Cratis/AI#820"
|
|
446
446
|
},
|
|
447
447
|
"covers": {
|
|
448
448
|
"skills": [
|
|
@@ -454,7 +454,7 @@
|
|
|
454
454
|
]
|
|
455
455
|
},
|
|
456
456
|
"coverage": "tracked",
|
|
457
|
-
"notes": "
|
|
457
|
+
"notes": "Cratis/AI#820: reviewed v0.10.0, v0.11.0 and v0.11.1. Teach FastForward, first-registration StartAtTail and kernel-first upgrade to the verified 19.70.0 decision-guard profile. Documentation metadata needs no teaching update; generated occurrences contracts do not establish a new public workflow. No Go execution probe."
|
|
458
458
|
},
|
|
459
459
|
{
|
|
460
460
|
"id": "ante",
|
|
@@ -493,9 +493,9 @@
|
|
|
493
493
|
"repository": "Cratis/Screenplay.CritterStack",
|
|
494
494
|
"packages": [],
|
|
495
495
|
"synced": {
|
|
496
|
-
"version": "0.26.
|
|
497
|
-
"date": "2026-10-
|
|
498
|
-
"by": "Cratis/AI#
|
|
496
|
+
"version": "0.26.1",
|
|
497
|
+
"date": "2026-10-25",
|
|
498
|
+
"by": "Cratis/AI#820"
|
|
499
499
|
},
|
|
500
500
|
"covers": {
|
|
501
501
|
"skills": [
|
|
@@ -504,7 +504,7 @@
|
|
|
504
504
|
"rules": []
|
|
505
505
|
},
|
|
506
506
|
"coverage": "tracked",
|
|
507
|
-
"notes": "
|
|
507
|
+
"notes": "Cratis/AI#820: reviewed v0.26.1. No teaching update needed: NuGet metadata and the repository's Specifications 5/xUnit v3 test runner migration do not change the CritterStack renderer/toolchain contract taught by this family. No backend parity or new execution claim."
|
|
508
508
|
},
|
|
509
509
|
{
|
|
510
510
|
"id": "chronicle-typescript",
|
|
@@ -517,9 +517,9 @@
|
|
|
517
517
|
}
|
|
518
518
|
],
|
|
519
519
|
"synced": {
|
|
520
|
-
"version": "6.
|
|
521
|
-
"date": "2026-10-
|
|
522
|
-
"by": "Cratis/AI#
|
|
520
|
+
"version": "6.53.1",
|
|
521
|
+
"date": "2026-10-25",
|
|
522
|
+
"by": "Cratis/AI#820"
|
|
523
523
|
},
|
|
524
524
|
"covers": {
|
|
525
525
|
"skills": [
|
|
@@ -527,7 +527,7 @@
|
|
|
527
527
|
],
|
|
528
528
|
"rules": []
|
|
529
529
|
},
|
|
530
|
-
"notes": "
|
|
530
|
+
"notes": "Cratis/AI#820: reviewed all five releases v6.51.1-v6.53.1. Teach gRPC limits, FastForward, first-registration StartAtTail, class defaults and child all-event projection fixes with explicit kernel/Fundamentals requirements and replay action. Release review only; no new TypeScript execution evidence."
|
|
531
531
|
},
|
|
532
532
|
{
|
|
533
533
|
"id": "release-action",
|
|
@@ -535,9 +535,9 @@
|
|
|
535
535
|
"repository": "Cratis/release-action",
|
|
536
536
|
"packages": [],
|
|
537
537
|
"synced": {
|
|
538
|
-
"version": "1.
|
|
539
|
-
"date": "2026-10-
|
|
540
|
-
"by": "Cratis/AI#
|
|
538
|
+
"version": "1.5.1",
|
|
539
|
+
"date": "2026-10-25",
|
|
540
|
+
"by": "Cratis/AI#820"
|
|
541
541
|
},
|
|
542
542
|
"covers": {
|
|
543
543
|
"skills": [
|
|
@@ -548,7 +548,7 @@
|
|
|
548
548
|
]
|
|
549
549
|
},
|
|
550
550
|
"coverage": "tracked",
|
|
551
|
-
"notes": "
|
|
551
|
+
"notes": "Cratis/AI#820: reviewed v1.4.3, v1.5.0 and v1.5.1. Skill and PR policy now distinguish workflow-drift 403 recovery from stale-tag retry, opt-in batching/defaults/outputs, combined summaries and corrected pending-major hotfix behavior. No workflow activation or release execution claimed."
|
|
552
552
|
},
|
|
553
553
|
{
|
|
554
554
|
"id": "screenplay-generation",
|
|
@@ -556,9 +556,9 @@
|
|
|
556
556
|
"repository": "Cratis/Screenplay.Generation",
|
|
557
557
|
"packages": [],
|
|
558
558
|
"synced": {
|
|
559
|
-
"version": "0.18.
|
|
560
|
-
"date": "2026-10-
|
|
561
|
-
"by": "Cratis/AI#
|
|
559
|
+
"version": "0.18.2",
|
|
560
|
+
"date": "2026-10-25",
|
|
561
|
+
"by": "Cratis/AI#820"
|
|
562
562
|
},
|
|
563
563
|
"covers": {
|
|
564
564
|
"skills": [
|
|
@@ -567,7 +567,7 @@
|
|
|
567
567
|
"rules": []
|
|
568
568
|
},
|
|
569
569
|
"coverage": "tracked",
|
|
570
|
-
"notes": "
|
|
570
|
+
"notes": "Cratis/AI#820: reviewed v0.18.2. No teaching update needed: package metadata and native .NET 10 Specifications 5 test execution do not change generation APIs or the retained .NET 8/9/10 library targets. No renderer parity or execution uplift inferred."
|
|
571
571
|
},
|
|
572
572
|
{
|
|
573
573
|
"id": "chronicle-elixir",
|
|
@@ -580,9 +580,9 @@
|
|
|
580
580
|
}
|
|
581
581
|
],
|
|
582
582
|
"synced": {
|
|
583
|
-
"version": "3.
|
|
584
|
-
"date": "2026-10-
|
|
585
|
-
"by": "Cratis/AI#
|
|
583
|
+
"version": "3.14.3",
|
|
584
|
+
"date": "2026-10-25",
|
|
585
|
+
"by": "Cratis/AI#820"
|
|
586
586
|
},
|
|
587
587
|
"covers": {
|
|
588
588
|
"skills": [
|
|
@@ -592,7 +592,7 @@
|
|
|
592
592
|
"elixir.md"
|
|
593
593
|
]
|
|
594
594
|
},
|
|
595
|
-
"notes": "Synced to the v3.13.0 tag: decision reads, Chronicle.Testing, captures, discovery drift, standalone constraints, children collections, concurrency scopes and observability."
|
|
595
|
+
"notes": "Cratis/AI#820: reviewed all four releases v3.14.0-v3.14.3. Teach first-registration start_at_tail/kernel floor, client crash-report redaction and decide callback rejection/cleanup. Hex metadata and shared-doc language tabs need no additional API teaching. Tagged reactor/event/testing docs inspected; retained in-memory projection limits still apply. No new execution evidence. Prior: Synced to the v3.13.0 tag: decision reads, Chronicle.Testing, captures, discovery drift, standalone constraints, children collections, concurrency scopes and observability."
|
|
596
596
|
},
|
|
597
597
|
{
|
|
598
598
|
"id": "authproxy",
|
|
@@ -600,9 +600,9 @@
|
|
|
600
600
|
"repository": "Cratis/AuthProxy",
|
|
601
601
|
"packages": [],
|
|
602
602
|
"synced": {
|
|
603
|
-
"version": "2.
|
|
604
|
-
"date": "2026-10-
|
|
605
|
-
"by": "Cratis/AI#
|
|
603
|
+
"version": "2.32.4",
|
|
604
|
+
"date": "2026-10-25",
|
|
605
|
+
"by": "Cratis/AI#820"
|
|
606
606
|
},
|
|
607
607
|
"covers": {
|
|
608
608
|
"skills": [
|
|
@@ -611,7 +611,7 @@
|
|
|
611
611
|
"rules": []
|
|
612
612
|
},
|
|
613
613
|
"coverage": "tracked",
|
|
614
|
-
"notes": "
|
|
614
|
+
"notes": "Cratis/AI#820: reviewed all eight releases v2.31.0-v2.32.4. Teach opt-in multi-host session/callback boundaries, search-index exclusion and invitation placeholders. Existing canonical tenant header guidance remains correct for bearer routes; registration/cookie fixes need no workaround. Package/tooling/test-runner updates have no further identity API teaching delta. Release review, not a deployed ingress probe."
|
|
615
615
|
},
|
|
616
616
|
{
|
|
617
617
|
"id": "fundamentals-go",
|
|
@@ -619,9 +619,9 @@
|
|
|
619
619
|
"repository": "Cratis/Fundamentals.Go",
|
|
620
620
|
"packages": [],
|
|
621
621
|
"synced": {
|
|
622
|
-
"version": "0.3.
|
|
623
|
-
"date": "2026-10-
|
|
624
|
-
"by": "Cratis/AI#
|
|
622
|
+
"version": "0.3.3",
|
|
623
|
+
"date": "2026-10-25",
|
|
624
|
+
"by": "Cratis/AI#820"
|
|
625
625
|
},
|
|
626
626
|
"covers": {
|
|
627
627
|
"skills": [
|
|
@@ -633,7 +633,7 @@
|
|
|
633
633
|
]
|
|
634
634
|
},
|
|
635
635
|
"coverage": "tracked",
|
|
636
|
-
"notes": "
|
|
636
|
+
"notes": "Cratis/AI#820: reviewed v0.3.3. No teaching update needed: pkg.go.dev summary and documentation links change no concept, serialization, validation or Go engineering API. Existing runtime verification remains historical."
|
|
637
637
|
},
|
|
638
638
|
{
|
|
639
639
|
"id": "chronicle-kotlin",
|
|
@@ -646,9 +646,9 @@
|
|
|
646
646
|
}
|
|
647
647
|
],
|
|
648
648
|
"synced": {
|
|
649
|
-
"version": "
|
|
650
|
-
"date": "2026-10-
|
|
651
|
-
"by": "Cratis/AI#
|
|
649
|
+
"version": "7.1.0",
|
|
650
|
+
"date": "2026-10-25",
|
|
651
|
+
"by": "Cratis/AI#820"
|
|
652
652
|
},
|
|
653
653
|
"covers": {
|
|
654
654
|
"skills": [
|
|
@@ -656,7 +656,7 @@
|
|
|
656
656
|
],
|
|
657
657
|
"rules": []
|
|
658
658
|
},
|
|
659
|
-
"notes": "
|
|
659
|
+
"notes": "Cratis/AI#820: reviewed all seven releases v6.13.1-v7.1.0 and tagged concept/correlation/annotation sources. Teach breaking Fundamentals imports/value() and CorrelationId migration, shared thread-bound context, enum ordinals, StartAtTail/FastForward kernel floors and message limits. Maven metadata has no teaching delta. Earlier compile/runtime evidence remains historical."
|
|
660
660
|
},
|
|
661
661
|
{
|
|
662
662
|
"id": "arc-kotlin",
|
|
@@ -669,9 +669,9 @@
|
|
|
669
669
|
}
|
|
670
670
|
],
|
|
671
671
|
"synced": {
|
|
672
|
-
"version": "7.
|
|
673
|
-
"date": "2026-10-
|
|
674
|
-
"by": "Cratis/AI#
|
|
672
|
+
"version": "7.8.1",
|
|
673
|
+
"date": "2026-10-25",
|
|
674
|
+
"by": "Cratis/AI#820"
|
|
675
675
|
},
|
|
676
676
|
"covers": {
|
|
677
677
|
"skills": [
|
|
@@ -684,7 +684,7 @@
|
|
|
684
684
|
],
|
|
685
685
|
"rules": []
|
|
686
686
|
},
|
|
687
|
-
"notes": "
|
|
687
|
+
"notes": "Cratis/AI#820: reviewed v7.7.1, v7.8.0 and v7.8.1 with tagged ConceptAs and validator sources. Teach shared Fundamentals concepts/value(), compatible legacy Arc validators and fixed FundamentalsConceptValidator exclusions. Maven metadata/build dependencies need no further teaching update. No Kotlin execution uplift."
|
|
688
688
|
},
|
|
689
689
|
{
|
|
690
690
|
"id": "prompter",
|
|
@@ -755,9 +755,9 @@
|
|
|
755
755
|
}
|
|
756
756
|
],
|
|
757
757
|
"synced": {
|
|
758
|
-
"version": "
|
|
759
|
-
"date": "2026-10-
|
|
760
|
-
"by": "Cratis/AI#
|
|
758
|
+
"version": "5.0.3",
|
|
759
|
+
"date": "2026-10-25",
|
|
760
|
+
"by": "Cratis/AI#820"
|
|
761
761
|
},
|
|
762
762
|
"covers": {
|
|
763
763
|
"skills": [
|
|
@@ -771,7 +771,7 @@
|
|
|
771
771
|
"specs.md"
|
|
772
772
|
]
|
|
773
773
|
},
|
|
774
|
-
"notes": "
|
|
774
|
+
"notes": "Cratis/AI#820: reviewed all ten stable releases v4.1.2-v5.0.3 and tagged 5.0.2 upgrade/README. The final REST drift check found newly released 5.0.3; teach its separate native-runner class teardown failure outcome. Existing 5.x executable guidance retained; repair contradictory teardown/fixture/analyzer teaching, document ValueTask and aliases, assertion migration and Received.InOrder exception. New runner/resources remain experimental/opt-in. NuGet logo and XML-registration fix need no workflow workaround; TypeScript/scenario families have no API change from this product. No new .NET execution claim."
|
|
775
775
|
},
|
|
776
776
|
{
|
|
777
777
|
"id": "narrator",
|
|
@@ -779,9 +779,9 @@
|
|
|
779
779
|
"repository": "Cratis/Narrator",
|
|
780
780
|
"packages": [],
|
|
781
781
|
"synced": {
|
|
782
|
-
"version": "3.0.
|
|
783
|
-
"date": "2026-10-
|
|
784
|
-
"by": "Cratis/AI#
|
|
782
|
+
"version": "3.0.3",
|
|
783
|
+
"date": "2026-10-25",
|
|
784
|
+
"by": "Cratis/AI#820"
|
|
785
785
|
},
|
|
786
786
|
"covers": {
|
|
787
787
|
"skills": [
|
|
@@ -790,7 +790,7 @@
|
|
|
790
790
|
"rules": []
|
|
791
791
|
},
|
|
792
792
|
"coverage": "tracked",
|
|
793
|
-
"notes": "
|
|
793
|
+
"notes": "Cratis/AI#820: reviewed v3.0.3. No teaching update needed: the Marketplace documentation link changes neither Narrator capture behavior nor the Chronicle CLI operations taught by this family. No new CLI or extension execution evidence."
|
|
794
794
|
},
|
|
795
795
|
{
|
|
796
796
|
"id": "ai-distribution",
|
|
@@ -817,9 +817,9 @@
|
|
|
817
817
|
"repository": "Cratis/Prologue",
|
|
818
818
|
"packages": [],
|
|
819
819
|
"synced": {
|
|
820
|
-
"version": "2.0.
|
|
821
|
-
"date": "2026-10-
|
|
822
|
-
"by": "Cratis/AI#
|
|
820
|
+
"version": "2.0.5",
|
|
821
|
+
"date": "2026-10-25",
|
|
822
|
+
"by": "Cratis/AI#820"
|
|
823
823
|
},
|
|
824
824
|
"covers": {
|
|
825
825
|
"skills": [
|
|
@@ -827,7 +827,7 @@
|
|
|
827
827
|
],
|
|
828
828
|
"rules": []
|
|
829
829
|
},
|
|
830
|
-
"notes": "
|
|
830
|
+
"notes": "Cratis/AI#820: reviewed all five releases v2.0.1-v2.0.5. Teach security upgrade, native arm64 images and repaired no-LLM emission while retaining executable model validation and disclosure safeguards. Package metadata, Fundamentals runtime bump and repository spec migration require no further extraction recipe. No new capture/interpret execution evidence."
|
|
831
831
|
},
|
|
832
832
|
{
|
|
833
833
|
"id": "lens",
|
|
@@ -853,9 +853,9 @@
|
|
|
853
853
|
"repository": "Cratis/Architecture",
|
|
854
854
|
"packages": [],
|
|
855
855
|
"synced": {
|
|
856
|
-
"version": "1.0.
|
|
857
|
-
"date": "2026-10-
|
|
858
|
-
"by": "Cratis/AI#
|
|
856
|
+
"version": "1.0.3",
|
|
857
|
+
"date": "2026-10-25",
|
|
858
|
+
"by": "Cratis/AI#820"
|
|
859
859
|
},
|
|
860
860
|
"covers": {
|
|
861
861
|
"skills": [],
|
|
@@ -864,7 +864,7 @@
|
|
|
864
864
|
]
|
|
865
865
|
},
|
|
866
866
|
"coverage": "tracked",
|
|
867
|
-
"notes": "
|
|
867
|
+
"notes": "Analyzer guidance lives in rules/csharp.md. Cratis/AI#820: reviewed v1.0.3. No teaching update needed: NuGet author, icon, tags, README and documentation link changes alter no Architecture attributes, analyzer rules or C# conventions. No new analyzer execution evidence."
|
|
868
868
|
},
|
|
869
869
|
{
|
|
870
870
|
"id": "dockerfiles",
|
|
@@ -66,7 +66,7 @@ Tagged **[contract]** (framework-enforced) or **[convention]** (house default).
|
|
|
66
66
|
|
|
67
67
|
## Implementation Workflow
|
|
68
68
|
|
|
69
|
-
- **Starting a brand-new application:** scaffold it instead of hand-writing the skeleton: `dotnet new install Cratis.Templates`, then `dotnet new cratis -n MyApp -o MyApp` (`--language Kotlin|Java`, `--Database MongoDB|PostgreSQL|MsSql|SQLite`; `cratis-aspire` for Aspire; `cratis-chronicle-console` or `cratis-chronicle-web` for a Chronicle client only). Non-interactive runs need `--allow-scripts yes`; the .NET templates target `net10.0`. The template writes `.cratis/ai.json`; run `cratis ai update` afterwards. Its `SomeModule/SomeFeature/Registration/` slice is the house shape. There is no Go, Python or Elixir template (verified at Cratis.Templates `v1.
|
|
69
|
+
- **Starting a brand-new application:** scaffold it instead of hand-writing the skeleton: `dotnet new install Cratis.Templates`, then `dotnet new cratis -n MyApp -o MyApp` (`--language Kotlin|Java`, `--Database MongoDB|PostgreSQL|MsSql|SQLite`; `cratis-aspire` for Aspire; `cratis-chronicle-console` or `cratis-chronicle-web` for a Chronicle client only). Non-interactive runs need `--allow-scripts yes`; the .NET templates target `net10.0`. The template writes `.cratis/ai.json`; run `cratis ai update` afterwards. Its `SomeModule/SomeFeature/Registration/` slice is the house shape. There is no Go, Python or Elixir template (verified at Cratis.Templates `v1.8.1`). Since 1.8.0 the `cratis` and `cratis-aspire` .NET app projects emit `<CratisReadProtection>On</CratisReadProtection>`: read models supplied to commands and validators guard the append. Existing apps are not changed by reinstalling the templates.
|
|
70
70
|
- **Phase 0 — Find the contract / choose the level.** Before writing slice code, find what the code must match, and choose the level once for the whole scope.
|
|
71
71
|
1. **Look for a Screenplay model** under the model root (opted in per `general.md` "Model first"; where `cratis-screenplay-modeling-lifecycle` is installed, run its `scripts/model-first-status.mjs` for the decision, root and drafts) for the slice, command, event and read-model names.
|
|
72
72
|
2. **Model level** — an accepted model under the root covers the scope, or the repository is opted in and this scope has no model yet. The `.play` slice and its specs are the contract: change the model first (new behavior starts in discovery), verify it (V1–V3), get an independent review, then render with Stage or gap-fill by hand only what the renderer rejects. Hand-written code stays checked against the model (**cratis-application-slice-conformance**). Never edit Stage-managed output, never implement behavior the model does not state, never change the model to match existing code, never weaken protection to make it compile or render. Start with **cratis-screenplay-event-modeling** (decision rule), then **cratis-screenplay-modeling-lifecycle**. If the Screenplay skills are not installed, say so; do not author `.play` from memory.
|
|
@@ -10,7 +10,7 @@ paths:
|
|
|
10
10
|
> **⚠️ APPLIES ONLY TO PROJECTS USING MICROSOFT ORLEANS**
|
|
11
11
|
> If your project does not reference `Microsoft.Orleans` or any Orleans packages, **ignore this entire file**. These rules are irrelevant outside of Orleans contexts.
|
|
12
12
|
|
|
13
|
-
In the Cratis organization, Orleans is the Chronicle kernel's actor runtime (`Source/Kernel/`). The kernel conventions below are verified against `Cratis/Chronicle` **v19.50.0**. Shared hosting and jobs come from `Cratis/Orleans` **v1.
|
|
13
|
+
In the Cratis organization, Orleans is the Chronicle kernel's actor runtime (`Source/Kernel/`). The kernel conventions below are verified against `Cratis/Chronicle` **v19.50.0**. Shared hosting and jobs come from `Cratis/Orleans` **v1.30.0**; use its setup for other services that co-host a silo.
|
|
14
14
|
|
|
15
15
|
## General
|
|
16
16
|
|
|
@@ -49,7 +49,7 @@ framework/service guidance; they do not impose application slice architecture.
|
|
|
49
49
|
|
|
50
50
|
For service authors, `Cratis.Orleans` supplies hosting, grain serializers, and the
|
|
51
51
|
shared job system without requiring Chronicle. With `Cratis.Orleans` and
|
|
52
|
-
`Cratis.Orleans.Storage.MongoDB` 1.
|
|
52
|
+
`Cratis.Orleans.Storage.MongoDB` 1.30.0, this host uses durable MongoDB membership
|
|
53
53
|
and jobs storage (a local MongoDB server is required):
|
|
54
54
|
|
|
55
55
|
```csharp
|
|
@@ -80,6 +80,14 @@ app.Run();
|
|
|
80
80
|
- Register jobs storage separately: `AddCratisOrleansMongoDBJobsStorage`,
|
|
81
81
|
`AddCratisOrleansSqlJobsStorage` (`Cratis.Orleans.Setup`), or
|
|
82
82
|
`AddCratisOrleansInMemoryJobsStorage` (`Cratis.Orleans.Storage`).
|
|
83
|
+
- Use the local `IJobs` service to start/stop/delete typed jobs during rolling
|
|
84
|
+
upgrades; generic manager calls can land on a release that does not know the
|
|
85
|
+
type. Provide singleton `IJobsManagerKeys` on every silo for all host-owned
|
|
86
|
+
scope/namespace pairs; process-local discovery is not a recovery catalog.
|
|
87
|
+
- Controller and worker placement are separate opt-ins through `AddJobPlacement`
|
|
88
|
+
and `AddJobStepPlacement`. Enable them only after every silo supports the
|
|
89
|
+
strategies and register them identically. Worker throttling is not admission;
|
|
90
|
+
see **cratis-orleans-jobs** for drain-before-replacement and metadata limits.
|
|
83
91
|
- Give grain implementations a unique `[GrainType("unique-name")]`. Orleans'
|
|
84
92
|
default type name derives from the class name alone; a collision across
|
|
85
93
|
assemblies prevents silo startup.
|
|
@@ -154,6 +154,13 @@ The test is **outward-facing effect, not file location**. A change under `Source
|
|
|
154
154
|
|
|
155
155
|
A non-release pull request must satisfy the relevant required checks like any other. Confirm label acceptance and publication suppression against the current workflow contract; do not assume external CI or API state.
|
|
156
156
|
|
|
157
|
+
### Release-action windows and workflow drift
|
|
158
|
+
|
|
159
|
+
Batching is opt-in; success with `batched` or `nothing-pending` is not publication.
|
|
160
|
+
Read **cratis-release-notes** before configuring windows, handling a pending-major
|
|
161
|
+
hotfix, or recovering a workflow-drift 403. Major confirmation remains required;
|
|
162
|
+
a workflow-drift recovery differs from the concurrent-tag retry above.
|
|
163
|
+
|
|
157
164
|
### Group small related changes into one pull request
|
|
158
165
|
|
|
159
166
|
Do not open a pull request per task when the tasks belong to the same body of work. Several small merged PRs become several releases, and a stream of near-empty patch releases makes the release history useless for the people it is written for. Collect related work — a set of CI gates, a group of fixes in one area, the steps of one refactor — onto **one branch, as separate commits**, and open **one** pull request. Commits stay one-logical-unit-each; the pull request is the release boundary, and the release boundary should be a coherent, describable change. Joining an open candidate, folding superseded PRs and the cut are in `cratis-engineering-release-trains`.
|
|
@@ -45,13 +45,13 @@ public class when_combining_parts : Specification
|
|
|
45
45
|
| `void Establish()` | setup, before `Because()` | each class in the chain has its own, run base-first — never call `base.Establish()` |
|
|
46
46
|
| `void Because()` | the single action under test | only in concrete spec files, never in a reusable context |
|
|
47
47
|
| `[Fact] void should_*()` | one assertion per fact | use the `ShouldXxx()` extension methods |
|
|
48
|
-
| `void Destroy()` | teardown
|
|
48
|
+
| `void Destroy()` | teardown once per eligible class by default | after each fact when per-fact lifecycle is selected |
|
|
49
49
|
|
|
50
|
-
The shared lifecycle is the default on xUnit v2 and v3 since 5.0; the package registers the framework, so delete any hand-written `[assembly: Xunit.TestFramework(...)]` (it fails with `CS0579`). Eligible classes derive from `Specification`, have one public
|
|
50
|
+
The shared lifecycle is the default on xUnit v2 and v3 since 5.0; the package registers the framework, so delete any hand-written `[assembly: Xunit.TestFramework(...)]` (it fails with `CS0579`). Eligible classes derive from `Specification`, have one public constructor with no arguments or only framework-managed fixture arguments, and contain only plain facts. Construction, Establish/Because and Destroy run once; all facts share the instance and must not mutate it. `IDisposable` specifications also share the lifecycle since Cratis.Specifications 4.4.0: one construction and one `Dispose` after the last fact. Initialization failure fails every fact. Theories and `ITestOutputHelper` constructors keep per-fact execution; `[PerFactSpecificationLifecycle]` opts a class out. `CRSPEC0008` (a fact modifies the shared context) is an error by default: move the change into `Establish` or `Because`. See the **cratis-specifications-csharp** skill's shared-lifecycle reference.
|
|
51
51
|
|
|
52
52
|
Run specifications as the built executable, not `dotnet test`: restore and build once, then run `bin/<Config>/net10.0/<Project>.Specs`. In a solution that mixes Microsoft.Testing.Platform and VSTest projects, run each project on its own; `dotnet test` on the whole solution does not work there. Filters and the 4.x → 5.0 checklist are in the **cratis-specifications-csharp** skill's [running-specs reference](../skills/cratis-specifications-csharp/references/running-specs.md).
|
|
53
53
|
|
|
54
|
-
CRSPEC0001–CRSPEC0007 are warnings
|
|
54
|
+
CRSPEC0001–CRSPEC0007 are warnings. Since 4.5 the analyzers ship only in `Cratis.Specifications`, transitively used by the framework packages; excluding analyzers on a framework package does not remove them. Derived xUnit/NUnit test attributes are recognized since 4.1.2. `Given`/`When` are aliases since 4.4 (declaring both aliases for one phase is CRSPEC0009), but house style stays `Establish`/`Because`. With warnings as errors, a non-`should_` fact, multiple specs per file (given contexts exempt), a fact on a given context, a `should_` without a test attribute, explicit base lifecycle calls, non-public specs with facts, or `Because` on a given context fail the build. Follow **cratis-specification-by-example**; do not suppress these diagnostics.
|
|
55
55
|
|
|
56
56
|
## Reusable layered contexts
|
|
57
57
|
|
|
@@ -94,7 +94,7 @@ async Task Because() => _error = await Catch.Exception(_sut.DoSomething);
|
|
|
94
94
|
|
|
95
95
|
## Assertion extension methods
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
Since 5.0 assertions live in `Cratis.Specifications`, with types forwarded by each framework package (namespace `Cratis.Specifications`); recompile and keep core/framework packages on the same version: `.ShouldEqual(expected)`, `.ShouldBeTrue()`, `.ShouldBeFalse()`, `.ShouldBeNull()`, `.ShouldNotBeNull()`, `.ShouldBeEmpty()`, `.ShouldNotBeEmpty()`, `.ShouldContain(item)`, `.ShouldNotContain(item)`, `.ShouldContainOnly(items)`, `.ShouldBeOfExactType<T>()`, `.ShouldBeGreaterThan(n)`, `.ShouldBeLessThan(n)`.
|
|
98
98
|
|
|
99
99
|
Additional helpers include `ShouldNotEqual`, `ShouldBeSame`/`ShouldNotBeSame`, `ShouldMatch(Func<T, bool>)`, `ShouldBeInRange`, inclusive comparisons `ShouldBeGreaterThanOrEqual`/`ShouldBeLessThanOrEqual`, `ShouldContainSingleItem`, `ShouldEachConformTo`, ordered collection `ShouldEqual(IEnumerable<T>)`, collection `ShouldContain(Predicate<T>)`, `ShouldBeAssignableFrom<T>`, and string `ShouldContain(substring, StringComparison)`. `Catch.Exception` accepts `Action` or `Func<Task>`; `Catch.Exception<T>(Action)` catches only T.
|
|
100
100
|
|
|
@@ -257,7 +257,7 @@ public record AuthorRegistered(AuthorName Name);
|
|
|
257
257
|
|
|
258
258
|
## Read Models and Queries
|
|
259
259
|
|
|
260
|
-
**[contract]** `[ReadModel]` records expose eligible public
|
|
260
|
+
**[contract]** `[ReadModel]` records expose eligible public static methods as queries. Requires Arc 22.121.0 for non-public methods to be excluded even with `[Query]` (ARC0029 warns); older versions also expose eligible internal statics. Keep helpers outside the read model when supporting those versions. Dependencies are plain method parameters (no `[FromServices]`). For application code, start with model-bound mappings, use fluent when the definition needs structure, and choose reducer code when transitions read better as code. For step-by-step creation, invoke the **cratis-chronicle-read-model** skill.
|
|
261
261
|
|
|
262
262
|
Use `[ReadModel(RequireQueryAttribute = true)]` with `[Query]` on intended
|
|
263
263
|
endpoints when folds exist (ARC0026/ARCCHR0019). `[Query]` alone does not hide
|