@cratis/pi 7.27.3 → 7.28.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.
Files changed (54) hide show
  1. package/package/corpus/skills/cratis-arc-command/SKILL.md +34 -11
  2. package/package/corpus/skills/cratis-arc-command/references/generated-values.md +166 -0
  3. package/package/corpus/skills/cratis-fundamentals-concept/SKILL.md +13 -5
  4. package/package/corpus/skills/cratis-screenplay-automations-and-translations/SKILL.md +3 -2
  5. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/audit-format.md +2 -2
  6. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/automation-patterns.md +4 -2
  7. package/package/corpus/skills/cratis-screenplay-automations-and-translations/references/provenance.md +5 -3
  8. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/SKILL.md +3 -2
  9. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/invocation-identity.md +6 -5
  10. package/package/corpus/skills/cratis-screenplay-captures-and-reactions/references/specifying-triggers-and-clock.md +1 -1
  11. package/package/corpus/skills/cratis-screenplay-command-surface/SKILL.md +4 -4
  12. package/package/corpus/skills/cratis-screenplay-command-surface/references/context.md +6 -5
  13. package/package/corpus/skills/cratis-screenplay-command-surface/references/generated-values-and-responses.md +5 -5
  14. package/package/corpus/skills/cratis-screenplay-event-modeling/SKILL.md +4 -3
  15. package/package/corpus/skills/cratis-screenplay-event-modeling/references/parsed-not-runnable.md +4 -4
  16. package/package/corpus/skills/cratis-screenplay-legacy-extraction/references/generate-notes.md +6 -4
  17. package/package/corpus/skills/cratis-screenplay-model-authoring/SKILL.md +10 -7
  18. package/package/corpus/skills/cratis-screenplay-model-authoring/references/mcp-tools.md +60 -10
  19. package/package/corpus/skills/cratis-screenplay-model-authoring/references/screen-authoring-workflow.md +6 -5
  20. package/package/corpus/skills/cratis-screenplay-model-authoring/verification.json +11 -1
  21. package/package/corpus/skills/cratis-screenplay-model-review/SKILL.md +29 -5
  22. package/package/corpus/skills/cratis-screenplay-model-review/references/anti-patterns.md +1 -1
  23. package/package/corpus/skills/cratis-screenplay-read-surface/references/guarded-actions.md +2 -2
  24. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/SKILL.md +12 -11
  25. package/package/corpus/skills/cratis-screenplay-render-and-gap-fill/references/gap-fill-handoff.md +3 -2
  26. package/package/corpus/skills/cratis-screenplay-scenario-coverage/references/spec-forms-by-mode.md +4 -4
  27. package/package/corpus/skills/cratis-screenplay-slice-design/references/worked-example.md +1 -1
  28. package/package/corpus/skills/cratis-screenplay-specifications/SKILL.md +2 -2
  29. package/package/corpus/skills/cratis-screenplay-specifications/references/examples-and-routes.md +1 -1
  30. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/SKILL.md +3 -3
  31. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/consistency-and-concurrency.md +2 -2
  32. package/package/corpus/skills/cratis-screenplay-streams-and-consistency/references/stream-patterns.md +1 -1
  33. package/package/corpus/skills/cratis-screenplay-toolchain/SKILL.md +6 -6
  34. package/package/corpus/skills/cratis-screenplay-toolchain/references/cheat-sheet.md +1 -1
  35. package/package/corpus/skills/cratis-screenplay-toolchain/references/diagnostics.md +1 -1
  36. package/package/corpus/skills/cratis-screenplay-toolchain/references/doc-contradictions.md +1 -1
  37. package/package/corpus/skills/cratis-screenplay-toolchain/references/executable-subset.md +4 -3
  38. package/package/corpus/skills/cratis-screenplay-toolchain/references/provenance.md +7 -1
  39. package/package/corpus/skills/cratis-screenplay-toolchain/references/renderable-subset.md +7 -6
  40. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.json +364 -28
  41. package/package/corpus/skills/cratis-screenplay-toolchain/references/screenplay-contract.version +1 -1
  42. package/package/corpus/skills/cratis-screenplay-toolchain/references/sources-and-streams.md +1 -1
  43. package/package/corpus/skills/cratis-screenplay-toolchain/references/traps.md +4 -4
  44. package/package/corpus/skills/cratis-screenplay-toolchain/references/verdicts.md +4 -4
  45. package/package/corpus/skills/cratis-screenplay-toolchain/references/versions.md +23 -13
  46. package/package/corpus/skills/cratis-screenplay-toolchain/verification.json +1 -1
  47. package/package/corpus/skills/cratis-screenplay-ui-composition/references/screen-composition-contract.md +6 -6
  48. package/package/corpus/skills/cratis-specifications-csharp/SKILL.md +21 -0
  49. package/package/corpus/skills/cratis-specifications-csharp/references/application-scenarios.md +80 -4
  50. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/SKILL.md +18 -8
  51. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/admission.md +5 -3
  52. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/references/case-tables-and-whole-numbers.md +127 -0
  53. package/package/corpus/skills/cratis-stage-rendering-and-sandbox/verification.json +5 -1
  54. package/package.json +1 -1
