@milehimikey/em 1.13.1 → 1.14.1
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/.claude/agents/em-critic.md +26 -0
- package/.claude/agents/em-implementer.md +34 -0
- package/.claude/agents/em-reviewer.md +31 -0
- package/.claude/agents/em-validator.md +27 -0
- package/.claude/skills/event-modeling/SKILL.md +50 -11
- package/.claude/skills/event-modeling-conform/SKILL.md +1 -1
- package/.claude/skills/event-modeling-design/SKILL.md +127 -18
- package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
- package/.claude/skills/event-modeling-engagement/SKILL.md +192 -0
- package/.claude/skills/event-modeling-engagement/reference/engagement.md +143 -0
- package/.claude/skills/event-modeling-implement/SKILL.md +1 -1
- package/.claude/skills/event-modeling-implement/reference/implement.md +38 -11
- package/.claude/skills/event-modeling-review/SKILL.md +2 -2
- package/.claude/skills/event-modeling-shared/reference/em-dsl.md +279 -189
- package/.claude/skills/event-modeling-shared/reference/operating-principles.md +61 -0
- package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +116 -5
- package/.claude/skills/event-modeling-shared/templates/constitution.md +18 -1
- package/.claude/skills/event-modeling-shared/templates/slice.md +64 -39
- package/.claude/skills/event-modeling-shared/templates/state.md +5 -1
- package/.claude-plugin/marketplace.json +14 -0
- package/README.md +25 -11
- package/dist/catalog/apiFirst.d.ts +28 -0
- package/dist/catalog/apiFirst.js +49 -0
- package/dist/catalog/apiFirst.js.map +1 -0
- package/dist/catalog/docJoin.d.ts +13 -0
- package/dist/catalog/docJoin.js +11 -0
- package/dist/catalog/docJoin.js.map +1 -1
- package/dist/catalog/docModelConsistencyValidate.js +44 -4
- package/dist/catalog/docModelConsistencyValidate.js.map +1 -1
- package/dist/catalog/invariantsValidate.d.ts +4 -0
- package/dist/catalog/invariantsValidate.js +102 -0
- package/dist/catalog/invariantsValidate.js.map +1 -0
- package/dist/catalog/scenarios.d.ts +15 -0
- package/dist/catalog/scenarios.js +97 -0
- package/dist/catalog/scenarios.js.map +1 -0
- package/dist/catalog/sliceDoc.d.ts +8 -0
- package/dist/catalog/sliceDoc.js +9 -0
- package/dist/catalog/sliceDoc.js.map +1 -1
- package/dist/catalog/sliceReadyValidate.d.ts +31 -4
- package/dist/catalog/sliceReadyValidate.js +66 -8
- package/dist/catalog/sliceReadyValidate.js.map +1 -1
- package/dist/catalog/sliceSections.d.ts +55 -0
- package/dist/catalog/sliceSections.js +317 -0
- package/dist/catalog/sliceSections.js.map +1 -0
- package/dist/cli/agentsMd.js +7 -1
- package/dist/cli/agentsMd.js.map +1 -1
- package/dist/cli/api.d.ts +90 -0
- package/dist/cli/api.js +318 -0
- package/dist/cli/api.js.map +1 -0
- package/dist/cli/ciInit.d.ts +82 -21
- package/dist/cli/ciInit.js +468 -64
- package/dist/cli/ciInit.js.map +1 -1
- package/dist/cli/conformScope.d.ts +28 -0
- package/dist/cli/conformScope.js +67 -0
- package/dist/cli/conformScope.js.map +1 -1
- package/dist/cli/coverage.d.ts +9 -0
- package/dist/cli/coverage.js +60 -8
- package/dist/cli/coverage.js.map +1 -1
- package/dist/cli/defer.d.ts +55 -0
- package/dist/cli/defer.js +244 -0
- package/dist/cli/defer.js.map +1 -0
- package/dist/cli/engagement.d.ts +210 -0
- package/dist/cli/engagement.js +444 -0
- package/dist/cli/engagement.js.map +1 -0
- package/dist/cli/engagementFile.d.ts +86 -0
- package/dist/cli/engagementFile.js +255 -0
- package/dist/cli/engagementFile.js.map +1 -0
- package/dist/cli/metrics.d.ts +10 -0
- package/dist/cli/metrics.js +49 -1
- package/dist/cli/metrics.js.map +1 -1
- package/dist/cli/pluginPin.d.ts +55 -0
- package/dist/cli/pluginPin.js +188 -0
- package/dist/cli/pluginPin.js.map +1 -0
- package/dist/cli/ratify.d.ts +27 -2
- package/dist/cli/ratify.js +112 -13
- package/dist/cli/ratify.js.map +1 -1
- package/dist/cli/reratify.d.ts +4 -2
- package/dist/cli/reratify.js +41 -16
- package/dist/cli/reratify.js.map +1 -1
- package/dist/cli/scopeInputs.d.ts +48 -0
- package/dist/cli/scopeInputs.js +176 -0
- package/dist/cli/scopeInputs.js.map +1 -0
- package/dist/cli/skillCheck.d.ts +15 -1
- package/dist/cli/skillCheck.js +22 -1
- package/dist/cli/skillCheck.js.map +1 -1
- package/dist/cli/skillDirs.d.ts +5 -0
- package/dist/cli/skillDirs.js +13 -1
- package/dist/cli/skillDirs.js.map +1 -1
- package/dist/cli/skillSync.d.ts +4 -0
- package/dist/cli/skillSync.js +23 -0
- package/dist/cli/skillSync.js.map +1 -1
- package/dist/cli/sliceNew.d.ts +11 -7
- package/dist/cli/sliceNew.js +91 -18
- package/dist/cli/sliceNew.js.map +1 -1
- package/dist/cli/sliceSync.d.ts +50 -0
- package/dist/cli/sliceSync.js +170 -0
- package/dist/cli/sliceSync.js.map +1 -0
- package/dist/cli/status.d.ts +24 -1
- package/dist/cli/status.js +20 -1
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/systemInputs.d.ts +53 -10
- package/dist/cli/systemInputs.js +186 -11
- package/dist/cli/systemInputs.js.map +1 -1
- package/dist/cli/upgrade.d.ts +16 -3
- package/dist/cli/upgrade.js +366 -30
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli/usageLog.d.ts +4 -2
- package/dist/cli/usageLog.js +4 -2
- package/dist/cli/usageLog.js.map +1 -1
- package/dist/cli.js +599 -94
- package/dist/cli.js.map +1 -1
- package/dist/emit/api.d.ts +29 -0
- package/dist/emit/api.js +220 -0
- package/dist/emit/api.js.map +1 -0
- package/dist/emit/apiCheckJson.d.ts +3 -0
- package/dist/emit/apiCheckJson.js +21 -0
- package/dist/emit/apiCheckJson.js.map +1 -0
- package/dist/emit/codeownersJson.d.ts +3 -0
- package/dist/emit/codeownersJson.js +19 -0
- package/dist/emit/codeownersJson.js.map +1 -0
- package/dist/emit/diffJson.d.ts +1 -1
- package/dist/emit/diffJson.js +8 -1
- package/dist/emit/diffJson.js.map +1 -1
- package/dist/emit/engagementJson.d.ts +8 -0
- package/dist/emit/engagementJson.js +46 -0
- package/dist/emit/engagementJson.js.map +1 -0
- package/dist/emit/glossaryJson.d.ts +1 -1
- package/dist/emit/glossaryJson.js +4 -1
- package/dist/emit/glossaryJson.js.map +1 -1
- package/dist/emit/json.d.ts +17 -1
- package/dist/emit/json.js +30 -1
- package/dist/emit/json.js.map +1 -1
- package/dist/emit/metricsJson.d.ts +1 -1
- package/dist/emit/metricsJson.js +4 -1
- package/dist/emit/metricsJson.js.map +1 -1
- package/dist/emit/queryJson.d.ts +1 -1
- package/dist/emit/queryJson.js +7 -1
- package/dist/emit/queryJson.js.map +1 -1
- package/dist/emit/scopeJson.d.ts +12 -0
- package/dist/emit/scopeJson.js +26 -0
- package/dist/emit/scopeJson.js.map +1 -0
- package/dist/emit/skillCheckJson.d.ts +3 -2
- package/dist/emit/skillCheckJson.js +10 -2
- package/dist/emit/skillCheckJson.js.map +1 -1
- package/dist/emit/statusJson.d.ts +1 -1
- package/dist/emit/statusJson.js +15 -1
- package/dist/emit/statusJson.js.map +1 -1
- package/dist/emit/systemJson.d.ts +15 -8
- package/dist/emit/systemJson.js +28 -13
- package/dist/emit/systemJson.js.map +1 -1
- package/dist/emit/validateJson.d.ts +3 -3
- package/dist/emit/validateJson.js +10 -4
- package/dist/emit/validateJson.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.js +163 -31
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/diff.d.ts +4 -1
- package/dist/model/diff.js +44 -8
- package/dist/model/diff.js.map +1 -1
- package/dist/model/glossary.d.ts +2 -0
- package/dist/model/glossary.js +1 -0
- package/dist/model/glossary.js.map +1 -1
- package/dist/model/model.d.ts +55 -2
- package/dist/model/model.js +57 -0
- package/dist/model/model.js.map +1 -1
- package/dist/model/qualifiedRef.d.ts +18 -0
- package/dist/model/qualifiedRef.js +26 -0
- package/dist/model/qualifiedRef.js.map +1 -1
- package/dist/model/queryIndex.d.ts +9 -1
- package/dist/model/queryIndex.js +18 -2
- package/dist/model/queryIndex.js.map +1 -1
- package/dist/model/rules.d.ts +143 -2
- package/dist/model/rules.js +162 -3
- package/dist/model/rules.js.map +1 -1
- package/dist/model/validate.d.ts +40 -0
- package/dist/model/validate.js +147 -1
- package/dist/model/validate.js.map +1 -1
- package/dist/parser/ast.d.ts +31 -3
- package/dist/parser/parser.js +148 -14
- package/dist/parser/parser.js.map +1 -1
- package/dist/query/format.js +1 -1
- package/dist/query/format.js.map +1 -1
- package/dist/query/verbs.d.ts +6 -0
- package/dist/query/verbs.js +6 -2
- package/dist/query/verbs.js.map +1 -1
- package/dist/system/adaptation.d.ts +14 -0
- package/dist/system/adaptation.js +49 -0
- package/dist/system/adaptation.js.map +1 -0
- package/dist/system/codeowners.d.ts +77 -0
- package/dist/system/codeowners.js +242 -0
- package/dist/system/codeowners.js.map +1 -0
- package/dist/system/manifest.d.ts +10 -5
- package/dist/system/manifest.js +54 -26
- package/dist/system/manifest.js.map +1 -1
- package/dist/system/migrateManifest.d.ts +28 -0
- package/dist/system/migrateManifest.js +155 -0
- package/dist/system/migrateManifest.js.map +1 -0
- package/dist/system/scope.d.ts +46 -0
- package/dist/system/scope.js +132 -0
- package/dist/system/scope.js.map +1 -0
- package/dist/system/verify.d.ts +50 -13
- package/dist/system/verify.js +179 -58
- package/dist/system/verify.js.map +1 -1
- package/dist/templates.d.ts +2 -2
- package/dist/templates.js +23 -2
- package/dist/templates.js.map +1 -1
- package/package.json +5 -2
- package/plugin/.claude-plugin/plugin.json +18 -0
- package/plugin/agents/em-critic.md +27 -0
- package/plugin/agents/em-implementer.md +35 -0
- package/plugin/agents/em-reviewer.md +32 -0
- package/plugin/agents/em-validator.md +28 -0
- package/plugin/shared/reference/em-dsl.md +871 -0
- package/plugin/shared/reference/methodology.md +329 -0
- package/plugin/shared/reference/operating-principles.md +222 -0
- package/plugin/shared/reference/slice-doc-schema.md +574 -0
- package/plugin/shared/templates/conformance-report.md +85 -0
- package/plugin/shared/templates/constitution.md +136 -0
- package/plugin/shared/templates/model-readme.md +46 -0
- package/plugin/shared/templates/slice.md +251 -0
- package/plugin/shared/templates/state.md +77 -0
- package/plugin/skills/conform/SKILL.md +93 -0
- package/plugin/skills/conform/reference/conform.md +428 -0
- package/plugin/skills/design/SKILL.md +298 -0
- package/plugin/skills/discover/SKILL.md +90 -0
- package/plugin/skills/discover/reference/extract.md +147 -0
- package/plugin/skills/engagement/SKILL.md +193 -0
- package/plugin/skills/engagement/reference/engagement.md +144 -0
- package/plugin/skills/event-modeling/SKILL.md +132 -0
- package/plugin/skills/implement/SKILL.md +61 -0
- package/plugin/skills/implement/reference/implement.md +439 -0
- package/plugin/skills/review/SKILL.md +74 -0
- package/dist/emit/typespec.d.ts +0 -26
- package/dist/emit/typespec.js +0 -356
- package/dist/emit/typespec.js.map +0 -1
package/dist/model/rules.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export interface RuleDef {
|
|
|
13
13
|
usageCategory: string;
|
|
14
14
|
/** docs/validation.md H3 anchor this rule nests under, when one exists and covers >1 rule. */
|
|
15
15
|
docAnchor?: string;
|
|
16
|
-
/** True for the
|
|
16
|
+
/** True for the 7 `--slice-ready`-only codes (src/catalog/sliceReadyValidate.ts, MIL-87). */
|
|
17
17
|
optIn?: true;
|
|
18
18
|
}
|
|
19
19
|
export declare const RULES: {
|
|
@@ -214,6 +214,13 @@ export declare const RULES: {
|
|
|
214
214
|
readonly fix: "Break the cycle, or route the self/mutual reference through an array.";
|
|
215
215
|
readonly usageCategory: "type cycle";
|
|
216
216
|
};
|
|
217
|
+
readonly "public-field-type-unresolved": {
|
|
218
|
+
readonly severity: "error";
|
|
219
|
+
readonly title: "Public field type unresolved";
|
|
220
|
+
readonly fix: "Give the field a type from the public type table (string, text, int, long, decimal, boolean, uuid, date, datetime, duration, bytes), `X[]` of one, or a declared `type` — or drop `public`.";
|
|
221
|
+
readonly usageCategory: "public field type unresolved";
|
|
222
|
+
readonly docAnchor: "strict-public-types";
|
|
223
|
+
};
|
|
217
224
|
readonly "lineage-ref-malformed": {
|
|
218
225
|
readonly severity: "error";
|
|
219
226
|
readonly title: "Malformed lineage ref";
|
|
@@ -317,6 +324,13 @@ export declare const RULES: {
|
|
|
317
324
|
readonly usageCategory: "doc field table disagrees with model";
|
|
318
325
|
readonly docAnchor: "doc-model-consistency";
|
|
319
326
|
};
|
|
327
|
+
readonly "slice-doc/structured-section-malformed": {
|
|
328
|
+
readonly severity: "warning";
|
|
329
|
+
readonly title: "Malformed structured section";
|
|
330
|
+
readonly fix: "Balance the `<!-- GENERATED:em-slice-…:start -->`/`:end -->` markers (re-create the doc with `em slice new --force` if they are lost), restore the template's table header and run `em slice sync`, and give every `### Scenario:` block a Given, When and Then bullet.";
|
|
331
|
+
readonly usageCategory: "slice doc structured section malformed";
|
|
332
|
+
readonly docAnchor: "structured-sections";
|
|
333
|
+
};
|
|
320
334
|
readonly "orphaned-slice-doc": {
|
|
321
335
|
readonly severity: "warning";
|
|
322
336
|
readonly title: "Orphaned slice doc";
|
|
@@ -360,10 +374,22 @@ export declare const RULES: {
|
|
|
360
374
|
readonly fix: "Give each model its own directory (see docs/cli.md, \"Multi-model projects\").";
|
|
361
375
|
readonly usageCategory: "colliding slice doc path across models";
|
|
362
376
|
};
|
|
377
|
+
readonly "public-name-not-unique": {
|
|
378
|
+
readonly severity: "error";
|
|
379
|
+
readonly title: "Two public elements of one kind share a name";
|
|
380
|
+
readonly fix: "Rename one of them (or drop `public` from one): a consumer's `consumes <model>:<kind>.<slug>` must name exactly one element.";
|
|
381
|
+
readonly usageCategory: "public name not unique";
|
|
382
|
+
};
|
|
383
|
+
readonly "owner-not-a-handle": {
|
|
384
|
+
readonly severity: "warning";
|
|
385
|
+
readonly title: "Model owner is not a CODEOWNERS handle";
|
|
386
|
+
readonly fix: "Write the owner as a GitHub user (`@alice`), a team (`@org/team`), or an email address, so `em system codeowners` can route review to it.";
|
|
387
|
+
readonly usageCategory: "owner not a handle";
|
|
388
|
+
};
|
|
363
389
|
readonly "system-manifest-invalid": {
|
|
364
390
|
readonly severity: "error";
|
|
365
391
|
readonly title: "Seam manifest invalid";
|
|
366
|
-
readonly fix: "Fix the manifest:
|
|
392
|
+
readonly fix: "Fix the manifest: `systemSchemaVersion: \"2.0\"`, `models:` with a readable `source` per model, and nothing else (`seams:`/`owner:` moved into the models — run `em upgrade`).";
|
|
367
393
|
readonly usageCategory: "seam manifest invalid";
|
|
368
394
|
readonly docAnchor: "seam-manifest";
|
|
369
395
|
};
|
|
@@ -374,6 +400,34 @@ export declare const RULES: {
|
|
|
374
400
|
readonly usageCategory: "seam manifest model key mismatch";
|
|
375
401
|
readonly docAnchor: "seam-manifest";
|
|
376
402
|
};
|
|
403
|
+
readonly "system-manifest-outdated": {
|
|
404
|
+
readonly severity: "warning";
|
|
405
|
+
readonly title: "Seam manifest is schema 1.0";
|
|
406
|
+
readonly fix: "Run `em upgrade <model>.em --apply` once: it moves `seams:` into `consumes` clauses and `owner:` onto each model header, and rewrites the manifest to 2.0.";
|
|
407
|
+
readonly usageCategory: "seam manifest outdated";
|
|
408
|
+
readonly docAnchor: "seam-manifest";
|
|
409
|
+
};
|
|
410
|
+
readonly "consumes-unknown-model": {
|
|
411
|
+
readonly severity: "error";
|
|
412
|
+
readonly title: "`consumes` names a model the system does not have";
|
|
413
|
+
readonly fix: "Fix the model key (the kebab-slug of the producer's `model \"Name\"`), or add that model to the system.";
|
|
414
|
+
readonly usageCategory: "consumes unknown model";
|
|
415
|
+
readonly docAnchor: "seam-manifest";
|
|
416
|
+
};
|
|
417
|
+
readonly "consumes-unknown-element": {
|
|
418
|
+
readonly severity: "error";
|
|
419
|
+
readonly title: "`consumes` names no public element of that model";
|
|
420
|
+
readonly fix: "Point the ref at an element the producer marks `public` (`em export` lists them), or ask the producer to publish it.";
|
|
421
|
+
readonly usageCategory: "consumes unknown element";
|
|
422
|
+
readonly docAnchor: "seam-manifest";
|
|
423
|
+
};
|
|
424
|
+
readonly "consumer-not-adapted": {
|
|
425
|
+
readonly severity: "error";
|
|
426
|
+
readonly title: "Consuming translation no longer matches the producer's public element";
|
|
427
|
+
readonly fix: "Update the translation's field block to the producer's current fields (a renamed field names its new name in the message). Additive producer changes never raise this — consumers tolerate unknown fields.";
|
|
428
|
+
readonly usageCategory: "consumer not adapted";
|
|
429
|
+
readonly docAnchor: "seam-manifest";
|
|
430
|
+
};
|
|
377
431
|
readonly "seam-endpoint-unresolved": {
|
|
378
432
|
readonly severity: "error";
|
|
379
433
|
readonly title: "Seam endpoint does not resolve";
|
|
@@ -423,6 +477,34 @@ export declare const RULES: {
|
|
|
423
477
|
readonly usageCategory: "undeclared seam candidate";
|
|
424
478
|
readonly docAnchor: "seam-manifest";
|
|
425
479
|
};
|
|
480
|
+
readonly "seam-crossing": {
|
|
481
|
+
readonly severity: "error";
|
|
482
|
+
readonly title: "Change set alters a contract and its consumer together";
|
|
483
|
+
readonly fix: "Split the change set: land the producer's public-surface change first, then adapt the consuming model in a later change. Review on the contract file is the only override.";
|
|
484
|
+
readonly usageCategory: "seam crossing";
|
|
485
|
+
readonly docAnchor: "seam-scope";
|
|
486
|
+
};
|
|
487
|
+
readonly "seam-crossing-greenfield": {
|
|
488
|
+
readonly severity: "warning";
|
|
489
|
+
readonly title: "New public surface lands with its first consumer";
|
|
490
|
+
readonly fix: "Nothing to fix: a public element no consumer was bound to at the base revision is new surface, not a crossing. Later changes to it are crossings.";
|
|
491
|
+
readonly usageCategory: "seam crossing greenfield";
|
|
492
|
+
readonly docAnchor: "seam-scope";
|
|
493
|
+
};
|
|
494
|
+
readonly "multi-model-change-set": {
|
|
495
|
+
readonly severity: "warning";
|
|
496
|
+
readonly title: "Change set touches more than one model";
|
|
497
|
+
readonly fix: "Prefer one model per change set. Unrelated models in one change set are fine; models joined by a seam are not, once a contract changes.";
|
|
498
|
+
readonly usageCategory: "multi-model change set";
|
|
499
|
+
readonly docAnchor: "seam-scope";
|
|
500
|
+
};
|
|
501
|
+
readonly "code-spans-seam": {
|
|
502
|
+
readonly severity: "warning";
|
|
503
|
+
readonly title: "Code change spans a seam";
|
|
504
|
+
readonly fix: "Keep one code module per model and change the two sides of a seam in separate change sets.";
|
|
505
|
+
readonly usageCategory: "code spans seam";
|
|
506
|
+
readonly docAnchor: "seam-scope";
|
|
507
|
+
};
|
|
426
508
|
readonly "model-version-stale": {
|
|
427
509
|
readonly severity: "warning";
|
|
428
510
|
readonly title: "Model version stale";
|
|
@@ -430,6 +512,41 @@ export declare const RULES: {
|
|
|
430
512
|
readonly usageCategory: "model version stale";
|
|
431
513
|
readonly docAnchor: "model-version-stale";
|
|
432
514
|
};
|
|
515
|
+
readonly "invariants/malformed-id": {
|
|
516
|
+
readonly severity: "error";
|
|
517
|
+
readonly title: "Malformed invariant ID";
|
|
518
|
+
readonly fix: "Rename the ID to the `INV-<MNEMONIC>-<n>` shape, e.g. `INV-ORD-1` (2-4 uppercase letters/digits, then a number).";
|
|
519
|
+
readonly usageCategory: "invariant id malformed";
|
|
520
|
+
readonly docAnchor: "invariants";
|
|
521
|
+
};
|
|
522
|
+
readonly "invariants/duplicate-id": {
|
|
523
|
+
readonly severity: "error";
|
|
524
|
+
readonly title: "Duplicate invariant ID";
|
|
525
|
+
readonly fix: "Give each model-declared invariant its own ID — a rule is declared once, on the element it guards.";
|
|
526
|
+
readonly usageCategory: "invariant id declared twice";
|
|
527
|
+
readonly docAnchor: "invariants";
|
|
528
|
+
};
|
|
529
|
+
readonly "invariants/public-command-without-invariants": {
|
|
530
|
+
readonly severity: "warning";
|
|
531
|
+
readonly title: "Public command declares no invariants";
|
|
532
|
+
readonly fix: "Add an `invariant INV-<MNEMONIC>-<n> \"rule\"` line after the command, or declare its rules in the slice doc's Invariants section.";
|
|
533
|
+
readonly usageCategory: "public command without invariants";
|
|
534
|
+
readonly docAnchor: "invariants";
|
|
535
|
+
};
|
|
536
|
+
readonly "invariants/doc-cites-undeclared": {
|
|
537
|
+
readonly severity: "warning";
|
|
538
|
+
readonly title: "Slice doc cites an undeclared invariant";
|
|
539
|
+
readonly fix: "Declare the ID in the model (or in a slice doc's Invariants section), or fix the citation.";
|
|
540
|
+
readonly usageCategory: "slice doc cites undeclared invariant";
|
|
541
|
+
readonly docAnchor: "invariants";
|
|
542
|
+
};
|
|
543
|
+
readonly "invariants/declared-in-both": {
|
|
544
|
+
readonly severity: "warning";
|
|
545
|
+
readonly title: "Invariant declared in the model and in a slice doc";
|
|
546
|
+
readonly fix: "Keep the model's `invariant` line; in the doc, cite the ID and elaborate instead of restating it as a `**INV-…:**` rule.";
|
|
547
|
+
readonly usageCategory: "invariant declared in model and doc";
|
|
548
|
+
readonly docAnchor: "invariants";
|
|
549
|
+
};
|
|
433
550
|
readonly "slice-ready-unknown-slice": {
|
|
434
551
|
readonly severity: "error";
|
|
435
552
|
readonly title: "Unknown --slice-ready key";
|
|
@@ -462,6 +579,30 @@ export declare const RULES: {
|
|
|
462
579
|
readonly docAnchor: "slice-readiness";
|
|
463
580
|
readonly optIn: true;
|
|
464
581
|
};
|
|
582
|
+
readonly "slice-ready-not-ratified": {
|
|
583
|
+
readonly severity: "error";
|
|
584
|
+
readonly title: "Not ratified";
|
|
585
|
+
readonly fix: "Record the sign-off with `em slice ratify --by <name>`.";
|
|
586
|
+
readonly usageCategory: "slice-ready slice not ratified";
|
|
587
|
+
readonly docAnchor: "slice-readiness";
|
|
588
|
+
readonly optIn: true;
|
|
589
|
+
};
|
|
590
|
+
readonly "slice-ready-contract-stale": {
|
|
591
|
+
readonly severity: "error";
|
|
592
|
+
readonly title: "Contract missing or stale";
|
|
593
|
+
readonly fix: "Regenerate the model's contract with `em api generate <model>` and commit it.";
|
|
594
|
+
readonly usageCategory: "slice-ready public slice contract not current";
|
|
595
|
+
readonly docAnchor: "slice-readiness";
|
|
596
|
+
readonly optIn: true;
|
|
597
|
+
};
|
|
598
|
+
readonly "slice-ready-structured-section-malformed": {
|
|
599
|
+
readonly severity: "error";
|
|
600
|
+
readonly title: "Structured section malformed";
|
|
601
|
+
readonly fix: "Fix the generated regions / `### Scenario:` blocks `slice-doc/structured-section-malformed` names, then re-run the gate.";
|
|
602
|
+
readonly usageCategory: "slice-ready structured section malformed";
|
|
603
|
+
readonly docAnchor: "slice-readiness";
|
|
604
|
+
readonly optIn: true;
|
|
605
|
+
};
|
|
465
606
|
};
|
|
466
607
|
export type RuleCode = keyof typeof RULES;
|
|
467
608
|
/** Build one diagnostic, severity looked up from the registry — the per-instance `message`
|
package/dist/model/rules.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// docs/usage-data.md's Categories tables the same way (MIL-97) — the fixed vocabulary a
|
|
14
14
|
// `.event-modeling.md` Usage log line picks from, so it can't drift from RULES either.
|
|
15
15
|
//
|
|
16
|
-
// `optIn: true` marks the
|
|
16
|
+
// `optIn: true` marks the 7 codes `em validate --slice-ready <key>` adds (MIL-87) — never part
|
|
17
17
|
// of a plain `em validate` run, excluded from the generated base rule reference (but still
|
|
18
18
|
// included in the usage-log Categories tables — a session can hit them too).
|
|
19
19
|
export const RULES = {
|
|
@@ -214,6 +214,13 @@ export const RULES = {
|
|
|
214
214
|
fix: "Break the cycle, or route the self/mutual reference through an array.",
|
|
215
215
|
usageCategory: "type cycle",
|
|
216
216
|
},
|
|
217
|
+
"public-field-type-unresolved": {
|
|
218
|
+
severity: "error",
|
|
219
|
+
title: "Public field type unresolved",
|
|
220
|
+
fix: "Give the field a type from the public type table (string, text, int, long, decimal, boolean, uuid, date, datetime, duration, bytes), `X[]` of one, or a declared `type` — or drop `public`.",
|
|
221
|
+
usageCategory: "public field type unresolved",
|
|
222
|
+
docAnchor: "strict-public-types",
|
|
223
|
+
},
|
|
217
224
|
"lineage-ref-malformed": {
|
|
218
225
|
severity: "error",
|
|
219
226
|
title: "Malformed lineage ref",
|
|
@@ -317,6 +324,13 @@ export const RULES = {
|
|
|
317
324
|
usageCategory: "doc field table disagrees with model",
|
|
318
325
|
docAnchor: "doc-model-consistency",
|
|
319
326
|
},
|
|
327
|
+
"slice-doc/structured-section-malformed": {
|
|
328
|
+
severity: "warning",
|
|
329
|
+
title: "Malformed structured section",
|
|
330
|
+
fix: "Balance the `<!-- GENERATED:em-slice-…:start -->`/`:end -->` markers (re-create the doc with `em slice new --force` if they are lost), restore the template's table header and run `em slice sync`, and give every `### Scenario:` block a Given, When and Then bullet.",
|
|
331
|
+
usageCategory: "slice doc structured section malformed",
|
|
332
|
+
docAnchor: "structured-sections",
|
|
333
|
+
},
|
|
320
334
|
"orphaned-slice-doc": {
|
|
321
335
|
severity: "warning",
|
|
322
336
|
title: "Orphaned slice doc",
|
|
@@ -372,7 +386,27 @@ export const RULES = {
|
|
|
372
386
|
fix: "Give each model its own directory (see docs/cli.md, \"Multi-model projects\").",
|
|
373
387
|
usageCategory: "colliding slice doc path across models",
|
|
374
388
|
},
|
|
375
|
-
// MIL-
|
|
389
|
+
// MIL-235: the model-local half of `consumes` — a contract ref (`<modelKey>:<kind>.<slug>`)
|
|
390
|
+
// names a public element by kind + slug with no slice segment, so two public elements of one
|
|
391
|
+
// kind whose names slug alike would make every consumer's ref ambiguous. Raised by `em
|
|
392
|
+
// validate` (model/validate.ts) — it needs nothing outside this model.
|
|
393
|
+
"public-name-not-unique": {
|
|
394
|
+
severity: "error",
|
|
395
|
+
title: "Two public elements of one kind share a name",
|
|
396
|
+
fix: "Rename one of them (or drop `public` from one): a consumer's `consumes <model>:<kind>.<slug>` must name exactly one element.",
|
|
397
|
+
usageCategory: "public name not unique",
|
|
398
|
+
},
|
|
399
|
+
// MIL-234: an `owner "..."` entry on the model header that is not a CODEOWNERS handle. A
|
|
400
|
+
// warning, not an error: MIL-235's manifest migration writes the 1.0 manifest's free-text
|
|
401
|
+
// owner onto the header as-is, and a 1.13 estate must keep validating clean. `em system
|
|
402
|
+
// codeowners` skips such an owner (it can only route a handle or an email).
|
|
403
|
+
"owner-not-a-handle": {
|
|
404
|
+
severity: "warning",
|
|
405
|
+
title: "Model owner is not a CODEOWNERS handle",
|
|
406
|
+
fix: "Write the owner as a GitHub user (`@alice`), a team (`@org/team`), or an email address, so `em system codeowners` can route review to it.",
|
|
407
|
+
usageCategory: "owner not a handle",
|
|
408
|
+
},
|
|
409
|
+
// MIL-194: the codes `em system [<manifest>|<dir>]` raises while verifying a seam manifest
|
|
376
410
|
// (docs/cli.md "em system") against each model's export document — the cross-model half of
|
|
377
411
|
// "both ends of a flow": every `public` event/view needs a declared reader somewhere in the
|
|
378
412
|
// system, every externally-fed reaction needs a declared producer. Raised by
|
|
@@ -383,7 +417,7 @@ export const RULES = {
|
|
|
383
417
|
"system-manifest-invalid": {
|
|
384
418
|
severity: "error",
|
|
385
419
|
title: "Seam manifest invalid",
|
|
386
|
-
fix: "Fix the manifest:
|
|
420
|
+
fix: "Fix the manifest: `systemSchemaVersion: \"2.0\"`, `models:` with a readable `source` per model, and nothing else (`seams:`/`owner:` moved into the models — run `em upgrade`).",
|
|
387
421
|
usageCategory: "seam manifest invalid",
|
|
388
422
|
docAnchor: "seam-manifest",
|
|
389
423
|
},
|
|
@@ -394,6 +428,38 @@ export const RULES = {
|
|
|
394
428
|
usageCategory: "seam manifest model key mismatch",
|
|
395
429
|
docAnchor: "seam-manifest",
|
|
396
430
|
},
|
|
431
|
+
// MIL-235: a 1.0 manifest (seams + owners in system.yaml) still verifies, with this warning.
|
|
432
|
+
"system-manifest-outdated": {
|
|
433
|
+
severity: "warning",
|
|
434
|
+
title: "Seam manifest is schema 1.0",
|
|
435
|
+
fix: "Run `em upgrade <model>.em --apply` once: it moves `seams:` into `consumes` clauses and `owner:` onto each model header, and rewrites the manifest to 2.0.",
|
|
436
|
+
usageCategory: "seam manifest outdated",
|
|
437
|
+
docAnchor: "seam-manifest",
|
|
438
|
+
},
|
|
439
|
+
// MIL-235: a translation's `consumes` ref, resolved against the loaded models' exports.
|
|
440
|
+
"consumes-unknown-model": {
|
|
441
|
+
severity: "error",
|
|
442
|
+
title: "`consumes` names a model the system does not have",
|
|
443
|
+
fix: "Fix the model key (the kebab-slug of the producer's `model \"Name\"`), or add that model to the system.",
|
|
444
|
+
usageCategory: "consumes unknown model",
|
|
445
|
+
docAnchor: "seam-manifest",
|
|
446
|
+
},
|
|
447
|
+
"consumes-unknown-element": {
|
|
448
|
+
severity: "error",
|
|
449
|
+
title: "`consumes` names no public element of that model",
|
|
450
|
+
fix: "Point the ref at an element the producer marks `public` (`em export` lists them), or ask the producer to publish it.",
|
|
451
|
+
usageCategory: "consumes unknown element",
|
|
452
|
+
docAnchor: "seam-manifest",
|
|
453
|
+
},
|
|
454
|
+
// MIL-239: the consumer-adaptation check — a `consumes` binding whose consuming translation
|
|
455
|
+
// still declares a field the producer's public element no longer has (or types differently).
|
|
456
|
+
"consumer-not-adapted": {
|
|
457
|
+
severity: "error",
|
|
458
|
+
title: "Consuming translation no longer matches the producer's public element",
|
|
459
|
+
fix: "Update the translation's field block to the producer's current fields (a renamed field names its new name in the message). Additive producer changes never raise this — consumers tolerate unknown fields.",
|
|
460
|
+
usageCategory: "consumer not adapted",
|
|
461
|
+
docAnchor: "seam-manifest",
|
|
462
|
+
},
|
|
397
463
|
"seam-endpoint-unresolved": {
|
|
398
464
|
severity: "error",
|
|
399
465
|
title: "Seam endpoint does not resolve",
|
|
@@ -443,6 +509,35 @@ export const RULES = {
|
|
|
443
509
|
usageCategory: "undeclared seam candidate",
|
|
444
510
|
docAnchor: "seam-manifest",
|
|
445
511
|
},
|
|
512
|
+
// MIL-240: raised only by `em system scope` (a change-set check over git), never by `em validate`.
|
|
513
|
+
"seam-crossing": {
|
|
514
|
+
severity: "error",
|
|
515
|
+
title: "Change set alters a contract and its consumer together",
|
|
516
|
+
fix: "Split the change set: land the producer's public-surface change first, then adapt the consuming model in a later change. Review on the contract file is the only override.",
|
|
517
|
+
usageCategory: "seam crossing",
|
|
518
|
+
docAnchor: "seam-scope",
|
|
519
|
+
},
|
|
520
|
+
"seam-crossing-greenfield": {
|
|
521
|
+
severity: "warning",
|
|
522
|
+
title: "New public surface lands with its first consumer",
|
|
523
|
+
fix: "Nothing to fix: a public element no consumer was bound to at the base revision is new surface, not a crossing. Later changes to it are crossings.",
|
|
524
|
+
usageCategory: "seam crossing greenfield",
|
|
525
|
+
docAnchor: "seam-scope",
|
|
526
|
+
},
|
|
527
|
+
"multi-model-change-set": {
|
|
528
|
+
severity: "warning",
|
|
529
|
+
title: "Change set touches more than one model",
|
|
530
|
+
fix: "Prefer one model per change set. Unrelated models in one change set are fine; models joined by a seam are not, once a contract changes.",
|
|
531
|
+
usageCategory: "multi-model change set",
|
|
532
|
+
docAnchor: "seam-scope",
|
|
533
|
+
},
|
|
534
|
+
"code-spans-seam": {
|
|
535
|
+
severity: "warning",
|
|
536
|
+
title: "Code change spans a seam",
|
|
537
|
+
fix: "Keep one code module per model and change the two sides of a seam in separate change sets.",
|
|
538
|
+
usageCategory: "code spans seam",
|
|
539
|
+
docAnchor: "seam-scope",
|
|
540
|
+
},
|
|
446
541
|
// MIL-218: the model-level counterpart to `em slice conform`'s per-slice certification — warns
|
|
447
542
|
// when the `.em` content hash or the slice-version vector has moved since the last `em model
|
|
448
543
|
// version bump` (src/catalog/modelVersionValidate.ts, modelVersion.ts's `modelVersionDrift`
|
|
@@ -455,6 +550,46 @@ export const RULES = {
|
|
|
455
550
|
usageCategory: "model version stale",
|
|
456
551
|
docAnchor: "model-version-stale",
|
|
457
552
|
},
|
|
553
|
+
// MIL-265: model-declared invariants (`invariant INV-<MNEMONIC>-<n> "rule"` after a command or
|
|
554
|
+
// event). The two ID errors are model-only (model/validate.ts) and can only fire on a model that
|
|
555
|
+
// has an `invariant` line; the three advisories compare the model with the slice docs'
|
|
556
|
+
// Invariants sections (catalog/invariantsValidate.ts). `declared-in-both` is the "hint" the
|
|
557
|
+
// ticket names — `Diagnostic` has no severity below warning, so it is a warning.
|
|
558
|
+
"invariants/malformed-id": {
|
|
559
|
+
severity: "error",
|
|
560
|
+
title: "Malformed invariant ID",
|
|
561
|
+
fix: "Rename the ID to the `INV-<MNEMONIC>-<n>` shape, e.g. `INV-ORD-1` (2-4 uppercase letters/digits, then a number).",
|
|
562
|
+
usageCategory: "invariant id malformed",
|
|
563
|
+
docAnchor: "invariants",
|
|
564
|
+
},
|
|
565
|
+
"invariants/duplicate-id": {
|
|
566
|
+
severity: "error",
|
|
567
|
+
title: "Duplicate invariant ID",
|
|
568
|
+
fix: "Give each model-declared invariant its own ID — a rule is declared once, on the element it guards.",
|
|
569
|
+
usageCategory: "invariant id declared twice",
|
|
570
|
+
docAnchor: "invariants",
|
|
571
|
+
},
|
|
572
|
+
"invariants/public-command-without-invariants": {
|
|
573
|
+
severity: "warning",
|
|
574
|
+
title: "Public command declares no invariants",
|
|
575
|
+
fix: "Add an `invariant INV-<MNEMONIC>-<n> \"rule\"` line after the command, or declare its rules in the slice doc's Invariants section.",
|
|
576
|
+
usageCategory: "public command without invariants",
|
|
577
|
+
docAnchor: "invariants",
|
|
578
|
+
},
|
|
579
|
+
"invariants/doc-cites-undeclared": {
|
|
580
|
+
severity: "warning",
|
|
581
|
+
title: "Slice doc cites an undeclared invariant",
|
|
582
|
+
fix: "Declare the ID in the model (or in a slice doc's Invariants section), or fix the citation.",
|
|
583
|
+
usageCategory: "slice doc cites undeclared invariant",
|
|
584
|
+
docAnchor: "invariants",
|
|
585
|
+
},
|
|
586
|
+
"invariants/declared-in-both": {
|
|
587
|
+
severity: "warning",
|
|
588
|
+
title: "Invariant declared in the model and in a slice doc",
|
|
589
|
+
fix: "Keep the model's `invariant` line; in the doc, cite the ID and elaborate instead of restating it as a `**INV-…:**` rule.",
|
|
590
|
+
usageCategory: "invariant declared in model and doc",
|
|
591
|
+
docAnchor: "invariants",
|
|
592
|
+
},
|
|
458
593
|
"slice-ready-unknown-slice": {
|
|
459
594
|
severity: "error",
|
|
460
595
|
title: "Unknown --slice-ready key",
|
|
@@ -487,6 +622,30 @@ export const RULES = {
|
|
|
487
622
|
docAnchor: "slice-readiness",
|
|
488
623
|
optIn: true,
|
|
489
624
|
},
|
|
625
|
+
"slice-ready-not-ratified": {
|
|
626
|
+
severity: "error",
|
|
627
|
+
title: "Not ratified",
|
|
628
|
+
fix: "Record the sign-off with `em slice ratify --by <name>`.",
|
|
629
|
+
usageCategory: "slice-ready slice not ratified",
|
|
630
|
+
docAnchor: "slice-readiness",
|
|
631
|
+
optIn: true,
|
|
632
|
+
},
|
|
633
|
+
"slice-ready-contract-stale": {
|
|
634
|
+
severity: "error",
|
|
635
|
+
title: "Contract missing or stale",
|
|
636
|
+
fix: "Regenerate the model's contract with `em api generate <model>` and commit it.",
|
|
637
|
+
usageCategory: "slice-ready public slice contract not current",
|
|
638
|
+
docAnchor: "slice-readiness",
|
|
639
|
+
optIn: true,
|
|
640
|
+
},
|
|
641
|
+
"slice-ready-structured-section-malformed": {
|
|
642
|
+
severity: "error",
|
|
643
|
+
title: "Structured section malformed",
|
|
644
|
+
fix: "Fix the generated regions / `### Scenario:` blocks `slice-doc/structured-section-malformed` names, then re-run the gate.",
|
|
645
|
+
usageCategory: "slice-ready structured section malformed",
|
|
646
|
+
docAnchor: "slice-readiness",
|
|
647
|
+
optIn: true,
|
|
648
|
+
},
|
|
490
649
|
};
|
|
491
650
|
/** Build one diagnostic, severity looked up from the registry — the per-instance `message`
|
|
492
651
|
* (and optional `line`/`refs`) is all a call site supplies. Throws on an unregistered code:
|
package/dist/model/rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/model/rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/model/rules.ts"],"names":[],"mappings":"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"}
|
package/dist/model/validate.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ElementKind } from "../parser/ast.js";
|
|
1
2
|
import { Grid } from "../layout/grid.js";
|
|
2
3
|
import { Element, NormalizedModel } from "./model.js";
|
|
3
4
|
import type { RefsResult } from "./refs.js";
|
|
@@ -17,7 +18,46 @@ export interface Diagnostic {
|
|
|
17
18
|
* sourced from the same `RefsResult` `em export`/`em diff` use. */
|
|
18
19
|
refs?: string[];
|
|
19
20
|
}
|
|
21
|
+
/** A GitHub user (`@alice`) or team (`@org/team`) — the shape CODEOWNERS accepts. */
|
|
22
|
+
export declare const OWNER_HANDLE_RE: RegExp;
|
|
23
|
+
/** An email address, the other owner shape CODEOWNERS accepts. */
|
|
24
|
+
export declare const OWNER_EMAIL_RE: RegExp;
|
|
25
|
+
/** Whether `owner` is usable in a CODEOWNERS line (MIL-234). */
|
|
26
|
+
export declare function isOwnerHandle(owner: string): boolean;
|
|
20
27
|
export declare function validate(model: NormalizedModel, grid: Grid, refs: RefsResult): Diagnostic[];
|
|
28
|
+
/** One field on the public surface whose type does not resolve under R7 (MIL-237). */
|
|
29
|
+
export interface UnresolvedPublicField {
|
|
30
|
+
owner: {
|
|
31
|
+
kind: "element";
|
|
32
|
+
id: string;
|
|
33
|
+
elementKind: ElementKind;
|
|
34
|
+
name: string;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "type";
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
reachedFrom: {
|
|
40
|
+
elementKind: ElementKind;
|
|
41
|
+
name: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
field: string;
|
|
45
|
+
/** The raw type string, or null when the field declares no type at all. */
|
|
46
|
+
type: string | null;
|
|
47
|
+
line: number;
|
|
48
|
+
}
|
|
49
|
+
/** The `public-field-type-unresolved` message, shared by `em validate` and `em upgrade`'s
|
|
50
|
+
* human item so the two never word the same finding differently. */
|
|
51
|
+
export declare function formatUnresolvedPublicField(f: UnresolvedPublicField): string;
|
|
52
|
+
/**
|
|
53
|
+
* Strict public types (MIL-237, briefing R7): every field of a `public` command/event/view —
|
|
54
|
+
* and of every declared `type` transitively reachable from one — must resolve via the fixed
|
|
55
|
+
* scalar table (`PUBLIC_SCALAR_TYPES`) or a declared `type` (bare or `[]`). Internal elements
|
|
56
|
+
* are never checked (their types stay free text). Element findings come first, in model
|
|
57
|
+
* order; then reachable types, in declaration order, each attributed to the first public
|
|
58
|
+
* element that reached it.
|
|
59
|
+
*/
|
|
60
|
+
export declare function findUnresolvedPublicFieldTypes(model: NormalizedModel): UnresolvedPublicField[];
|
|
21
61
|
/** `public` views (MIL-215) with no `ui`/reaction reader anywhere on their timeline — the
|
|
22
62
|
* logical view's `logicalId`s (not individual instance ids), so a reader credited to ANY
|
|
23
63
|
* instance of a repeated (`again`, MIL-208 continuations included) view satisfies every
|