@milehimikey/em 1.10.0 → 1.12.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/.claude/skills/event-modeling/SKILL.md +1 -1
- package/.claude/skills/event-modeling-conform/SKILL.md +5 -1
- package/.claude/skills/event-modeling-design/SKILL.md +41 -14
- package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
- package/.claude/skills/event-modeling-implement/SKILL.md +24 -7
- package/.claude/skills/event-modeling-implement/reference/implement.md +227 -19
- package/.claude/skills/event-modeling-review/SKILL.md +14 -3
- package/.claude/skills/event-modeling-shared/reference/em-dsl.md +80 -15
- package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +43 -1
- package/.claude/skills/event-modeling-shared/templates/constitution.md +118 -0
- package/.claude/skills/event-modeling-shared/templates/model-readme.md +2 -2
- package/.claude/skills/event-modeling-shared/templates/slice.md +4 -0
- package/dist/catalog/build.js +42 -1
- package/dist/catalog/build.js.map +1 -1
- package/dist/catalog/coverage.d.ts +15 -0
- package/dist/catalog/coverage.js +34 -0
- package/dist/catalog/coverage.js.map +1 -0
- package/dist/catalog/docJoin.d.ts +19 -2
- package/dist/catalog/docJoin.js +30 -4
- package/dist/catalog/docJoin.js.map +1 -1
- package/dist/catalog/docModelConsistencyValidate.js +1 -1
- package/dist/catalog/docModelConsistencyValidate.js.map +1 -1
- package/dist/catalog/noteBindingValidate.js +18 -0
- package/dist/catalog/noteBindingValidate.js.map +1 -1
- package/dist/catalog/orphanedSliceDocValidate.d.ts +8 -1
- package/dist/catalog/orphanedSliceDocValidate.js +33 -6
- package/dist/catalog/orphanedSliceDocValidate.js.map +1 -1
- package/dist/catalog/pages.d.ts +16 -1
- package/dist/catalog/pages.js +16 -4
- package/dist/catalog/pages.js.map +1 -1
- package/dist/catalog/sliceDoc.d.ts +8 -0
- package/dist/catalog/sliceDoc.js +2 -0
- package/dist/catalog/sliceDoc.js.map +1 -1
- package/dist/catalog/sliceReadyValidate.d.ts +12 -1
- package/dist/catalog/sliceReadyValidate.js +4 -4
- package/dist/catalog/sliceReadyValidate.js.map +1 -1
- package/dist/cli/agentsMd.js +9 -3
- package/dist/cli/agentsMd.js.map +1 -1
- package/dist/cli/ciInit.js +3 -0
- package/dist/cli/ciInit.js.map +1 -1
- package/dist/cli/conformScope.js +10 -3
- package/dist/cli/conformScope.js.map +1 -1
- package/dist/cli/coverage.d.ts +34 -9
- package/dist/cli/coverage.js +61 -24
- package/dist/cli/coverage.js.map +1 -1
- package/dist/cli/ledgerCheck.d.ts +72 -0
- package/dist/cli/ledgerCheck.js +122 -1
- package/dist/cli/ledgerCheck.js.map +1 -1
- package/dist/cli/markImplemented.js +12 -1
- package/dist/cli/markImplemented.js.map +1 -1
- package/dist/cli/ratify.d.ts +37 -5
- package/dist/cli/ratify.js +123 -10
- package/dist/cli/ratify.js.map +1 -1
- package/dist/cli/reratify.js +26 -6
- package/dist/cli/reratify.js.map +1 -1
- package/dist/cli/review.d.ts +38 -0
- package/dist/cli/review.js +171 -0
- package/dist/cli/review.js.map +1 -0
- package/dist/cli/sliceIndex.d.ts +3 -0
- package/dist/cli/sliceIndex.js +14 -8
- package/dist/cli/sliceIndex.js.map +1 -1
- package/dist/cli/sliceLink.js +16 -0
- package/dist/cli/sliceLink.js.map +1 -1
- package/dist/cli/stateFile.d.ts +10 -0
- package/dist/cli/stateFile.js +14 -0
- package/dist/cli/stateFile.js.map +1 -1
- package/dist/cli/status.d.ts +55 -3
- package/dist/cli/status.js +92 -19
- package/dist/cli/status.js.map +1 -1
- package/dist/cli.js +203 -47
- package/dist/cli.js.map +1 -1
- package/dist/emit/coverageJson.d.ts +2 -2
- package/dist/emit/coverageJson.js +6 -2
- package/dist/emit/coverageJson.js.map +1 -1
- package/dist/emit/freshnessJson.d.ts +1 -1
- package/dist/emit/freshnessJson.js +5 -1
- package/dist/emit/freshnessJson.js.map +1 -1
- package/dist/emit/json.d.ts +45 -1
- package/dist/emit/json.js +82 -3
- package/dist/emit/json.js.map +1 -1
- package/dist/emit/ledgerJson.d.ts +1 -1
- package/dist/emit/ledgerJson.js +6 -1
- package/dist/emit/ledgerJson.js.map +1 -1
- package/dist/emit/queryJson.d.ts +1 -1
- package/dist/emit/queryJson.js +5 -1
- package/dist/emit/queryJson.js.map +1 -1
- package/dist/emit/statusJson.d.ts +1 -1
- package/dist/emit/statusJson.js +10 -1
- package/dist/emit/statusJson.js.map +1 -1
- package/dist/emit/validateJson.d.ts +4 -3
- package/dist/emit/validateJson.js +10 -3
- package/dist/emit/validateJson.js.map +1 -1
- package/dist/mcp/server.js +47 -22
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/continuation.d.ts +23 -0
- package/dist/model/continuation.js +49 -0
- package/dist/model/continuation.js.map +1 -0
- package/dist/model/edges.d.ts +18 -3
- package/dist/model/edges.js +34 -0
- package/dist/model/edges.js.map +1 -1
- package/dist/model/model.d.ts +4 -0
- package/dist/model/model.js +1 -0
- package/dist/model/model.js.map +1 -1
- package/dist/model/queryIndex.d.ts +5 -2
- package/dist/model/queryIndex.js +5 -2
- package/dist/model/queryIndex.js.map +1 -1
- package/dist/model/rules.d.ts +25 -0
- package/dist/model/rules.js +25 -0
- package/dist/model/rules.js.map +1 -1
- package/dist/model/sliceDocIndex.d.ts +12 -5
- package/dist/model/sliceDocIndex.js +18 -7
- package/dist/model/sliceDocIndex.js.map +1 -1
- package/dist/model/validate.js +82 -1
- package/dist/model/validate.js.map +1 -1
- package/dist/parser/ast.d.ts +21 -0
- package/dist/parser/parser.js +96 -32
- package/dist/parser/parser.js.map +1 -1
- package/dist/render/drawEdges.js +7 -0
- package/dist/render/drawEdges.js.map +1 -1
- package/dist/render/drawNotes.d.ts +13 -3
- package/dist/render/drawNotes.js +96 -20
- package/dist/render/drawNotes.js.map +1 -1
- package/dist/render/render.js +6 -5
- package/dist/render/render.js.map +1 -1
- package/dist/render/sliceStatus.d.ts +3 -3
- package/dist/render/sliceStatus.js +27 -29
- package/dist/render/sliceStatus.js.map +1 -1
- package/dist/templates.d.ts +14 -1
- package/dist/templates.js +141 -5
- package/dist/templates.js.map +1 -1
- package/dist/util/localDate.d.ts +2 -0
- package/dist/util/localDate.js +17 -0
- package/dist/util/localDate.js.map +1 -0
- package/package.json +1 -1
package/dist/emit/json.js
CHANGED
|
@@ -14,7 +14,7 @@ import { readFileSync } from "node:fs";
|
|
|
14
14
|
import { collectTags, resolveByName, resolveTypeRef } from "../model/model.js";
|
|
15
15
|
import { serializeDiagnostic } from "../model/validate.js";
|
|
16
16
|
import { computeModelKey } from "../model/qualifiedRef.js";
|
|
17
|
-
import { semanticEdges } from "../model/edges.js";
|
|
17
|
+
import { resolveLoopsToTarget, semanticEdges } from "../model/edges.js";
|
|
18
18
|
import { classifySlicePattern } from "../catalog/classify.js";
|
|
19
19
|
import { resolveSliceDocJoin } from "../catalog/docJoin.js";
|
|
20
20
|
import { validateNoteBindings } from "../catalog/noteBindingValidate.js";
|
|
@@ -75,7 +75,39 @@ export const GENERATOR_VERSION = JSON.parse(readFileSync(join(dirname(fileURLToP
|
|
|
75
75
|
// the document stay model-unqualified. Never deduped here — one export is one model; key
|
|
76
76
|
// collisions are a multi-model-invocation concern (`duplicate-model-key`, `em query`/`em
|
|
77
77
|
// system`). The `--slice` envelope carries the same value as top-level `modelKey`. Additive-only.
|
|
78
|
-
|
|
78
|
+
// 1.11 (em 1.11.0 "the human gate", one bump for the whole release):
|
|
79
|
+
// - MIL-201: `slice.doc` gains `reviewedBy`/`reviewedOn` — who recorded the review session
|
|
80
|
+
// this doc passed through, and when (frontmatter `reviewedBy:`/`reviewedOn:`), written only
|
|
81
|
+
// by `em slice review`. Both null when absent, same as every other optional doc-join field.
|
|
82
|
+
// The review gate is the FIRST of the two human gates; `ratifiedBy`/`ratifiedOn` (schema
|
|
83
|
+
// 1.8) record the second. See catalog/docJoin.ts.
|
|
84
|
+
// - MIL-199: element `loopsTo: { name, ref }[] | null` (same shape as `from`) — an event's
|
|
85
|
+
// `loops-to "View"` clause(s), resolved to the earlier view instance each names (`null`
|
|
86
|
+
// ref only on a model with unresolved diagnostics; validation makes it an error). New
|
|
87
|
+
// `model.edges[].source` enum value `"loops-to"` (model/edges.ts's `EdgeSource`) for the
|
|
88
|
+
// corresponding edge, straight from `semanticEdges()` — no new key, same `source` field
|
|
89
|
+
// every other edge already carries.
|
|
90
|
+
// - MIL-200: field `derived: boolean` (computed-from-events marker, view fields only) — same
|
|
91
|
+
// `=== true` convention as `tag`/`assigned` — and `derivedFrom: string[] | null` (the traced
|
|
92
|
+
// form's event name(s), `renamedFrom`-style nullable). A trailing `derived` (or `derived
|
|
93
|
+
// from "Event A", "Event B"`) clause exempts the field from
|
|
94
|
+
// `fields-completeness/view-field-no-source`; the traced form's names must resolve among
|
|
95
|
+
// the view's actual sources (`derived-from-unresolved` otherwise). See model/validate.ts.
|
|
96
|
+
// Additive-only.
|
|
97
|
+
// 1.12 (MIL-208, "an `again` view instance is a continuation of its originating slice"):
|
|
98
|
+
// - `slice.continuationOf: string | null` — non-null when this slice is a continuation (an
|
|
99
|
+
// again-view-only slice with no legacy doc of its own): the originating slice's export key.
|
|
100
|
+
// `slice.doc` is byte-identical to the originating slice's own `doc` in that case (see
|
|
101
|
+
// `catalog/docJoin.ts`'s `resolveSliceDocJoin`) — `continuationOf` is what says why. Null
|
|
102
|
+
// for every ordinary slice, and for a continuation slice that still carries its own legacy
|
|
103
|
+
// doc (migration path — a `continuation-has-own-doc` warning fires instead, model/rules.ts).
|
|
104
|
+
// - `slice.alsoReads: { event, atSlice }[]` — for the slice holding a view's ORIGINATING
|
|
105
|
+
// declaration, the union of events every later `again` instance of that view reads via
|
|
106
|
+
// `from`, in timeline order, deduped by `(event, atSlice)`. `[]` for every other slice
|
|
107
|
+
// (including an again-slice's own entry — only the origin carries the union). See
|
|
108
|
+
// `model/continuation.ts` for the shared predicate/resolution both fields are built on.
|
|
109
|
+
// Additive-only.
|
|
110
|
+
export const SCHEMA_VERSION = "1.12";
|
|
79
111
|
/**
|
|
80
112
|
* Export a single field, additively: `name`/`type` are exactly what today's consumers already
|
|
81
113
|
* see. `typeRef` is the new, purely-additive key — non-null only when `type` (bare or `[]`-
|
|
@@ -95,6 +127,8 @@ function fieldExport(f, typesByName, refByTypeId) {
|
|
|
95
127
|
tag: f.tag === true,
|
|
96
128
|
renamedFrom: f.renamedFrom ?? null,
|
|
97
129
|
assigned: f.assigned === true,
|
|
130
|
+
derived: f.derived === true,
|
|
131
|
+
derivedFrom: f.derivedFrom ?? null,
|
|
98
132
|
};
|
|
99
133
|
}
|
|
100
134
|
/** Build the `em export` document for an already-validated (error-free) model. `refs` is
|
|
@@ -156,6 +190,47 @@ export function buildExportDoc(model, refs, diagnostics, source, path) {
|
|
|
156
190
|
return null;
|
|
157
191
|
return el.from.map((name) => ({ name, ref: refOf(resolveByName(model.byName, name)) }));
|
|
158
192
|
};
|
|
193
|
+
// `loops-to "View"` targets (MIL-199), same `{ name, ref }` shape as `fromOf` above but
|
|
194
|
+
// resolved via `resolveLoopsToTarget` (earlier-instance-only) rather than `resolveByName`
|
|
195
|
+
// (first-bucket-entry) — a loops-to target and a `from` target follow different resolution
|
|
196
|
+
// rules even though both name a view by string.
|
|
197
|
+
const loopsToOf = (el) => {
|
|
198
|
+
if (!el.loopsTo || el.loopsTo.length === 0)
|
|
199
|
+
return null;
|
|
200
|
+
return el.loopsTo.map((name) => ({ name, ref: refOf(resolveLoopsToTarget(model, el, name)?.id) }));
|
|
201
|
+
};
|
|
202
|
+
// MIL-208: `slice.alsoReads` — for each view element THIS slice declares that is itself an
|
|
203
|
+
// originating (non-`again`) declaration, the union of events every later `again` instance of
|
|
204
|
+
// that view reads via `from`, across the whole model, merged in origin-view declaration order
|
|
205
|
+
// and then instance timeline order (`sliceIndex` ascending). A slice with no originating view
|
|
206
|
+
// element (an ordinary command/event/processor slice, or an `again`-only continuation slice —
|
|
207
|
+
// only the ORIGIN carries the union, never a later instance) returns `[]`.
|
|
208
|
+
const alsoReadsFor = (slice) => {
|
|
209
|
+
const originViews = slice.elements.filter((el) => el.kind === "view" && el.again !== true);
|
|
210
|
+
if (originViews.length === 0)
|
|
211
|
+
return [];
|
|
212
|
+
const seen = new Set();
|
|
213
|
+
const result = [];
|
|
214
|
+
for (const originEl of originViews) {
|
|
215
|
+
const followers = model.elements
|
|
216
|
+
.filter((other) => other.kind === "view" && other.again === true && other.logicalId === originEl.id)
|
|
217
|
+
.sort((a, b) => a.sliceIndex - b.sliceIndex);
|
|
218
|
+
for (const follower of followers) {
|
|
219
|
+
const atSlice = sliceKeys[follower.sliceIndex];
|
|
220
|
+
for (const name of follower.from ?? []) {
|
|
221
|
+
const ref = refOf(resolveByName(model.byName, name));
|
|
222
|
+
if (!ref)
|
|
223
|
+
continue; // unresolved `from` — validate.ts already errors on this elsewhere
|
|
224
|
+
const dedupeKey = `${ref}|${atSlice}`;
|
|
225
|
+
if (seen.has(dedupeKey))
|
|
226
|
+
continue;
|
|
227
|
+
seen.add(dedupeKey);
|
|
228
|
+
result.push({ event: ref, atSlice });
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
};
|
|
159
234
|
// Identity/composite/external DCB tag metadata (MIL-66) — events only in practice (`tag`
|
|
160
235
|
// clauses are a parse error on any other kind), `null` when the event carries none. Order:
|
|
161
236
|
// inline field identity tags in field order, then element-level composite/external clauses
|
|
@@ -169,7 +244,7 @@ export function buildExportDoc(model, refs, diagnostics, source, path) {
|
|
|
169
244
|
// concatenation for both the JSON diagnostics field and the returned ExportResult.
|
|
170
245
|
const slices = model.slices.map((slice, sliceIndex) => {
|
|
171
246
|
const sliceKey = sliceKeys[sliceIndex];
|
|
172
|
-
const { doc, diagnostics: sliceDocDiags } = resolveSliceDocJoin(slice, sliceKey, baseDir, (id) => refById.get(id));
|
|
247
|
+
const { doc, diagnostics: sliceDocDiags, continuationOf: continuationOfKey } = resolveSliceDocJoin(model, refs, slice, sliceKey, baseDir, (id) => refById.get(id));
|
|
173
248
|
docDiagnostics.push(...sliceDocDiags);
|
|
174
249
|
return {
|
|
175
250
|
key: sliceKey,
|
|
@@ -188,6 +263,9 @@ export function buildExportDoc(model, refs, diagnostics, source, path) {
|
|
|
188
263
|
// found/reason state machine. Never the markdown body: doc.html/doc.raw never
|
|
189
264
|
// appear here (the hard boundary the ticket requires).
|
|
190
265
|
doc,
|
|
266
|
+
// MIL-208, schema 1.12 — see SliceExport's own field comments.
|
|
267
|
+
continuationOf: continuationOfKey,
|
|
268
|
+
alsoReads: alsoReadsFor(slice),
|
|
191
269
|
elements: slice.elements.map((el) => ({
|
|
192
270
|
ref: refById.get(el.id),
|
|
193
271
|
kind: el.kind,
|
|
@@ -207,6 +285,7 @@ export function buildExportDoc(model, refs, diagnostics, source, path) {
|
|
|
207
285
|
tags: tagsOf(el),
|
|
208
286
|
renamedFrom: el.renamedFrom ?? null,
|
|
209
287
|
logicalRef: el.kind === "view" && el.again === true ? refOf(el.logicalId) : null,
|
|
288
|
+
loopsTo: loopsToOf(el),
|
|
210
289
|
})),
|
|
211
290
|
};
|
|
212
291
|
});
|
package/dist/emit/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/emit/json.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,EAAE;AACF,gFAAgF;AAChF,yEAAyE;AACzE,4EAA4E;AAC5E,iDAAiD;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAsC,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnH,OAAO,EAAc,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAc,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC,KAAK,CACjD,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAChG,CAAC,OAAO,CAAC;AAEV,uFAAuF;AACvF,0FAA0F;AAC1F,8FAA8F;AAC9F,8CAA8C;AAC9C,qFAAqF;AACrF,6FAA6F;AAC7F,oDAAoD;AACpD,sFAAsF;AACtF,6FAA6F;AAC7F,2FAA2F;AAC3F,8DAA8D;AAC9D,+EAA+E;AAC/E,6FAA6F;AAC7F,sFAAsF;AACtF,2FAA2F;AAC3F,qFAAqF;AACrF,sFAAsF;AACtF,wFAAwF;AACxF,kFAAkF;AAClF,+FAA+F;AAC/F,4FAA4F;AAC5F,6FAA6F;AAC7F,+FAA+F;AAC/F,+FAA+F;AAC/F,0FAA0F;AAC1F,6FAA6F;AAC7F,qCAAqC;AACrC,iGAAiG;AACjG,2FAA2F;AAC3F,gGAAgG;AAChG,iGAAiG;AACjG,8DAA8D;AAC9D,mGAAmG;AACnG,kGAAkG;AAClG,6FAA6F;AAC7F,+FAA+F;AAC/F,gGAAgG;AAChG,8FAA8F;AAC9F,gGAAgG;AAChG,+FAA+F;AAC/F,8FAA8F;AAC9F,+FAA+F;AAC/F,kCAAkC;AAClC,8FAA8F;AAC9F,wFAAwF;AACxF,6FAA6F;AAC7F,wFAAwF;AACxF,4FAA4F;AAC5F,+FAA+F;AAC/F,yFAAyF;AACzF,yFAAyF;AACzF,kGAAkG;AAClG,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAmIrC;;;;;;;GAOG;AACH,SAAS,WAAW,CAClB,CAAQ,EACR,WAAkC,EAClC,WAAgC;IAEhC,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrD,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,OAAO,EAAE,QAAQ;YACf,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE;YACtG,CAAC,CAAC,IAAI;QACR,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI;QACnB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;QAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ,KAAK,IAAI;KAC9B,CAAC;AACJ,CAAC;AAED;;;;+FAI+F;AAC/F,MAAM,UAAU,WAAW,CACzB,KAAsB,EACtB,IAAgB,EAChB,WAAyB,EACzB,MAAc,EACd,IAAY;IAEZ,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;2BAY2B;AAC3B,MAAM,UAAU,gBAAgB,CAC9B,KAAsB,EACtB,IAAgB,EAChB,WAAyB,EACzB,MAAc,EACd,IAAY,EACZ,QAAgB;IAEhB,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpG,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC;IAC/D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IAE7E,MAAM,QAAQ,GAAG;QACf,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,4FAA4F;QAC5F,0EAA0E;QAC1E,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG;QACvB,QAAQ;QACR,KAAK;QACL,sFAAsF;QACtF,sFAAsF;QACtF,mFAAmF;QACnF,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAC3E;KACF,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AAC/F,CAAC;AAED;;;;;mGAKmG;AACnG,MAAM,UAAU,cAAc,CAC5B,KAAsB,EACtB,IAAgB,EAChB,WAAyB,EACzB,MAAc,EACd,IAAY;IAEZ,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,cAAc,GAAiB,EAAE,CAAC;IAExC,MAAM,KAAK,GAAG,CAAC,EAAsB,EAAiB,EAAE,CACtD,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtC,MAAM,MAAM,GAAG,CAAC,EAAW,EAAiD,EAAE;QAC5E,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC;IAEF,yFAAyF;IACzF,2FAA2F;IAC3F,2FAA2F;IAC3F,+DAA+D;IAC/D,MAAM,MAAM,GAAG,CAAC,EAAW,EAAsB,EAAE;QACjD,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC,CAAC;IAEF,4FAA4F;IAC5F,gGAAgG;IAChG,mFAAmF;IACnF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAC7D,KAAK,EACL,QAAQ,EACR,OAAO,EACP,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CACzB,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;QACtC,OAAO;YACL,GAAG,EAAE,QAAQ;YACb,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,sEAAsE;YACtE,sEAAsE;YACtE,4DAA4D;YAC5D,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;YAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,kFAAkF;YAClF,kFAAkF;YAClF,sDAAsD;YACtD,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC;YACpC,2EAA2E;YAC3E,8EAA8E;YAC9E,uDAAuD;YACvD,GAAG;YACH,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE;gBACxB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,MAAM,EAAE,EAAE,CAAC,MAAM;oBACf,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBACtE,CAAC,CAAC,IAAI;gBACR,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,IAAI;gBACrB,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI;gBACvB,UAAU,EAAE,EAAE,CAAC,UAAU,IAAI,IAAI;gBACjC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;gBAChB,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI;gBAC3B,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI;gBAC3B,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI;gBACxB,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI;gBAC1B,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;gBAChB,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,IAAI;gBACnC,UAAU,EACR,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;aACvE,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,wFAAwF;IACxF,4FAA4F;IAC5F,+FAA+F;IAC/F,gFAAgF;IAChF,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE1E,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,cAAc,EAAE,GAAG,sBAAsB,CAAC,CAAC;IAEtF,MAAM,SAAS,GAAG;QAChB,aAAa,EAAE,cAAc;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACnF,KAAK,EAAE;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC;YACjC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,+EAA+E;YAC/E,iDAAiD;YACjD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE;gBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;aAC5E,CAAC,CAAC;YACH,MAAM;YACN,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBACxB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;YACH,qFAAqF;YACrF,0FAA0F;YAC1F,0FAA0F;YAC1F,2EAA2E;YAC3E,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE;gBAC1B,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE;gBACtB,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;SACJ;QACD,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC;KACrD,CAAC;IAEF,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;AACzD,CAAC"}
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/emit/json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LedgerCheckResult } from "../cli/ledgerCheck.js";
|
|
2
|
-
export declare const LEDGER_SCHEMA_VERSION = "1.
|
|
2
|
+
export declare const LEDGER_SCHEMA_VERSION = "1.1";
|
|
3
3
|
/** Build the `em ledger --json` document. Pretty-printed (2-space), no trailing newline — the
|
|
4
4
|
* caller adds it, same convention as buildDiffJson/buildGlossaryJson. */
|
|
5
5
|
export declare function buildLedgerJson(result: LedgerCheckResult, from: string, to: string | null): string;
|
package/dist/emit/ledgerJson.js
CHANGED
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
// can destructure without sniffing.
|
|
7
7
|
import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
|
|
8
8
|
// 1.0: initial shape (MIL-89).
|
|
9
|
-
|
|
9
|
+
// 1.1 (MIL-185): additive `waived` field — findings excused by `--waive <slice-key>` or an
|
|
10
|
+
// `Em-Ledger-Waive: <slice-key>` commit trailer, each carrying `waivedBy: { source: "flag" } |
|
|
11
|
+
// { source: "trailer", commit }`. A run with no waivers is byte-identical to the 1.0 shape
|
|
12
|
+
// except for the new empty `waived: []` array — every other field is unchanged.
|
|
13
|
+
export const LEDGER_SCHEMA_VERSION = "1.1";
|
|
10
14
|
/** Build the `em ledger --json` document. Pretty-printed (2-space), no trailing newline — the
|
|
11
15
|
* caller adds it, same convention as buildDiffJson/buildGlossaryJson. */
|
|
12
16
|
export function buildLedgerJson(result, from, to) {
|
|
@@ -17,6 +21,7 @@ export function buildLedgerJson(result, from, to) {
|
|
|
17
21
|
to,
|
|
18
22
|
checkedCount: result.checkedCount,
|
|
19
23
|
findings: result.findings,
|
|
24
|
+
waived: result.waived,
|
|
20
25
|
skipped: result.skipped,
|
|
21
26
|
ok: result.findings.length === 0,
|
|
22
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledgerJson.js","sourceRoot":"","sources":["../../src/emit/ledgerJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,0FAA0F;AAC1F,gGAAgG;AAChG,4FAA4F;AAC5F,+FAA+F;AAC/F,oCAAoC;AAGpC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;0EAC0E;AAC1E,MAAM,UAAU,eAAe,CAAC,MAAyB,EAAE,IAAY,EAAE,EAAiB;IACxF,MAAM,GAAG,GAAG;QACV,mBAAmB,EAAE,qBAAqB;QAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI;QACJ,EAAE;QACF,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;KACjC,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ledgerJson.js","sourceRoot":"","sources":["../../src/emit/ledgerJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,0FAA0F;AAC1F,gGAAgG;AAChG,4FAA4F;AAC5F,+FAA+F;AAC/F,oCAAoC;AAGpC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,+BAA+B;AAC/B,2FAA2F;AAC3F,+FAA+F;AAC/F,2FAA2F;AAC3F,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;0EAC0E;AAC1E,MAAM,UAAU,eAAe,CAAC,MAAyB,EAAE,IAAY,EAAE,EAAiB;IACxF,MAAM,GAAG,GAAG;QACV,mBAAmB,EAAE,qBAAqB;QAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI;QACJ,EAAE;QACF,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;KACjC,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/emit/queryJson.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const QUERY_SCHEMA_VERSION = "1.
|
|
1
|
+
export declare const QUERY_SCHEMA_VERSION = "1.1";
|
|
2
2
|
/** Build the `em query <verb> ... --json` document. Pretty-printed (2-space), no trailing
|
|
3
3
|
* newline — the caller adds it, same convention as every other `em` JSON surface. No
|
|
4
4
|
* timestamps or other non-deterministic fields: byte-identical for the same models/args
|
package/dist/emit/queryJson.js
CHANGED
|
@@ -8,7 +8,11 @@
|
|
|
8
8
|
// one schema for this surface (MCP parity, docs/mcp.md).
|
|
9
9
|
import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
|
|
10
10
|
// 1.0 (MIL-168): initial shape — verb, files, args, results.
|
|
11
|
-
|
|
11
|
+
// 1.1 (MIL-199): new `QueryEdgeKind` enum value `"loops-to"` — an event's `loops-to "View"`
|
|
12
|
+
// edge, distinct from an ordinary `from`-derived `event->view` connection (model/queryIndex.ts).
|
|
13
|
+
// `downstream`/`upstream` results crossing one carry `via: "loops-to"`. Additive-only (new enum
|
|
14
|
+
// value on an existing string field, not a new key).
|
|
15
|
+
export const QUERY_SCHEMA_VERSION = "1.1";
|
|
12
16
|
/** Build the `em query <verb> ... --json` document. Pretty-printed (2-space), no trailing
|
|
13
17
|
* newline — the caller adds it, same convention as every other `em` JSON surface. No
|
|
14
18
|
* timestamps or other non-deterministic fields: byte-identical for the same models/args
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryJson.js","sourceRoot":"","sources":["../../src/emit/queryJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,uFAAuF;AACvF,gGAAgG;AAChG,+FAA+F;AAC/F,iGAAiG;AACjG,iGAAiG;AACjG,yDAAyD;AAEzD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;0DAG0D;AAC1D,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAe,EAAE,IAA6B,EAAE,OAAkB;IAC7G,MAAM,GAAG,GAAG;QACV,kBAAkB,EAAE,oBAAoB;QACxC,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI;QACJ,KAAK;QACL,4FAA4F;QAC5F,wFAAwF;QACxF,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,OAAO;KACR,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"queryJson.js","sourceRoot":"","sources":["../../src/emit/queryJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,uFAAuF;AACvF,gGAAgG;AAChG,+FAA+F;AAC/F,iGAAiG;AACjG,iGAAiG;AACjG,yDAAyD;AAEzD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,6DAA6D;AAC7D,4FAA4F;AAC5F,iGAAiG;AACjG,gGAAgG;AAChG,qDAAqD;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;0DAG0D;AAC1D,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAe,EAAE,IAA6B,EAAE,OAAkB;IAC7G,MAAM,GAAG,GAAG;QACV,kBAAkB,EAAE,oBAAoB;QACxC,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI;QACJ,KAAK;QACL,4FAA4F;QAC5F,wFAAwF;QACxF,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,OAAO;KACR,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StatusReport } from "../cli/status.js";
|
|
2
|
-
export declare const STATUS_SCHEMA_VERSION = "1.
|
|
2
|
+
export declare const STATUS_SCHEMA_VERSION = "1.4";
|
|
3
3
|
/** Build the `em status <files...> --json` document. Pretty-printed (2-space), no trailing
|
|
4
4
|
* newline — the caller adds it, same convention as buildCoverageJson/buildLedgerJson. No
|
|
5
5
|
* timestamps or other non-deterministic fields: byte-identical for the same models/git state
|
package/dist/emit/statusJson.js
CHANGED
|
@@ -13,7 +13,15 @@ import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
|
|
|
13
13
|
// 1.2 (MIL-171): a new top-level `owners` array — one `{ file, key, owner }` entry per slice
|
|
14
14
|
// across every input file, `owner` verbatim from the doc's frontmatter `owner:` (null when
|
|
15
15
|
// absent or when no doc was found). See ../cli/status.ts's StatusOwnerEntry.
|
|
16
|
-
|
|
16
|
+
// 1.3 (MIL-202): each `conformance[]` entry gains `constitution: { present, path }` — whether
|
|
17
|
+
// the project's implementation constitution exists, and its expected location relative to that
|
|
18
|
+
// entry's own `modelDir` (`/`-separated, never absolute). Existence only; the document's content
|
|
19
|
+
// is never read. See ../cli/status.ts's ConstitutionEntry/resolveConstitution.
|
|
20
|
+
// 1.4 (MIL-208): a new top-level `continuations` (number) — count of continuation slices
|
|
21
|
+
// (again-view-only slices with no legacy doc of their own) across every input file, excluded
|
|
22
|
+
// from every `slices.byStatus`/`driftSignal` bucket (the originating slice's own fact already
|
|
23
|
+
// counts once). See ../cli/status.ts's StatusReport.continuations.
|
|
24
|
+
export const STATUS_SCHEMA_VERSION = "1.4";
|
|
17
25
|
/** Build the `em status <files...> --json` document. Pretty-printed (2-space), no trailing
|
|
18
26
|
* newline — the caller adds it, same convention as buildCoverageJson/buildLedgerJson. No
|
|
19
27
|
* timestamps or other non-deterministic fields: byte-identical for the same models/git state
|
|
@@ -24,6 +32,7 @@ export function buildStatusJson(report) {
|
|
|
24
32
|
generator: { name: GENERATOR_NAME, version: GENERATOR_VERSION },
|
|
25
33
|
files: report.files,
|
|
26
34
|
slices: report.slices,
|
|
35
|
+
continuations: report.continuations,
|
|
27
36
|
driftSignal: report.driftSignal,
|
|
28
37
|
invariants: report.invariants,
|
|
29
38
|
issues: report.issues,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusJson.js","sourceRoot":"","sources":["../../src/emit/statusJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,0FAA0F;AAC1F,uFAAuF;AACvF,2FAA2F;AAC3F,4FAA4F;AAC5F,6FAA6F;AAC7F,mFAAmF;AAGnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,gCAAgC;AAChC,yFAAyF;AACzF,8FAA8F;AAC9F,6FAA6F;AAC7F,2FAA2F;AAC3F,6EAA6E;AAC7E,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;;;mDAGmD;AACnD,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,MAAM,GAAG,GAAG;QACV,mBAAmB,EAAE,qBAAqB;QAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,wFAAwF;QACxF,0FAA0F;QAC1F,yEAAyE;QACzE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"statusJson.js","sourceRoot":"","sources":["../../src/emit/statusJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,0FAA0F;AAC1F,uFAAuF;AACvF,2FAA2F;AAC3F,4FAA4F;AAC5F,6FAA6F;AAC7F,mFAAmF;AAGnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,gCAAgC;AAChC,yFAAyF;AACzF,8FAA8F;AAC9F,6FAA6F;AAC7F,2FAA2F;AAC3F,6EAA6E;AAC7E,8FAA8F;AAC9F,+FAA+F;AAC/F,iGAAiG;AACjG,+EAA+E;AAC/E,yFAAyF;AACzF,6FAA6F;AAC7F,8FAA8F;AAC9F,mEAAmE;AACnE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;;;mDAGmD;AACnD,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,MAAM,GAAG,GAAG;QACV,mBAAmB,EAAE,qBAAqB;QAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,wFAAwF;QACxF,0FAA0F;QAC1F,yEAAyE;QACzE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -8,7 +8,7 @@ export declare const VALIDATE_SCHEMA_VERSION = "1.0";
|
|
|
8
8
|
* a model with errors; `ok` mirrors `!hasErrors(diagnostics)`, the same predicate that gates
|
|
9
9
|
* `em validate`'s exit code. */
|
|
10
10
|
export declare function buildValidateJson(file: string, diagnostics: Diagnostic[]): string;
|
|
11
|
-
export declare const VALIDATE_SLICE_READY_SCHEMA_VERSION = "1.
|
|
11
|
+
export declare const VALIDATE_SLICE_READY_SCHEMA_VERSION = "1.1";
|
|
12
12
|
/** Build the `em validate <file> --slice-ready <key> --json` document — the machine verdict
|
|
13
13
|
* replacing the two hand-parsed English sentences ("is ready-to-implement" /
|
|
14
14
|
* "is NOT ready-to-implement") plus scraped warning prose. `gates` names each of the 4
|
|
@@ -18,8 +18,9 @@ export declare const VALIDATE_SLICE_READY_SCHEMA_VERSION = "1.0";
|
|
|
18
18
|
* for `--slice-ready` (scoped diagnostics empty) — it is the AND of the 4 gates only when
|
|
19
19
|
* `gates` is non-null AND nothing else concerning this slice is broken (e.g. a plain
|
|
20
20
|
* both-ends-of-a-flow diagnostic on one of its own elements); `diagnostics` carries that full
|
|
21
|
-
* scoped list so a consumer sees exactly why, never just the 4 named gates.
|
|
22
|
-
|
|
21
|
+
* scoped list so a consumer sees exactly why, never just the 4 named gates. `continuationOf`
|
|
22
|
+
* (MIL-208) is `null` for an ordinary slice or when `gates` is `null`. */
|
|
23
|
+
export declare function buildSliceReadyJson(file: string, sliceKey: string, gates: SliceReadyGates | null, diagnostics: Diagnostic[], ready: boolean, continuationOf: string | null): string;
|
|
23
24
|
export declare const VALIDATE_LIST_SCHEMA_VERSION = "1.0";
|
|
24
25
|
/** One `--list-issues`/`--list-divergences`/`--list-public` entry — the structured replacement
|
|
25
26
|
* for the ` issue :12 slice "X" command "Y": text` eyeball format. `elementRef` is the same
|
|
@@ -44,7 +44,12 @@ export function buildValidateJson(file, diagnostics) {
|
|
|
44
44
|
return JSON.stringify(doc, null, 2);
|
|
45
45
|
}
|
|
46
46
|
// 1.0 (MIL-128): initial shape.
|
|
47
|
-
|
|
47
|
+
// 1.1 (MIL-208): `continuationOf` — non-null when `sliceKey` names a continuation slice (an
|
|
48
|
+
// again-view-only slice with no legacy doc of its own), naming the originating slice whose doc
|
|
49
|
+
// the `gates` above actually verify. `gates` themselves already resolve straight through to the
|
|
50
|
+
// originating slice's own doc/status (see `computeSliceReadyGates`); this field only explains
|
|
51
|
+
// why. Additive-only.
|
|
52
|
+
export const VALIDATE_SLICE_READY_SCHEMA_VERSION = "1.1";
|
|
48
53
|
/** Build the `em validate <file> --slice-ready <key> --json` document — the machine verdict
|
|
49
54
|
* replacing the two hand-parsed English sentences ("is ready-to-implement" /
|
|
50
55
|
* "is NOT ready-to-implement") plus scraped warning prose. `gates` names each of the 4
|
|
@@ -54,14 +59,16 @@ export const VALIDATE_SLICE_READY_SCHEMA_VERSION = "1.0";
|
|
|
54
59
|
* for `--slice-ready` (scoped diagnostics empty) — it is the AND of the 4 gates only when
|
|
55
60
|
* `gates` is non-null AND nothing else concerning this slice is broken (e.g. a plain
|
|
56
61
|
* both-ends-of-a-flow diagnostic on one of its own elements); `diagnostics` carries that full
|
|
57
|
-
* scoped list so a consumer sees exactly why, never just the 4 named gates.
|
|
58
|
-
|
|
62
|
+
* scoped list so a consumer sees exactly why, never just the 4 named gates. `continuationOf`
|
|
63
|
+
* (MIL-208) is `null` for an ordinary slice or when `gates` is `null`. */
|
|
64
|
+
export function buildSliceReadyJson(file, sliceKey, gates, diagnostics, ready, continuationOf) {
|
|
59
65
|
const doc = {
|
|
60
66
|
validateSliceReadySchemaVersion: VALIDATE_SLICE_READY_SCHEMA_VERSION,
|
|
61
67
|
generator: { name: GENERATOR_NAME, version: GENERATOR_VERSION },
|
|
62
68
|
file,
|
|
63
69
|
sliceKey,
|
|
64
70
|
gates,
|
|
71
|
+
continuationOf,
|
|
65
72
|
ready,
|
|
66
73
|
diagnostics: diagnostics.map(serializeDiagnosticWithUsage),
|
|
67
74
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateJson.js","sourceRoot":"","sources":["../../src/emit/validateJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,yFAAyF;AACzF,gFAAgF;AAChF,+FAA+F;AAC/F,+FAA+F;AAC/F,6FAA6F;AAC7F,iDAAiD;AACjD,EAAE;AACF,qFAAqF;AACrF,gGAAgG;AAChG,6FAA6F;AAC7F,oFAAoF;AACpF,EAAE;AACF,uFAAuF;AACvF,+FAA+F;AAC/F,uFAAuF;AACvF,0DAA0D;AAE1D,OAAO,EAAc,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAY,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D;;;2FAG2F;AAC3F,SAAS,4BAA4B,CAAC,CAAa;IACjD,OAAO,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,IAAgB,CAAC,CAAC,aAAa,EAAE,CAAC;AAC/F,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C;;;iCAGiC;AACjC,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,WAAyB;IACvE,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACxE,MAAM,GAAG,GAAG;QACV,qBAAqB,EAAE,uBAAuB;QAC9C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI;QACJ,EAAE,EAAE,MAAM,KAAK,CAAC;QAChB,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE;QACrF,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,4BAA4B,CAAC;KAC3D,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,MAAM,mCAAmC,GAAG,KAAK,CAAC;AAEzD
|
|
1
|
+
{"version":3,"file":"validateJson.js","sourceRoot":"","sources":["../../src/emit/validateJson.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -38,7 +38,7 @@ import { validateNoteBindings } from "../catalog/noteBindingValidate.js";
|
|
|
38
38
|
import { validateDocModelConsistency } from "../catalog/docModelConsistencyValidate.js";
|
|
39
39
|
import { validateOrphanedSliceDocs } from "../catalog/orphanedSliceDocValidate.js";
|
|
40
40
|
import { validateSliceReady, computeSliceReadyGates } from "../catalog/sliceReadyValidate.js";
|
|
41
|
-
import { buildCoverageReport } from "../cli/coverage.js";
|
|
41
|
+
import { buildCoverageReport, resolveScopedSlices } from "../cli/coverage.js";
|
|
42
42
|
import { buildCoverageJson } from "../emit/coverageJson.js";
|
|
43
43
|
import { readContract, contractPath } from "../cli/contract.js";
|
|
44
44
|
import { resolveSliceStatusFacts, countOpenIssues, resolveConformanceEntry, aggregateInvariantTotals, buildStatusReport, } from "../cli/status.js";
|
|
@@ -50,7 +50,7 @@ import { buildGlossaryJson } from "../emit/glossaryJson.js";
|
|
|
50
50
|
import { listModelCommits } from "../cli/changelog-git.js";
|
|
51
51
|
import { buildChangelogDoc } from "../cli/changelogBuild.js";
|
|
52
52
|
import { buildConformScope, changedPathsSince, resolveSliceDocFacts } from "../cli/conformScope.js";
|
|
53
|
-
import { loadStateFile, parseState } from "../cli/stateFile.js";
|
|
53
|
+
import { loadStateFile, parseState, modelPathMismatch } from "../cli/stateFile.js";
|
|
54
54
|
import { buildFreshnessJson } from "../emit/freshnessJson.js";
|
|
55
55
|
import { compileForQuery } from "../query/pipeline.js";
|
|
56
56
|
import { buildQuerySystem } from "../query/system.js";
|
|
@@ -211,8 +211,8 @@ export function createServer() {
|
|
|
211
211
|
const combined = [...allDiagnostics, ...readyDiagnostics];
|
|
212
212
|
const scoped = combined.filter((d) => d.refs?.some((r) => r === sliceKey || r.startsWith(`${sliceKey}/`)));
|
|
213
213
|
const ready = scoped.length === 0;
|
|
214
|
-
const
|
|
215
|
-
return textResult(buildSliceReadyJson(file, sliceKey, gates, scoped, ready));
|
|
214
|
+
const result = computeSliceReadyGates(model, refs, baseDir, sliceKey);
|
|
215
|
+
return textResult(buildSliceReadyJson(file, sliceKey, result?.gates ?? null, scoped, ready, result?.continuationOf ?? null));
|
|
216
216
|
});
|
|
217
217
|
server.registerTool("list_markers", {
|
|
218
218
|
title: "List issue/divergence/public markers",
|
|
@@ -285,17 +285,23 @@ export function createServer() {
|
|
|
285
285
|
server.registerTool("coverage", {
|
|
286
286
|
title: "Check invariant-to-test citation coverage",
|
|
287
287
|
description: "Return the same JSON document `em coverage <file> --tests <dir> --json` prints: for " +
|
|
288
|
-
"every slice whose joined doc status is
|
|
289
|
-
"invariant ID found in the doc body, whether a test
|
|
290
|
-
"(word-boundary match on the exact ID), and every
|
|
291
|
-
"reference/implement.md's definition-of-done citation
|
|
292
|
-
"not that the citing test is good or passing (that
|
|
293
|
-
"(tool error) if the model has errors, or if
|
|
288
|
+
"every slice whose joined doc status is implemented (or, with includeReady, also " +
|
|
289
|
+
"ready-to-implement), each INV-* invariant ID found in the doc body, whether a test " +
|
|
290
|
+
"file under `testsDir` cites it (word-boundary match on the exact ID), and every " +
|
|
291
|
+
"citing file:line. Mechanizes reference/implement.md's definition-of-done citation " +
|
|
292
|
+
"check — confirms an ID is cited, not that the citing test is good or passing (that " +
|
|
293
|
+
"stays with review and CI). Refuses (tool error) if the model has errors, or if " +
|
|
294
|
+
"`testsDir` doesn't exist AND at least one doc is in scope (MIL-207: a fresh scaffold " +
|
|
295
|
+
"with zero implemented docs has nothing to check yet, so a missing testsDir is fine).",
|
|
294
296
|
inputSchema: {
|
|
295
297
|
file: fileParam,
|
|
296
298
|
testsDir: z.string().describe("directory to scan recursively for test files citing invariant IDs"),
|
|
299
|
+
includeReady: z
|
|
300
|
+
.boolean()
|
|
301
|
+
.optional()
|
|
302
|
+
.describe("also count ready-to-implement docs, not just implemented (MIL-207, forward-looking report)"),
|
|
297
303
|
},
|
|
298
|
-
}, async ({ file, testsDir }) => {
|
|
304
|
+
}, async ({ file, testsDir, includeReady }) => {
|
|
299
305
|
const compiled = compileFile(file);
|
|
300
306
|
if ("error" in compiled)
|
|
301
307
|
return errorResult(compiled.error);
|
|
@@ -303,14 +309,19 @@ export function createServer() {
|
|
|
303
309
|
if (hasErrors(diagnostics)) {
|
|
304
310
|
return errorResult(`not checking coverage: "${file}" has errors — run \`validate\` first and fix them`);
|
|
305
311
|
}
|
|
312
|
+
const baseDir = dirname(file);
|
|
313
|
+
const scope = !!includeReady;
|
|
314
|
+
const anyInScope = resolveScopedSlices(model, refs, baseDir, scope).some((s) => s.inScope);
|
|
306
315
|
if (!existsSync(testsDir)) {
|
|
307
|
-
|
|
316
|
+
if (anyInScope)
|
|
317
|
+
return errorResult(`testsDir not found: ${testsDir}`);
|
|
318
|
+
// MIL-207: nothing in scope yet — same leniency `em coverage` gives a fresh scaffold.
|
|
308
319
|
}
|
|
309
|
-
if (!statSync(testsDir).isDirectory()) {
|
|
320
|
+
else if (!statSync(testsDir).isDirectory()) {
|
|
310
321
|
return errorResult(`testsDir is not a directory: ${testsDir}`);
|
|
311
322
|
}
|
|
312
|
-
const report = buildCoverageReport(model, refs,
|
|
313
|
-
return textResult(buildCoverageJson(file, testsDir, report));
|
|
323
|
+
const report = buildCoverageReport(model, refs, baseDir, testsDir, scope);
|
|
324
|
+
return textResult(buildCoverageJson(file, testsDir, report, scope));
|
|
314
325
|
});
|
|
315
326
|
server.registerTool("contract", {
|
|
316
327
|
title: "Print the implementation contract",
|
|
@@ -347,11 +358,11 @@ export function createServer() {
|
|
|
347
358
|
.describe("git repo to compute commits-behind-HEAD in (default: each model's own directory)"),
|
|
348
359
|
},
|
|
349
360
|
}, async ({ files, testsDir, repo }) => {
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
361
|
+
// MIL-207: the "directory not found" half of the testsDir check needs the compiled
|
|
362
|
+
// model+refs to know whether it's actually a defect (see below) — the isDirectory half
|
|
363
|
+
// doesn't, so it stays up front.
|
|
364
|
+
if (testsDir !== undefined && existsSync(testsDir) && !statSync(testsDir).isDirectory()) {
|
|
365
|
+
return errorResult(`testsDir is not a directory: ${testsDir}`);
|
|
355
366
|
}
|
|
356
367
|
const compiledFiles = [];
|
|
357
368
|
for (const file of files) {
|
|
@@ -363,6 +374,13 @@ export function createServer() {
|
|
|
363
374
|
}
|
|
364
375
|
compiledFiles.push({ file, compiled });
|
|
365
376
|
}
|
|
377
|
+
if (testsDir !== undefined && !existsSync(testsDir)) {
|
|
378
|
+
// Same leniency as `em coverage`/`em status`: only a defect when at least one model has
|
|
379
|
+
// something in scope (`implemented`) to check.
|
|
380
|
+
const anyInScope = compiledFiles.some(({ file, compiled }) => resolveScopedSlices(compiled.model, compiled.refs, dirname(file), false).some((s) => s.inScope));
|
|
381
|
+
if (anyInScope)
|
|
382
|
+
return errorResult(`testsDir not found: ${testsDir}`);
|
|
383
|
+
}
|
|
366
384
|
const sliceFacts = [];
|
|
367
385
|
const factsByFile = new Map();
|
|
368
386
|
const statusDiagnostics = [];
|
|
@@ -550,7 +568,10 @@ export function createServer() {
|
|
|
550
568
|
const parsed = parseState(loaded.text);
|
|
551
569
|
if (!parsed.ok)
|
|
552
570
|
return errorResult(`em conform-scope: ${parsed.message}`);
|
|
553
|
-
|
|
571
|
+
// MIL-179: same state-file-mismatch check the CLI runs — keeps this tool byte-identical
|
|
572
|
+
// to `em conform-scope --json` on the mismatch path too.
|
|
573
|
+
const stateFileMismatch = modelPathMismatch(parsed.state.modelPath, file);
|
|
574
|
+
const lastConformance = stateFileMismatch ? null : parsed.state.lastConformance;
|
|
554
575
|
const { facts } = resolveSliceDocFacts(model, refs, dirname(file));
|
|
555
576
|
const skipGit = full || lastConformance === null;
|
|
556
577
|
let changedPaths = [];
|
|
@@ -561,7 +582,11 @@ export function createServer() {
|
|
|
561
582
|
changedPaths = result.paths;
|
|
562
583
|
}
|
|
563
584
|
const scope = buildConformScope(facts, lastConformance, changedPaths, full);
|
|
564
|
-
|
|
585
|
+
const output = { ...scope };
|
|
586
|
+
if (stateFileMismatch) {
|
|
587
|
+
output.stateFile = { error: stateFileMismatch };
|
|
588
|
+
}
|
|
589
|
+
return textResult(JSON.stringify(output, null, 2));
|
|
565
590
|
});
|
|
566
591
|
server.registerTool("freshness", {
|
|
567
592
|
title: "Standalone conformance freshness signal",
|