@@ -1212,6 +1212,74 @@
1212
1212
  }
1213
1213
  ]
1214
1214
  },
1215
+ {
1216
+ "source": "eventsource Account\n identifier String\n stream All\nmodule M\n feature F\n slice StateChange S\n command Record\n id String identifier\n produces event Recorded\n stream Account.All\n",
1217
+ "minimumSemanticVersion": "10.0",
1218
+ "diagnostic": null,
1219
+ "diagnostics": [],
1220
+ "admission": [
1221
+ {
1222
+ "esmVersion": 1,
1223
+ "status": "refused",
1224
+ "diagnostic": null,
1225
+ "issue": null
1226
+ },
1227
+ {
1228
+ "esmVersion": 2,
1229
+ "status": "refused",
1230
+ "diagnostic": null,
1231
+ "issue": null
1232
+ },
1233
+ {
1234
+ "esmVersion": 3,
1235
+ "status": "refused",
1236
+ "diagnostic": null,
1237
+ "issue": null
1238
+ },
1239
+ {
1240
+ "esmVersion": 4,
1241
+ "status": "refused",
1242
+ "diagnostic": null,
1243
+ "issue": null
1244
+ },
1245
+ {
1246
+ "esmVersion": 5,
1247
+ "status": "refused",
1248
+ "diagnostic": null,
1249
+ "issue": null
1250
+ },
1251
+ {
1252
+ "esmVersion": 6,
1253
+ "status": "refused",
1254
+ "diagnostic": null,
1255
+ "issue": null
1256
+ },
1257
+ {
1258
+ "esmVersion": 7,
1259
+ "status": "refused",
1260
+ "diagnostic": null,
1261
+ "issue": null
1262
+ },
1263
+ {
1264
+ "esmVersion": 8,
1265
+ "status": "refused",
1266
+ "diagnostic": null,
1267
+ "issue": null
1268
+ },
1269
+ {
1270
+ "esmVersion": 9,
1271
+ "status": "refused",
1272
+ "diagnostic": null,
1273
+ "issue": null
1274
+ },
1275
+ {
1276
+ "esmVersion": 10,
1277
+ "status": "admitted",
1278
+ "diagnostic": null,
1279
+ "issue": null
1280
+ }
1281
+ ]
1282
+ },
1215
1283
  {
1216
1284
  "source": "system Outside\nmodule M\n feature F\n slice StateChange S\n operation External\n uses Outside\n execute\n implementation\n hint \u0022External work\u0022\n command Run\n produces External\n",
1217
1285
  "minimumSemanticVersion": null,
@@ -1305,7 +1373,8 @@
1305
1373
  2,
1306
1374
  3,
1307
1375
  4,
1308
- 5
1376
+ 5,
1377
+ 6
1309
1378
  ]
1310
1379
  },
1311
1380
  {
@@ -1317,7 +1386,8 @@
1317
1386
  1,
1318
1387
  3,
1319
1388
  4,
1320
- 5
1389
+ 5,
1390
+ 6
1321
1391
  ]
1322
1392
  },
1323
1393
  {
@@ -1329,7 +1399,8 @@
1329
1399
  1,
1330
1400
  3,
1331
1401
  4,
1332
- 5
1402
+ 5,
1403
+ 6
1333
1404
  ]
1334
1405
  },
1335
1406
  {
@@ -1341,7 +1412,8 @@
1341
1412
  1,
1342
1413
  3,
1343
1414
  4,
1344
- 5
1415
+ 5,
1416
+ 6
1345
1417
  ]
1346
1418
  },
1347
1419
  {
@@ -1353,7 +1425,8 @@
1353
1425
  1,
1354
1426
  3,
1355
1427
  4,
1356
- 5
1428
+ 5,
1429
+ 6
1357
1430
  ]
1358
1431
  },
1359
1432
  {
@@ -1365,7 +1438,8 @@
1365
1438
  1,
1366
1439
  3,
1367
1440
  4,
1368
- 5
1441
+ 5,
1442
+ 6
1369
1443
  ]
1370
1444
  },
1371
1445
  {
@@ -1375,7 +1449,8 @@
1375
1449
  "issue": null,
1376
1450
  "condition": [
1377
1451
  1,
1378
- 5
1452
+ 5,
1453
+ 6
1379
1454
  ]
1380
1455
  },
1381
1456
  {
@@ -1385,7 +1460,8 @@
1385
1460
  "issue": null,
1386
1461
  "condition": [
1387
1462
  1,
1388
- 5
1463
+ 5,
1464
+ 6
1389
1465
  ]
1390
1466
  },
1391
1467
  {
@@ -1395,7 +1471,8 @@
1395
1471
  "issue": null,
1396
1472
  "condition": [
1397
1473
  1,
1398
- 5
1474
+ 5,
1475
+ 6
1399
1476
  ]
1400
1477
  },
1401
1478
  {
@@ -1405,7 +1482,7 @@
1405
1482
  "issue": null,
1406
1483
  "condition": [
1407
1484
  1,
1408
- 5
1485
+ 6
1409
1486
  ]
1410
1487
  }
1411
1488
  ]
@@ -6174,6 +6251,74 @@
6174
6251
  "issue": null
6175
6252
  }
6176
6253
  ]
6254
+ },
6255
+ {
6256
+ "source": "eventsource Account\n identifier String\n stream All\nmodule M\n feature F\n slice Automation S\n event Recorded\n value String\n reaction FollowUp\n from Account.All\n when Recorded\n",
6257
+ "minimumSemanticVersion": "10.0",
6258
+ "diagnostic": null,
6259
+ "diagnostics": [],
6260
+ "admission": [
6261
+ {
6262
+ "esmVersion": 1,
6263
+ "status": "refused",
6264
+ "diagnostic": null,
6265
+ "issue": null
6266
+ },
6267
+ {
6268
+ "esmVersion": 2,
6269
+ "status": "refused",
6270
+ "diagnostic": null,
6271
+ "issue": null
6272
+ },
6273
+ {
6274
+ "esmVersion": 3,
6275
+ "status": "refused",
6276
+ "diagnostic": null,
6277
+ "issue": null
6278
+ },
6279
+ {
6280
+ "esmVersion": 4,
6281
+ "status": "refused",
6282
+ "diagnostic": null,
6283
+ "issue": null
6284
+ },
6285
+ {
6286
+ "esmVersion": 5,
6287
+ "status": "refused",
6288
+ "diagnostic": null,
6289
+ "issue": null
6290
+ },
6291
+ {
6292
+ "esmVersion": 6,
6293
+ "status": "refused",
6294
+ "diagnostic": null,
6295
+ "issue": null
6296
+ },
6297
+ {
6298
+ "esmVersion": 7,
6299
+ "status": "refused",
6300
+ "diagnostic": null,
6301
+ "issue": null
6302
+ },
6303
+ {
6304
+ "esmVersion": 8,
6305
+ "status": "refused",
6306
+ "diagnostic": null,
6307
+ "issue": null
6308
+ },
6309
+ {
6310
+ "esmVersion": 9,
6311
+ "status": "refused",
6312
+ "diagnostic": null,
6313
+ "issue": null
6314
+ },
6315
+ {
6316
+ "esmVersion": 10,
6317
+ "status": "admitted",
6318
+ "diagnostic": null,
6319
+ "issue": null
6320
+ }
6321
+ ]
6177
6322
  }
6178
6323
  ],
6179
6324
  "admission": [
@@ -6209,27 +6354,39 @@
6209
6354
  },
6210
6355
  {
6211
6356
  "esmVersion": 6,
6212
- "status": "admitted",
6357
+ "status": "conditional",
6213
6358
  "diagnostic": null,
6214
- "issue": null
6359
+ "issue": null,
6360
+ "condition": [
6361
+ 1
6362
+ ]
6215
6363
  },
6216
6364
  {
6217
6365
  "esmVersion": 7,
6218
- "status": "admitted",
6366
+ "status": "conditional",
6219
6367
  "diagnostic": null,
6220
- "issue": null
6368
+ "issue": null,
6369
+ "condition": [
6370
+ 1
6371
+ ]
6221
6372
  },
6222
6373
  {
6223
6374
  "esmVersion": 8,
6224
- "status": "admitted",
6375
+ "status": "conditional",
6225
6376
  "diagnostic": null,
6226
- "issue": null
6377
+ "issue": null,
6378
+ "condition": [
6379
+ 1
6380
+ ]
6227
6381
  },
6228
6382
  {
6229
6383
  "esmVersion": 9,
6230
- "status": "admitted",
6384
+ "status": "conditional",
6231
6385
  "diagnostic": null,
6232
- "issue": null
6386
+ "issue": null,
6387
+ "condition": [
6388
+ 1
6389
+ ]
6233
6390
  },
6234
6391
  {
6235
6392
  "esmVersion": 10,
@@ -15245,6 +15402,83 @@
15245
15402
  "title": "A concept header repeats a compliance marker with the same wire identity.",
15246
15403
  "reserved": false,
15247
15404
  "retired": false
15405
+ },
15406
+ {
15407
+ "code": "PLAY0660",
15408
+ "name": "InvalidReadModelKey",
15409
+ "severity": "error",
15410
+ "severities": [
15411
+ "error"
15412
+ ],
15413
+ "title": "A key modifier has an invalid owner, type or modifier combination.",
15414
+ "reserved": false,
15415
+ "retired": false
15416
+ },
15417
+ {
15418
+ "code": "PLAY0661",
15419
+ "name": "IncompleteReadModelKey",
15420
+ "severity": "error",
15421
+ "severities": [
15422
+ "error"
15423
+ ],
15424
+ "title": "A single-instance lookup omits declared read-model key parts.",
15425
+ "reserved": false,
15426
+ "retired": false
15427
+ },
15428
+ {
15429
+ "code": "PLAY0662",
15430
+ "name": "InvalidReadModelKeyLookup",
15431
+ "severity": "error",
15432
+ "severities": [
15433
+ "error"
15434
+ ],
15435
+ "title": "A read-model lookup has invalid parts, shape or sources.",
15436
+ "reserved": false,
15437
+ "retired": false
15438
+ },
15439
+ {
15440
+ "code": "PLAY0663",
15441
+ "name": "ProductionRouteOutsideCommand",
15442
+ "severity": "error",
15443
+ "severities": [
15444
+ "error"
15445
+ ],
15446
+ "title": "A route is declared on a production outside a command.",
15447
+ "reserved": false,
15448
+ "retired": false
15449
+ },
15450
+ {
15451
+ "code": "PLAY0664",
15452
+ "name": "RedundantProductionRoute",
15453
+ "severity": "warning",
15454
+ "severities": [
15455
+ "warning"
15456
+ ],
15457
+ "title": "A production route repeats its command\u0027s route.",
15458
+ "reserved": false,
15459
+ "retired": false
15460
+ },
15461
+ {
15462
+ "code": "PLAY0665",
15463
+ "name": "InvalidObserverFilter",
15464
+ "severity": "error",
15465
+ "severities": [
15466
+ "error"
15467
+ ],
15468
+ "title": "An observer filter is malformed, unresolved or used with a non-event trigger.",
15469
+ "reserved": false,
15470
+ "retired": false
15471
+ },
15472
+ {
15473
+ "code": "PLAY0666",
15474
+ "name": "ObserverFilterExcludesEveryProducer",
15475
+ "severity": "warning",
15476
+ "severities": [
15477
+ "warning"
15478
+ ],
15479
+ "title": "An observer filter excludes every statically known producer.",
15480
+ "reserved": false,
15481
+ "retired": false
15248
15482
  }
15249
15483
  ],
15250
15484
  "mcpTools": [
@@ -19755,11 +19989,12 @@
19755
19989
  },
19756
19990
  {
19757
19991
  "name": "semantic-diff",
19758
- "requiredParameters": [
19759
- "afterWorkspaceJson",
19760
- "beforeWorkspaceJson"
19761
- ],
19992
+ "requiredParameters": [],
19762
19993
  "optionalParameters": [
19994
+ "after",
19995
+ "afterWorkspaceJson",
19996
+ "before",
19997
+ "beforeWorkspaceJson",
19763
19998
  "expectedSourceRevision",
19764
19999
  "limit",
19765
20000
  "offset"
@@ -19767,6 +20002,80 @@
19767
20002
  "inputSchema": {
19768
20003
  "type": "object",
19769
20004
  "properties": {
20005
+ "before": {
20006
+ "type": "object",
20007
+ "properties": {
20008
+ "workspace": {
20009
+ "type": "string",
20010
+ "enum": [
20011
+ "active"
20012
+ ]
20013
+ },
20014
+ "path": {
20015
+ "type": "string"
20016
+ },
20017
+ "workspaceJson": {
20018
+ "type": "string"
20019
+ }
20020
+ },
20021
+ "required": [],
20022
+ "additionalProperties": false,
20023
+ "description": "Select exactly one source: the open workspace, a read-only model folder/worktree path admitted like open-workspace, or a complete canonical export. Relative paths use the server working directory; Git refs are not resolved.",
20024
+ "oneOf": [
20025
+ {
20026
+ "required": [
20027
+ "workspace"
20028
+ ]
20029
+ },
20030
+ {
20031
+ "required": [
20032
+ "path"
20033
+ ]
20034
+ },
20035
+ {
20036
+ "required": [
20037
+ "workspaceJson"
20038
+ ]
20039
+ }
20040
+ ]
20041
+ },
20042
+ "after": {
20043
+ "type": "object",
20044
+ "properties": {
20045
+ "workspace": {
20046
+ "type": "string",
20047
+ "enum": [
20048
+ "active"
20049
+ ]
20050
+ },
20051
+ "path": {
20052
+ "type": "string"
20053
+ },
20054
+ "workspaceJson": {
20055
+ "type": "string"
20056
+ }
20057
+ },
20058
+ "required": [],
20059
+ "additionalProperties": false,
20060
+ "description": "Select exactly one source: the open workspace, a read-only model folder/worktree path admitted like open-workspace, or a complete canonical export. Relative paths use the server working directory; Git refs are not resolved.",
20061
+ "oneOf": [
20062
+ {
20063
+ "required": [
20064
+ "workspace"
20065
+ ]
20066
+ },
20067
+ {
20068
+ "required": [
20069
+ "path"
20070
+ ]
20071
+ },
20072
+ {
20073
+ "required": [
20074
+ "workspaceJson"
20075
+ ]
20076
+ }
20077
+ ]
20078
+ },
19770
20079
  "beforeWorkspaceJson": {
19771
20080
  "type": "string",
19772
20081
  "description": "Complete canonical UTF-8 export-workspace JSON for the baseline, decoded and reassembled from export pages; not a Git ref or path."
@@ -19786,14 +20095,41 @@
19786
20095
  },
19787
20096
  "expectedSourceRevision": {
19788
20097
  "type": "string",
19789
- "description": "Echo the ordered-pair sourceRevision on continuation. Both snapshot revisions are pinned, including catalogs and exact source."
20098
+ "description": "Echo the ordered-pair sourceRevision on continuation. Both source revisions are pinned, including catalogs and exact source; sources reload on each page and a change refuses continuation as stale."
19790
20099
  }
19791
20100
  },
19792
- "required": [
19793
- "beforeWorkspaceJson",
19794
- "afterWorkspaceJson"
19795
- ],
19796
- "additionalProperties": false
20101
+ "required": [],
20102
+ "additionalProperties": false,
20103
+ "allOf": [
20104
+ {
20105
+ "oneOf": [
20106
+ {
20107
+ "required": [
20108
+ "before"
20109
+ ]
20110
+ },
20111
+ {
20112
+ "required": [
20113
+ "beforeWorkspaceJson"
20114
+ ]
20115
+ }
20116
+ ]
20117
+ },
20118
+ {
20119
+ "oneOf": [
20120
+ {
20121
+ "required": [
20122
+ "after"
20123
+ ]
20124
+ },
20125
+ {
20126
+ "required": [
20127
+ "afterWorkspaceJson"
20128
+ ]
20129
+ }
20130
+ ]
20131
+ }
20132
+ ]
19797
20133
  }
19798
20134
  },
19799
20135
  {
@@ -15,7 +15,7 @@ Sources, streams and command/specification routes bind and reference-execute as
15
15
  `specifications.md`, `Versions.cs`; the complete example below compiled with
16
16
  `--warnaserror` and passed `screenplay test` on 4.125.0.
17
17
 
18
- CLI 3.41.0 renders only model versions up to v7: routed v8 models receive
18
+ CLI 3.46.1 renders only model versions up to v7: routed v8 models receive
19
19
  `CLI-RENDER-004` before planning/publication. This is not a source-validation or
20
20
  binder refusal. Keep the routed model as contract and gap-fill its realization;
21
21
  never remove routing to obtain a render. Pins: `versions.md`.
@@ -1,6 +1,6 @@
1
1
  # Traps (one line each, with the fix)
2
2
 
3
- Current pins: Screenplay 4.127.0 / CLI 3.41.0 (`versions.md`). Unless explicitly
3
+ Current pins: Screenplay 4.131.0 / CLI 3.46.1 (`versions.md`). Unless explicitly
4
4
  updated below, [probed]/[source] rows retain their historical v4.66.0/CLI 3.28.2
5
5
  scope; negative capability claims there are not current verdicts. Current routes
6
6
  bind as v8, v7 reaches Stage planning, reference tests have CLI/MCP routes, and
@@ -15,7 +15,7 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
15
15
  7. Current V1 warns on absent projection/children/nested targets (PLAY0514) and unknown removal/capture events (PLAY0166). Opt-in field-origins checks find unmapped declared fields (PLAY0534) where coverage is known; still walk lineage for skipped/opaque shapes.
16
16
  8. Severity does not soften a rule: `severity warning` still rejects the command.
17
17
  9. Authorization (module AND feature AND construct) runs before validation; unauthorized is `then denied`, never `then error`.
18
- 10. Without a declared actor an invocation is caller-less. At 4.125.0 declare reaction `runs as system role "<Role>"` (ESM v10), keep its gate, and reference-test the trusted path. CLI 3.41.0's 4.114.0 parser rejects this syntax (PLAY0137); Stage 4.51.3 audits through v7 only. Arc gap-fill uses `[ExecuteCommandsAsSystem]` for returned commands, not a fictional `given caller`.
18
+ 10. Without a declared actor an invocation is caller-less. At 4.125.0 declare reaction `runs as system role "<Role>"` (ESM v10), keep its gate, and reference-test the trusted path. The historical CLI 3.41.0/4.114.0 parser rejected this syntax (PLAY0137); current CLI 3.46.1 instead refuses its v10 at render admission (CLI-RENDER-004), and Stage 4.52.0 audits through v7 only. Arc gap-fill uses `[ExecuteCommandsAsSystem]` for returned commands, not a fictional `given caller`.
19
19
  11. A reaction `produces` without `for` lands on the trigger's event source; clock and application triggers need an explicit `for`.
20
20
  12. Read-model identity comes from its keyed queries, which must all use the same `by` property: `query XById => RM optional` + `by xId XId` with `xId` a read-model property, and the identifier equals the projection's effective key (table in slice-design `references/read-model-design.md`; full rule, including Stage's narrower admission and `STAGE-ESM-017`, in `cratis-stage-rendering-and-sandbox` `references/admission.md`). Never mark a read-model property `identifier`. (PLAY0268 when the keyed queries do not share one `by` property; PLAY0351 when a `given`/`then` readmodel block omits that property.)
21
21
  13. Projection `key` routes only on `from` (projection-level: PLAY0381). `all` is per event source. Joins never create instances and match the joined event's source id. [probed]
@@ -31,7 +31,7 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
31
31
  23. `@` escapes are mandatory for `tag`, `authorize`, `produces`, `reads`, `file`, `validate`, `sequence`, `occurred`, `causedBy`, `namespace`, `correlation`, `causation`, and projection `key`/`parent`/`with` as names.
32
32
  24. Canonicalizing edits can drop unplaceable comments (PLAY0288; inspect `droppedCommentCount`); keep durable rationale in fenced Markdown `documentation`, not `//`, and summaries in `description`. Documentation survives canonical printing but changes neither executable bytes nor `modelRevision`; it is not rendered code.
33
33
  25. MCP writes: propose, review, approval, apply by the identity owner (the session that owns the MCP connection); other subagents return edit requests; proposals are connection-local, at most 16 (`cratis-screenplay-model-authoring`).
34
- 26. Operations/systems and exact numbers remain unadmitted. Sources/streams/routes bind and reference-execute as ESM v8 at 4.125.0; generated values/responses bind as v7. CLI 3.41.0 renders through v7 only, with construct-specific Stage refusals. Consult released grammar rather than inventing syntax from decisions.
34
+ 26. Operations/systems and exact numbers remain unadmitted. Sources/streams/routes bind and reference-execute as ESM v8 at 4.125.0; generated values/responses bind as v7. CLI 3.46.1 renders through v7 only, with construct-specific Stage refusals. Consult released grammar rather than inventing syntax from decisions.
35
35
  27. Translate vs Automation is semantic: external facts become local facts in `Translate`; in-app event-to-event goes in `Automation`.
36
36
  28. Personas drive the board: a persona must list every policy on the path, including module-level `IsAuthenticated`.
37
37
  29. A sample's source check is not execution. Run selected admitted specifications through `screenplay test`/MCP; given==when clock still fires no scheduled occurrence.
@@ -46,7 +46,7 @@ exact numbers are documented in the grammar. Compiler syntax: `cheat-sheet.md`.
46
46
  37. Personas remain outside ESM bytes, but 4.127.0 specifications accept `given caller as <Persona>`: one authenticated deterministic policy witness, not every matching caller. Inspect the chosen `or` branch; use explicit callers when synthesis is refused.
47
47
  38. A rule that depends on stored state is `reads <View>` + `require <expr> message "..."` (stated intent; PLAY0268/0271 at binding are expected in design mode). The slice `description` must mark it NOT enforced in the model today (Screenplay#129/#209) and name the target: Arc `[ProtectedDecision]` + `DecisionRead<T>` (Arc v22.39.0 and later; available to gap-fill on Stage 4.51.3's Arc 22.50.5/Chronicle 19.32.0, not emitted protection), Chronicle DCB (`concurrency` scope), or a constraint where one fits. Forbidden: caller-supplied copies of state in `require`, boolean attestation inputs (`confirmsX == true`), rules hidden in `handler`/implementation-hint prose. An unguarded materialized read is unsafe for a protected decision.
48
48
 
49
- Current identity/compliance traps (v4.127.0 `identity.md`, `concepts.md`, `events.md`,
49
+ Identity/compliance traps checked at v4.127.0 (`identity.md`, `concepts.md`, `events.md`,
50
50
  `purposes.md`, `diagnostics.md`):
51
51
  - `$identity` built-ins alias `$context.identity`; declared detail reads are PLAY0268,
52
52
  while an identity block alone does not block readiness. `scoped to` is opaque,
@@ -28,7 +28,7 @@ V3 are read from the MCP server or from a render, V1 and V5 from the CLIs.
28
28
 
29
29
  | Tool | Command | Pass | Fail |
30
30
  | --- | --- | --- | --- |
31
- | Standalone 4.127.0 (preferred) | `screenplay <model-root> --warnaserror --no-color` | exit 0 and a nonzero compiled file count | exit 1 defects; exit 2 could not run/invalid arguments or input |
31
+ | Standalone 4.131.0 (preferred) | `screenplay <model-root> --warnaserror --no-color` | exit 0 and a nonzero compiled file count | exit 1 defects; exit 2 could not run/invalid arguments or input |
32
32
  | cratis (fallback) | `cratis screenplay validate <model-folder> --warnings-as-errors -o json-compact` | exit 0 | exit 5; exit 1 means missing path or no files |
33
33
 
34
34
  - Validate the complete application root, not an independently selected fragment.
@@ -85,7 +85,7 @@ never "specifications pass".
85
85
  `secret`, authorization, list queries, automations or rules to reach V3; record the
86
86
  slice and the code in the gap list.
87
87
  - A model is executable only on the compiler that bound it. V3 does not carry
88
- to render admission: CLI 3.41.0 passes up to ESM v7 to Stage, refuses newer
88
+ to render admission: CLI 3.46.1 passes up to ESM v7 to Stage, refuses newer
89
89
  models with CLI-RENDER-004, and its v7 corpus receives STAGE-ESM-028/029.
90
90
  The old 3.28.x/Stage 4.24.x probes remain historical in the subset references.
91
91
 
@@ -151,9 +151,9 @@ source change makes earlier verdicts stale.
151
151
 
152
152
  Historical corpus fences were checked with standalone 4.68.0 and CLI 3.28.2.
153
153
  Do not promote those results to current pins without rerunning. Check each changed
154
- complete fence with standalone 4.125.0 `--warnaserror`; run `screenplay test` for
154
+ complete fence with standalone 4.131.0 `--warnaserror`; run `screenplay test` for
155
155
  specification examples, and verify expected-diagnostic examples against their
156
- claimed codes. Where bundle compatibility matters, also check CLI 3.41.0.
156
+ claimed codes. Where bundle compatibility matters, also check CLI 3.46.1.
157
157
  The `// Needs the standalone screenplay compiler (ESM v6)` first-line marker belonged to cratis
158
158
  before 3.28.2, which could not validate those fences; no fence carries it now, and a
159
159
  checker that still skips marked fences under `cratis` skips nothing. Examples meant to execute are also opened through MCP and