@milehimikey/em 1.11.0 → 1.13.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 +4 -2
- package/.claude/skills/event-modeling-conform/SKILL.md +20 -9
- package/.claude/skills/event-modeling-conform/reference/conform.md +107 -10
- package/.claude/skills/event-modeling-design/SKILL.md +22 -6
- package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
- package/.claude/skills/event-modeling-implement/SKILL.md +12 -6
- package/.claude/skills/event-modeling-implement/reference/implement.md +165 -18
- package/.claude/skills/event-modeling-review/SKILL.md +5 -1
- package/.claude/skills/event-modeling-shared/reference/em-dsl.md +57 -8
- package/.claude/skills/event-modeling-shared/reference/operating-principles.md +13 -3
- package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +69 -0
- package/.claude/skills/event-modeling-shared/templates/conformance-report.md +8 -1
- package/.claude/skills/event-modeling-shared/templates/constitution.md +8 -1
- package/.claude/skills/event-modeling-shared/templates/state.md +3 -0
- package/README.md +1 -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 +20 -2
- package/dist/catalog/docJoin.js +32 -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/driftSignal.d.ts +11 -5
- package/dist/catalog/driftSignal.js +18 -4
- package/dist/catalog/driftSignal.js.map +1 -1
- package/dist/catalog/modelVersionValidate.d.ts +9 -0
- package/dist/catalog/modelVersionValidate.js +38 -0
- package/dist/catalog/modelVersionValidate.js.map +1 -0
- 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 +12 -0
- package/dist/catalog/sliceDoc.js +15 -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 +20 -0
- package/dist/cli/ciInit.js.map +1 -1
- package/dist/cli/conformScope.d.ts +1 -0
- package/dist/cli/conformScope.js +13 -4
- package/dist/cli/conformScope.js.map +1 -1
- package/dist/cli/conformSupersede.d.ts +24 -2
- package/dist/cli/conformSupersede.js +44 -3
- package/dist/cli/conformSupersede.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/findings.d.ts +134 -0
- package/dist/cli/findings.js +355 -0
- package/dist/cli/findings.js.map +1 -0
- package/dist/cli/markImplemented.js +12 -1
- package/dist/cli/markImplemented.js.map +1 -1
- package/dist/cli/metrics.d.ts +93 -0
- package/dist/cli/metrics.js +331 -0
- package/dist/cli/metrics.js.map +1 -0
- package/dist/cli/modelVersion.d.ts +139 -0
- package/dist/cli/modelVersion.js +256 -0
- package/dist/cli/modelVersion.js.map +1 -0
- package/dist/cli/ratify.js +17 -1
- package/dist/cli/ratify.js.map +1 -1
- package/dist/cli/reratify.d.ts +17 -0
- package/dist/cli/reratify.js +37 -2
- package/dist/cli/reratify.js.map +1 -1
- package/dist/cli/review.js +12 -1
- package/dist/cli/review.js.map +1 -1
- package/dist/cli/skillCheck.js +2 -2
- package/dist/cli/skillCheck.js.map +1 -1
- package/dist/cli/sliceConform.d.ts +50 -0
- package/dist/cli/sliceConform.js +206 -0
- package/dist/cli/sliceConform.js.map +1 -0
- package/dist/cli/sliceIndex.d.ts +2 -0
- package/dist/cli/sliceIndex.js +24 -7
- 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/sliceNew.d.ts +12 -0
- package/dist/cli/sliceNew.js +23 -0
- package/dist/cli/sliceNew.js.map +1 -1
- package/dist/cli/sliceStubAll.d.ts +76 -0
- package/dist/cli/sliceStubAll.js +189 -0
- package/dist/cli/sliceStubAll.js.map +1 -0
- package/dist/cli/stateFile.d.ts +63 -7
- package/dist/cli/stateFile.js +179 -18
- package/dist/cli/stateFile.js.map +1 -1
- package/dist/cli/status.d.ts +90 -1
- package/dist/cli/status.js +151 -16
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/upgrade.d.ts +122 -0
- package/dist/cli/upgrade.js +476 -0
- package/dist/cli/upgrade.js.map +1 -0
- package/dist/cli.js +586 -66
- 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 +3 -1
- package/dist/emit/freshnessJson.js.map +1 -1
- package/dist/emit/json.d.ts +34 -1
- package/dist/emit/json.js +84 -2
- package/dist/emit/json.js.map +1 -1
- package/dist/emit/metricsJson.d.ts +7 -0
- package/dist/emit/metricsJson.js +27 -0
- package/dist/emit/metricsJson.js.map +1 -0
- package/dist/emit/statusJson.d.ts +1 -1
- package/dist/emit/statusJson.js +22 -1
- package/dist/emit/statusJson.js.map +1 -1
- package/dist/emit/upgradeJson.d.ts +5 -0
- package/dist/emit/upgradeJson.js +26 -0
- package/dist/emit/upgradeJson.js.map +1 -0
- package/dist/emit/validateJson.d.ts +10 -5
- package/dist/emit/validateJson.js +22 -8
- package/dist/emit/validateJson.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.js +151 -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/queryIndex.js +1 -1
- package/dist/model/queryIndex.js.map +1 -1
- package/dist/model/rules.d.ts +13 -0
- package/dist/model/rules.js +18 -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.d.ts +20 -0
- package/dist/model/validate.js +94 -45
- package/dist/model/validate.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 +3 -3
- package/dist/templates.js +15 -2
- 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/dist/util/semver.d.ts +19 -0
- package/dist/util/semver.js +54 -0
- package/dist/util/semver.js.map +1 -0
- package/package.json +1 -1
package/dist/catalog/docJoin.js
CHANGED
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
// needs a second, cross-cutting pass over EVERY doc-shaped note on a slice (not just the winning
|
|
35
35
|
// one) to tell "extra" from "dangling" from "unratified". It reuses `NOTE_SLICE_PATH` and
|
|
36
36
|
// `resolveCrossCandidate` below rather than re-deriving the ratification predicate.
|
|
37
|
+
import { continuationOf } from "../model/continuation.js";
|
|
37
38
|
import { makeDiag } from "../model/rules.js";
|
|
38
39
|
import { classifyImplementationDrift } from "./driftSignal.js";
|
|
39
40
|
import { readSliceDoc } from "./readSliceDoc.js";
|
|
@@ -72,6 +73,9 @@ const EMPTY_CONTENT = {
|
|
|
72
73
|
ratifiedOn: null,
|
|
73
74
|
owner: null,
|
|
74
75
|
tracking: null,
|
|
76
|
+
conformedVersion: null,
|
|
77
|
+
conformedAt: null,
|
|
78
|
+
conformedOn: null,
|
|
75
79
|
};
|
|
76
80
|
/**
|
|
77
81
|
* Resolve one slice's doc join. `baseDir` is the `.em` file's directory (doc paths, like note
|
|
@@ -80,7 +84,7 @@ const EMPTY_CONTENT = {
|
|
|
80
84
|
* entries use) so the returned diagnostics point at the same identities every other export
|
|
81
85
|
* diagnostic does — never a second identifier scheme.
|
|
82
86
|
*/
|
|
83
|
-
export function resolveSliceDocJoin(slice, sliceKey, baseDir, elementRefOf) {
|
|
87
|
+
export function resolveSliceDocJoin(model, refs, slice, sliceKey, baseDir, elementRefOf) {
|
|
84
88
|
const path = `slices/${sliceKey}.md`;
|
|
85
89
|
const boundEls = slice.elements.filter((el) => el.note === path);
|
|
86
90
|
if (boundEls.length === 0) {
|
|
@@ -109,9 +113,28 @@ export function resolveSliceDocJoin(slice, sliceKey, baseDir, elementRefOf) {
|
|
|
109
113
|
// read — `slices/request-payment.md` — not the note's original casing. Otherwise a
|
|
110
114
|
// consumer that re-derives the key from `doc.path` (sliceReadyValidate.ts) would try to
|
|
111
115
|
// re-read the mixed-case path and get null on a case-sensitive filesystem.
|
|
112
|
-
return { doc: foundDoc(`slices/${otherKey}.md`, result.doc), diagnostics: [] };
|
|
116
|
+
return { doc: foundDoc(`slices/${otherKey}.md`, result.doc), diagnostics: [], continuationOf: null };
|
|
113
117
|
}
|
|
114
|
-
|
|
118
|
+
// MIL-208: no note-bound doc of its own (`boundEls.length === 0`, checked above) and no
|
|
119
|
+
// ratified MIL-121 cross-binding (the loop just above) — "legacy own doc wins" is
|
|
120
|
+
// satisfied automatically by that same check: an author who wants the old per-instance doc
|
|
121
|
+
// behavior keeps it simply by keeping the `note` on the again view. If this slice is an
|
|
122
|
+
// again-view-only continuation, resolve to the ORIGINATING slice's own doc join instead of
|
|
123
|
+
// falling to `no-doc-bound` — recursing once (never more: the originating slice always
|
|
124
|
+
// holds a plain, non-`again` first declaration, so it can never itself resolve as a
|
|
125
|
+
// continuation — see continuation.ts's own-slice guard).
|
|
126
|
+
const continuation = continuationOf(model, refs, slice.index);
|
|
127
|
+
if (continuation) {
|
|
128
|
+
const originatingSlice = model.slices[continuation.sliceIndex];
|
|
129
|
+
const originatingJoin = resolveSliceDocJoin(model, refs, originatingSlice, continuation.sliceKey, baseDir, elementRefOf);
|
|
130
|
+
// Diagnostics are NOT forwarded here: the originating slice is itself a member of
|
|
131
|
+
// `model.slices` and gets its own resolveSliceDocJoin() call in the same per-slice loop
|
|
132
|
+
// every caller already runs, which already reports these diagnostics once under the
|
|
133
|
+
// originating slice's own refs — repeating them here would duplicate every
|
|
134
|
+
// binding-missing-file/frontmatter-invalid finding under two different `refs`.
|
|
135
|
+
return { doc: originatingJoin.doc, diagnostics: [], continuationOf: continuation.sliceKey };
|
|
136
|
+
}
|
|
137
|
+
return { doc: { found: false, path, reason: "no-doc-bound", ...EMPTY_CONTENT }, diagnostics: [], continuationOf: null };
|
|
115
138
|
}
|
|
116
139
|
const parsed = readSliceDoc(baseDir, sliceKey);
|
|
117
140
|
if (!parsed) {
|
|
@@ -124,6 +147,7 @@ export function resolveSliceDocJoin(slice, sliceKey, baseDir, elementRefOf) {
|
|
|
124
147
|
refs: [sliceKey, ...boundEls.map((el) => elementRefOf(el.id))],
|
|
125
148
|
}),
|
|
126
149
|
],
|
|
150
|
+
continuationOf: null,
|
|
127
151
|
};
|
|
128
152
|
}
|
|
129
153
|
if (!hasUsableFrontmatter(parsed)) {
|
|
@@ -138,9 +162,10 @@ export function resolveSliceDocJoin(slice, sliceKey, baseDir, elementRefOf) {
|
|
|
138
162
|
refs: [sliceKey],
|
|
139
163
|
}),
|
|
140
164
|
],
|
|
165
|
+
continuationOf: null,
|
|
141
166
|
};
|
|
142
167
|
}
|
|
143
|
-
return { doc: foundDoc(path, parsed), diagnostics: [] };
|
|
168
|
+
return { doc: foundDoc(path, parsed), diagnostics: [], continuationOf: null };
|
|
144
169
|
}
|
|
145
170
|
/** Builds the `found: true, reason: null` doc join result shared by a canonical binding and a
|
|
146
171
|
* ratified MIL-121 cross-binding — `path` is whichever path the content actually came from. */
|
|
@@ -162,6 +187,9 @@ function foundDoc(path, parsed) {
|
|
|
162
187
|
ratifiedOn: parsed.ratifiedOn,
|
|
163
188
|
owner: parsed.owner,
|
|
164
189
|
tracking: parsed.tracking,
|
|
190
|
+
conformedVersion: parsed.conformedVersion,
|
|
191
|
+
conformedAt: parsed.conformedAt,
|
|
192
|
+
conformedOn: parsed.conformedOn,
|
|
165
193
|
};
|
|
166
194
|
}
|
|
167
195
|
//# sourceMappingURL=docJoin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docJoin.js","sourceRoot":"","sources":["../../src/catalog/docJoin.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,6FAA6F;AAC7F,2FAA2F;AAC3F,4FAA4F;AAC5F,uFAAuF;AACvF,6FAA6F;AAC7F,oFAAoF;AACpF,0FAA0F;AAC1F,4FAA4F;AAC5F,EAAE;AACF,oFAAoF;AACpF,6FAA6F;AAC7F,4FAA4F;AAC5F,8FAA8F;AAC9F,wCAAwC;AACxC,EAAE;AACF,gGAAgG;AAChG,gGAAgG;AAChG,gGAAgG;AAChG,8FAA8F;AAC9F,iGAAiG;AACjG,6FAA6F;AAC7F,+FAA+F;AAC/F,iGAAiG;AACjG,6FAA6F;AAC7F,gGAAgG;AAChG,oDAAoD;AACpD,EAAE;AACF,6FAA6F;AAC7F,qEAAqE;AACrE,2FAA2F;AAC3F,4FAA4F;AAC5F,iGAAiG;AACjG,0FAA0F;AAC1F,oFAAoF;AAIpF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAmB,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAsB,MAAM,eAAe,CAAC;AAEzE,0FAA0F;AAC1F,oGAAoG;AACpG,0DAA0D;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAG,2CAA2C,CAAC;AAY3E;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,YAAoB,EAAE,QAAgB;IAC3F,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACvC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC9D,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACpE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;
|
|
1
|
+
{"version":3,"file":"docJoin.js","sourceRoot":"","sources":["../../src/catalog/docJoin.ts"],"names":[],"mappings":"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"}
|
|
@@ -174,7 +174,7 @@ export function validateDocModelConsistency(model, refs, baseDir) {
|
|
|
174
174
|
const groups = new Map();
|
|
175
175
|
model.slices.forEach((slice, i) => {
|
|
176
176
|
const sliceKey = refs.sliceKeys[i];
|
|
177
|
-
const { doc } = resolveSliceDocJoin(slice, sliceKey, baseDir, (id) => refs.refById.get(id));
|
|
177
|
+
const { doc } = resolveSliceDocJoin(model, refs, slice, sliceKey, baseDir, (id) => refs.refById.get(id));
|
|
178
178
|
if (!doc.found || doc.reason !== null)
|
|
179
179
|
return; // unbound, missing file, or unusable frontmatter
|
|
180
180
|
const arr = groups.get(doc.path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docModelConsistencyValidate.js","sourceRoot":"","sources":["../../src/catalog/docModelConsistencyValidate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"docModelConsistencyValidate.js","sourceRoot":"","sources":["../../src/catalog/docModelConsistencyValidate.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,+FAA+F;AAC/F,kGAAkG;AAClG,4FAA4F;AAC5F,8FAA8F;AAC9F,iGAAiG;AACjG,sFAAsF;AACtF,uEAAuE;AACvE,EAAE;AACF,2FAA2F;AAC3F,4FAA4F;AAC5F,UAAU;AACV,EAAE;AACF,2FAA2F;AAC3F,4FAA4F;AAC5F,kGAAkG;AAClG,6FAA6F;AAC7F,iGAAiG;AACjG,+FAA+F;AAC/F,iGAAiG;AACjG,EAAE;AACF,2FAA2F;AAC3F,6FAA6F;AAC7F,8FAA8F;AAC9F,gGAAgG;AAChG,4FAA4F;AAC5F,kGAAkG;AAClG,0DAA0D;AAC1D,EAAE;AACF,6FAA6F;AAC7F,6FAA6F;AAC7F,8FAA8F;AAC9F,gGAAgG;AAChG,8FAA8F;AAC9F,0FAA0F;AAC1F,0CAA0C;AAC1C,EAAE;AACF,oFAAoF;AACpF,iGAAiG;AACjG,iGAAiG;AACjG,iGAAiG;AACjG,8FAA8F;AAC9F,iGAAiG;AACjG,4FAA4F;AAC5F,iGAAiG;AACjG,6FAA6F;AAC7F,gGAAgG;AAChG,mFAAmF;AACnF,EAAE;AACF,gGAAgG;AAChG,2FAA2F;AAC3F,iGAAiG;AACjG,kGAAkG;AAClG,2FAA2F;AAC3F,4CAA4C;AAC5C,EAAE;AACF,4FAA4F;AAC5F,4FAA4F;AAE5F,OAAO,EAAmC,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AA8BjD,MAAM,cAAc,GAAG,mCAAmC,CAAC;AAC3D,MAAM,YAAY,GAAG,8DAA8D,CAAC;AACpF,MAAM,WAAW,GAAG,gCAAgC,CAAC;AAErD,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACzD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,GAAG;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,SAAS,GAAG,QAAQ,CAAC;AAC3B,MAAM,oBAAoB,GAAG,UAAU,CAAC;AACxC,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,SAAS,CAAC,GAAuB;IACxC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;qBAIqB;AACrB,SAAS,cAAc,CAAC,KAAe,EAAE,KAAa,EAAE,GAAW;IACjE,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QACzE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,SAAS;QAC5F,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;YAAE,SAAS;QAC9D,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAe,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAE,MAAM;YACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI;gBAAE,SAAS,CAAC,0DAA0D;YAC/E,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;kDAIkD;AAClD,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,GAA2D,EAAE,CAAC;IACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,GAAG,CAAC,CAAC;gBACR,MAAM;YACR,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACzF,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;qEAGqE;AACrE,SAAS,WAAW,CAAC,OAAoB,EAAE,IAAgB;IACzD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;YAAE,SAAS;QAC9B,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAAsB,EAAE,IAAgB,EAAE,OAAe;IACnG,MAAM,KAAK,GAAiB,EAAE,CAAC;IAE/B,gGAAgG;IAChG,yFAAyF;IACzF,2FAA2F;IAC3F,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC;QAC1G,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO,CAAC,iDAAiD;QAChG,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,GAAG;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAChB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IACpD,MAAM,SAAS,GAAG,CAAC,GAAW,EAAmB,EAAE;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACtE,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM;YAAE,SAAS,CAAC,sEAAsE;QAE7F,2FAA2F;QAC3F,4FAA4F;QAC5F,4FAA4F;QAC5F,6FAA6F;QAC7F,mEAAmE;QACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QACrG,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE1C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEnE,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAU,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;gBAAE,SAAS,CAAC,gDAAgD;YAEpF,MAAM,QAAQ,GAAc,EAAE,CAAC;YAC/B,KAAK,MAAM,CAAC,IAAI,YAAY;gBAAE,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ;oBAAE,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI;wBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjH,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;YACjD,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;oBACnB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;YAED,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACrH,IAAI,IAAI,KAAK,MAAM;gBAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CACnB,KAAmB,EACnB,GAAa,EACb,UAAiB,EACjB,QAAgB,EAChB,OAAe;IAEf,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,CAAC,6EAA6E;IACvG,MAAM,UAAU,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,UAAU,KAAK,cAAc;QAAE,OAAO,CAAC,2DAA2D;IACtG,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,UAAU;QAAE,OAAO;IACtD,QAAQ,CAAC,KAAK,EAAE,4BAA4B,EAAE;QAC5C,OAAO,EACL,cAAc,OAAO,yBAAyB,GAAG,CAAC,OAAO,qCAAqC;YAC9F,IAAI,UAAU,CAAC,IAAI,SAAS,UAAU,MAAM,iBAAiB,CAAC,UAAU,CAAC,iCAAiC;QAC5G,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,IAAI,EAAE,CAAC,QAAQ,CAAC;KACjB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAmB,EACnB,IAAgB,EAChB,OAAe,EACf,SAAiC,EACjC,WAAmC,EACnC,UAAiB,EACjB,QAAgB,EAChB,YAAsB,EACtB,KAAsB,EACtB,IAAgB;IAEhB,MAAM,QAAQ,GACZ,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvG,iEAAiE;IACjE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QACtC,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACnC,QAAQ,CAAC,KAAK,EAAE,gCAAgC,EAAE;YAChD,OAAO,EAAE,cAAc,OAAO,cAAc,IAAI,MAAM,MAAM,CAAC,IAAI,cAAc,IAAI,WAAW,MAAM,CAAC,IAAI,wBAAwB,QAAQ,EAAE;YAC3I,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAED,kEAAkE;IAClE,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACjC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QACnD,QAAQ,CAAC,KAAK,EAAE,8BAA8B,EAAE;YAC9C,OAAO,EAAE,UAAU,SAAS,SAAS,IAAI,KAAK,EAAE,CAAC,IAAI,qBAAqB,OAAO,mCAAmC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;YAC/I,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAgB,EAAE,IAAY;IAChD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,oBAAoB,IAAI,gBAAgB,CAAC;IACrE,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IACvD,OAAO,QAAQ,KAAK,SAAS,IAAI,YAAY,CAAC;AAChD,CAAC;AAED,SAAS,WAAW,CAClB,KAAmB,EACnB,IAAyB,EACzB,OAAe,EACf,SAAiC,EACjC,WAAmC,EACnC,KAAsB,EACtB,IAAgB;IAEhB,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,WAAW;YAAE,SAAS,CAAC,mDAAmD;QACtF,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY;YAAE,SAAS,CAAC,2DAA2D;QACxF,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS,CAAC,oCAAoC;QAExF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2C,CAAC;QACvE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAE,CAAC;QACvC,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEjC,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAClC,QAAQ,CAAC,KAAK,EAAE,0BAA0B,EAAE;gBAC1C,OAAO,EAAE,cAAc,OAAO,OAAO,IAAI,MAAM,MAAM,CAAC,IAAI,yBAAyB,EAAE,CAAC,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC,IAAI,aAAa,SAAS,sBAAsB;gBAChK,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,MAAM;aACb,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;YACnC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,QAAQ,CAAC,KAAK,EAAE,0BAA0B,EAAE;oBAC1C,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC,IAAI,aAAa,SAAS,iBAAiB,EAAE,CAAC,IAAI,qBAAqB,OAAO,OAAO,IAAI,MAAM,MAAM,CAAC,IAAI,gCAAgC;oBAClK,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,IAAI,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5E,QAAQ,CAAC,KAAK,EAAE,0BAA0B,EAAE;oBAC1C,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC,IAAI,aAAa,SAAS,iBAAiB,EAAE,CAAC,IAAI,yBAAyB,EAAE,CAAC,IAAI,oBAAoB,OAAO,GAAG;oBAC9J,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,IAAI,EAAE,MAAM;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SliceDoc } from "./sliceDoc.js";
|
|
2
2
|
export type DriftSignalKind =
|
|
3
|
-
/** status: implemented, implementedIn set —
|
|
3
|
+
/** status: implemented, implementedIn set, conformedVersion === version — certified current. */
|
|
4
4
|
"in-sync"
|
|
5
5
|
/** status not implemented, implementedIn absent — normal pre-ship state. */
|
|
6
6
|
| "never-implemented"
|
|
@@ -8,9 +8,15 @@ export type DriftSignalKind =
|
|
|
8
8
|
* Expected, not a defect: never surface this as fresh drift or a validate diagnostic. */
|
|
9
9
|
| "unpropagated-delta"
|
|
10
10
|
/** status: implemented, implementedIn absent — genuine incoherence (em validate warns). */
|
|
11
|
-
| "implemented-without-link"
|
|
11
|
+
| "implemented-without-link"
|
|
12
|
+
/** status: implemented, implementedIn set, but conformedVersion is absent or doesn't match the
|
|
13
|
+
* current version — nobody has certified THIS version yet. Expected post-ship default, not a
|
|
14
|
+
* defect: never surface this as an `em validate` diagnostic (see
|
|
15
|
+
* catalog/frontmatterCoherenceValidate.ts, which only ever flags implemented-without-link). */
|
|
16
|
+
| "uncertified";
|
|
12
17
|
/**
|
|
13
|
-
* Classify a doc's status/implementedIn
|
|
14
|
-
* callers building a partial/synthetic doc (tests, future
|
|
18
|
+
* Classify a doc's status/implementedIn/version/conformedVersion quadruple. Takes a `Pick`
|
|
19
|
+
* rather than the full `SliceDoc` so callers building a partial/synthetic doc (tests, future
|
|
20
|
+
* callers) don't need every field.
|
|
15
21
|
*/
|
|
16
|
-
export declare function classifyImplementationDrift(doc: Pick<SliceDoc, "status" | "implementedIn">): DriftSignalKind;
|
|
22
|
+
export declare function classifyImplementationDrift(doc: Pick<SliceDoc, "status" | "implementedIn" | "version" | "conformedVersion">): DriftSignalKind;
|
|
@@ -11,14 +11,28 @@
|
|
|
11
11
|
// naming the prior version's PR. That combination — `unpropagated-delta` — is the EXPECTED drift
|
|
12
12
|
// signal, not staleness, and must never be flagged as incoherence. Only `implemented-without-link`
|
|
13
13
|
// (status: implemented, no link at all) is a genuine coherence problem worth a diagnostic.
|
|
14
|
+
//
|
|
15
|
+
// MIL-214: certification is per slice PER VERSION, not per model — `implementedIn` only ever
|
|
16
|
+
// said "code exists somewhere for this slice," never "the code that's there was actually walked
|
|
17
|
+
// against version N of this doc." `conformedVersion` (frontmatter, written only by
|
|
18
|
+
// `em slice conform` — cli/sliceConform.ts) records the version a conform run last certified.
|
|
19
|
+
// `uncertified` is the new, EXPECTED post-ship default: a slice reaches `status: implemented`
|
|
20
|
+
// long before anyone runs a conform sweep against it, and every version bump (`em slice
|
|
21
|
+
// reratify`) invalidates the prior certification even though `status`/`implementedIn` still read
|
|
22
|
+
// "shipped" — so this is not folded into `in-sync` and not flagged by `em validate` (same
|
|
23
|
+
// "expected, not a defect" treatment `unpropagated-delta` gets).
|
|
14
24
|
/**
|
|
15
|
-
* Classify a doc's status/implementedIn
|
|
16
|
-
* callers building a partial/synthetic doc (tests, future
|
|
25
|
+
* Classify a doc's status/implementedIn/version/conformedVersion quadruple. Takes a `Pick`
|
|
26
|
+
* rather than the full `SliceDoc` so callers building a partial/synthetic doc (tests, future
|
|
27
|
+
* callers) don't need every field.
|
|
17
28
|
*/
|
|
18
29
|
export function classifyImplementationDrift(doc) {
|
|
19
30
|
const hasLink = typeof doc.implementedIn === "string" && doc.implementedIn.trim().length > 0;
|
|
20
|
-
if (doc.status === "implemented")
|
|
21
|
-
|
|
31
|
+
if (doc.status === "implemented") {
|
|
32
|
+
if (!hasLink)
|
|
33
|
+
return "implemented-without-link";
|
|
34
|
+
return doc.conformedVersion !== null && doc.conformedVersion === doc.version ? "in-sync" : "uncertified";
|
|
35
|
+
}
|
|
22
36
|
return hasLink ? "unpropagated-delta" : "never-implemented";
|
|
23
37
|
}
|
|
24
38
|
//# sourceMappingURL=driftSignal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driftSignal.js","sourceRoot":"","sources":["../../src/catalog/driftSignal.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,uFAAuF;AACvF,2FAA2F;AAC3F,iGAAiG;AACjG,yFAAyF;AACzF,kCAAkC;AAClC,EAAE;AACF,6FAA6F;AAC7F,iGAAiG;AACjG,iGAAiG;AACjG,mGAAmG;AACnG,2FAA2F;
|
|
1
|
+
{"version":3,"file":"driftSignal.js","sourceRoot":"","sources":["../../src/catalog/driftSignal.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,uFAAuF;AACvF,2FAA2F;AAC3F,iGAAiG;AACjG,yFAAyF;AACzF,kCAAkC;AAClC,EAAE;AACF,6FAA6F;AAC7F,iGAAiG;AACjG,iGAAiG;AACjG,mGAAmG;AACnG,2FAA2F;AAC3F,EAAE;AACF,6FAA6F;AAC7F,gGAAgG;AAChG,mFAAmF;AACnF,8FAA8F;AAC9F,8FAA8F;AAC9F,wFAAwF;AACxF,iGAAiG;AACjG,0FAA0F;AAC1F,iEAAiE;AAoBjE;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,GAAgF;IAEhF,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7F,IAAI,GAAG,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO;YAAE,OAAO,0BAA0B,CAAC;QAChD,OAAO,GAAG,CAAC,gBAAgB,KAAK,IAAI,IAAI,GAAG,CAAC,gBAAgB,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;IAC3G,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NormalizedModel } from "../model/model.js";
|
|
2
|
+
import { RefsResult } from "../model/refs.js";
|
|
3
|
+
import { Diagnostic } from "../model/validate.js";
|
|
4
|
+
/**
|
|
5
|
+
* `baseDir` is the `.em` file's directory (manifests live at `<baseDir>/model-versions/`, same
|
|
6
|
+
* convention every other doc/note/manifest path in `em` uses); `source` is the `.em` file's own
|
|
7
|
+
* text, for the modelHash comparison.
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateModelVersionStale(model: NormalizedModel, refs: RefsResult, baseDir: string, source: string): Diagnostic[];
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// `em validate`'s `model-version-stale` rule (MIL-218): warns when the `.em` content hash or
|
|
3
|
+
// the slice-version vector has moved since the last `em model version bump` — the same
|
|
4
|
+
// `modelVersionDrift` predicate `em status` and the `em slice ratify`/`reratify` advisory
|
|
5
|
+
// share, never re-derived a third way. Same fs-aware-sibling shape as
|
|
6
|
+
// catalog/frontmatterCoherenceValidate.ts/orphanedSliceDocValidate.ts: a module next to
|
|
7
|
+
// model/validate.ts, not folded into it, because it needs `baseDir`/fs access (the
|
|
8
|
+
// `model-versions/*.json` manifest) the rest of validate deliberately never touches.
|
|
9
|
+
//
|
|
10
|
+
// Silent when no manifest exists at all (`drift.current === null`) — a repo that never bumped a
|
|
11
|
+
// design version has nothing to be stale against; nagging a project that has never opted into
|
|
12
|
+
// this feature would be exactly the "surprise new warning on every model" failure mode the
|
|
13
|
+
// ruling's "silent when no manifest exists" clause exists to avoid. Warning, never error:
|
|
14
|
+
// nothing about a stale design version blocks anything else in the model.
|
|
15
|
+
import { pushDiag } from "../model/rules.js";
|
|
16
|
+
import { modelVersionDrift } from "../cli/modelVersion.js";
|
|
17
|
+
/**
|
|
18
|
+
* `baseDir` is the `.em` file's directory (manifests live at `<baseDir>/model-versions/`, same
|
|
19
|
+
* convention every other doc/note/manifest path in `em` uses); `source` is the `.em` file's own
|
|
20
|
+
* text, for the modelHash comparison.
|
|
21
|
+
*/
|
|
22
|
+
export function validateModelVersionStale(model, refs, baseDir, source) {
|
|
23
|
+
const drift = modelVersionDrift(baseDir, model, refs, source);
|
|
24
|
+
if (drift.current === null || (!drift.hashChanged && drift.slicesChanged.length === 0))
|
|
25
|
+
return [];
|
|
26
|
+
const parts = [];
|
|
27
|
+
if (drift.hashChanged)
|
|
28
|
+
parts.push("the model's own content changed");
|
|
29
|
+
if (drift.slicesChanged.length > 0) {
|
|
30
|
+
parts.push(`${drift.slicesChanged.length} slice(s) moved (${drift.slicesChanged.map((c) => c.key).join(", ")})`);
|
|
31
|
+
}
|
|
32
|
+
const diags = [];
|
|
33
|
+
pushDiag(diags, "model-version-stale", {
|
|
34
|
+
message: `model version v${drift.current} is stale — ${parts.join(" and ")} since it was bumped; run \`em model version bump\` to record it`,
|
|
35
|
+
});
|
|
36
|
+
return diags;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=modelVersionValidate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelVersionValidate.js","sourceRoot":"","sources":["../../src/catalog/modelVersionValidate.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,6FAA6F;AAC7F,uFAAuF;AACvF,0FAA0F;AAC1F,sEAAsE;AACtE,wFAAwF;AACxF,mFAAmF;AACnF,qFAAqF;AACrF,EAAE;AACF,gGAAgG;AAChG,8FAA8F;AAC9F,2FAA2F;AAC3F,0FAA0F;AAC1F,0EAA0E;AAK1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAsB,EAAE,IAAgB,EAAE,OAAe,EAAE,MAAc;IACjH,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAElG,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,oBAAoB,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnH,CAAC;IACD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE;QACrC,OAAO,EAAE,kBAAkB,KAAK,CAAC,OAAO,eAAe,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kEAAkE;KAC7I,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
// continue`) — the exact-case behavior predates this ticket. This module mirrors that same skip
|
|
44
44
|
// rather than inventing a new case-sensitivity linter MIL-126 never asked for; such a note stays
|
|
45
45
|
// exactly as inert as it always was.
|
|
46
|
+
import { continuationOf } from "../model/continuation.js";
|
|
46
47
|
import { pushDiag } from "../model/rules.js";
|
|
47
48
|
import { NOTE_SLICE_PATH, resolveCrossCandidate } from "./docJoin.js";
|
|
48
49
|
/**
|
|
@@ -55,6 +56,23 @@ export function validateNoteBindings(model, refs, baseDir) {
|
|
|
55
56
|
const sliceKey = refs.sliceKeys[sliceIndex];
|
|
56
57
|
const canonicalPath = `slices/${sliceKey}.md`;
|
|
57
58
|
const hasCanonical = slice.elements.some((el) => el.note === canonicalPath);
|
|
59
|
+
// MIL-208: a continuation slice (an again-view-only slice) that still carries its own
|
|
60
|
+
// canonical note-bound doc is the "legacy own doc" migration case — resolveSliceDocJoin
|
|
61
|
+
// never redirects it (today's behavior is unchanged), but it's flagged here so an author
|
|
62
|
+
// knows to fold this doc into the originating slice's and delete it.
|
|
63
|
+
if (hasCanonical) {
|
|
64
|
+
const continuation = continuationOf(model, refs, sliceIndex);
|
|
65
|
+
if (continuation) {
|
|
66
|
+
const boundEl = slice.elements.find((el) => el.note === canonicalPath);
|
|
67
|
+
const viewName = model.byId.get(continuation.viewLogicalId).name;
|
|
68
|
+
pushDiag(diags, "continuation-has-own-doc", {
|
|
69
|
+
message: `slice "${slice.name}" is a continuation of "${continuation.sliceKey}" (view "${viewName}" again) ` +
|
|
70
|
+
`but still has its own doc at "${canonicalPath}" — fold it into slices/${continuation.sliceKey}.md and delete it`,
|
|
71
|
+
line: boundEl.line,
|
|
72
|
+
refs: [sliceKey, refs.refById.get(boundEl.id)],
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
58
76
|
// Mirrors resolveSliceDocJoin's own precedence exactly: canonical (any element noting the
|
|
59
77
|
// exact own path, regardless of whether that doc actually resolves) wins outright; otherwise
|
|
60
78
|
// the first ratified cross-binding candidate in element order. `boundPath` is null when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noteBindingValidate.js","sourceRoot":"","sources":["../../src/catalog/noteBindingValidate.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,8FAA8F;AAC9F,4FAA4F;AAC5F,gGAAgG;AAChG,6FAA6F;AAC7F,+EAA+E;AAC/E,4FAA4F;AAC5F,iGAAiG;AACjG,8BAA8B;AAC9B,EAAE;AACF,kGAAkG;AAClG,6FAA6F;AAC7F,+FAA+F;AAC/F,gFAAgF;AAChF,EAAE;AACF,8FAA8F;AAC9F,iGAAiG;AACjG,gGAAgG;AAChG,4EAA4E;AAC5E,EAAE;AACF,iGAAiG;AACjG,iFAAiF;AACjF,8FAA8F;AAC9F,6CAA6C;AAC7C,+FAA+F;AAC/F,6FAA6F;AAC7F,uEAAuE;AACvE,0CAA0C;AAC1C,+FAA+F;AAC/F,2FAA2F;AAC3F,yFAAyF;AACzF,6FAA6F;AAC7F,qEAAqE;AACrE,8FAA8F;AAC9F,8FAA8F;AAC9F,8FAA8F;AAC9F,oCAAoC;AACpC,EAAE;AACF,2FAA2F;AAC3F,kGAAkG;AAClG,gGAAgG;AAChG,8FAA8F;AAC9F,gGAAgG;AAChG,iGAAiG;AACjG,qCAAqC;
|
|
1
|
+
{"version":3,"file":"noteBindingValidate.js","sourceRoot":"","sources":["../../src/catalog/noteBindingValidate.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,5 +7,12 @@ import { Diagnostic } from "../model/validate.js";
|
|
|
7
7
|
* `baseDir` is the `.em` file's directory, same convention every other doc/note path in em uses.
|
|
8
8
|
* Returns `[]` when `slices/` doesn't exist at all — nothing to a scan with no directory to walk,
|
|
9
9
|
* the ordinary state for a model that hasn't authored any slice docs yet.
|
|
10
|
+
*
|
|
11
|
+
* MIL-208: also flags (`continuation-has-own-doc`) a file that DOES match a current slice's key
|
|
12
|
+
* — so it isn't "orphaned" in this rule's usual rename/removal sense — when that slice is a
|
|
13
|
+
* continuation (an again-view-only slice) and the file isn't actually bound via `note`. Such a
|
|
14
|
+
* file is invisible to everything else: `docJoin.ts`'s continuation fallback only ever engages
|
|
15
|
+
* when the slice carries no note at all, so it silently ignores the file rather than reading it
|
|
16
|
+
* — the note-bound sibling case is `noteBindingValidate.ts`'s to catch instead.
|
|
10
17
|
*/
|
|
11
|
-
export declare function validateOrphanedSliceDocs(
|
|
18
|
+
export declare function validateOrphanedSliceDocs(model: NormalizedModel, refs: RefsResult, baseDir: string): Diagnostic[];
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
// frontmatter — the same declare-gating posture docModelConsistencyValidate.ts's checks take.
|
|
34
34
|
import { readdirSync, readFileSync } from "node:fs";
|
|
35
35
|
import { join } from "node:path";
|
|
36
|
+
import { continuationOf } from "../model/continuation.js";
|
|
36
37
|
import { pushDiag } from "../model/rules.js";
|
|
37
38
|
import { hasUsableFrontmatter, parseSliceDoc } from "./sliceDoc.js";
|
|
38
39
|
/**
|
|
@@ -41,11 +42,15 @@ import { hasUsableFrontmatter, parseSliceDoc } from "./sliceDoc.js";
|
|
|
41
42
|
* `baseDir` is the `.em` file's directory, same convention every other doc/note path in em uses.
|
|
42
43
|
* Returns `[]` when `slices/` doesn't exist at all — nothing to a scan with no directory to walk,
|
|
43
44
|
* the ordinary state for a model that hasn't authored any slice docs yet.
|
|
45
|
+
*
|
|
46
|
+
* MIL-208: also flags (`continuation-has-own-doc`) a file that DOES match a current slice's key
|
|
47
|
+
* — so it isn't "orphaned" in this rule's usual rename/removal sense — when that slice is a
|
|
48
|
+
* continuation (an again-view-only slice) and the file isn't actually bound via `note`. Such a
|
|
49
|
+
* file is invisible to everything else: `docJoin.ts`'s continuation fallback only ever engages
|
|
50
|
+
* when the slice carries no note at all, so it silently ignores the file rather than reading it
|
|
51
|
+
* — the note-bound sibling case is `noteBindingValidate.ts`'s to catch instead.
|
|
44
52
|
*/
|
|
45
|
-
export function validateOrphanedSliceDocs(
|
|
46
|
-
// `_model` is unused — `refs.sliceKeys` already carries every current slice's key. Kept in the
|
|
47
|
-
// signature anyway to match every sibling fs-aware rule's `(model, refs, baseDir)` shape, so
|
|
48
|
-
// every call site can pass the same three arguments uniformly.
|
|
53
|
+
export function validateOrphanedSliceDocs(model, refs, baseDir) {
|
|
49
54
|
const slicesDir = join(baseDir, "slices");
|
|
50
55
|
let entries;
|
|
51
56
|
try {
|
|
@@ -62,8 +67,30 @@ export function validateOrphanedSliceDocs(_model, refs, baseDir) {
|
|
|
62
67
|
if (!entry.toLowerCase().endsWith(".md"))
|
|
63
68
|
continue; // not a slice-doc-shaped file at all
|
|
64
69
|
const key = entry.slice(0, -".md".length);
|
|
65
|
-
if (liveKeys.has(key.toLowerCase()))
|
|
66
|
-
|
|
70
|
+
if (liveKeys.has(key.toLowerCase())) {
|
|
71
|
+
// Matches a current slice's key by name — never "orphaned" in this rule's usual sense —
|
|
72
|
+
// UNLESS (MIL-208) that slice is a continuation with no note actually binding this file:
|
|
73
|
+
// the file then sits there invisible to docJoin's continuation fallback (which only
|
|
74
|
+
// engages on a noteless slice, but never reads a stray file either).
|
|
75
|
+
const sliceIndex = refs.sliceKeys.findIndex((k) => k.toLowerCase() === key.toLowerCase());
|
|
76
|
+
const continuation = sliceIndex === -1 ? null : continuationOf(model, refs, sliceIndex);
|
|
77
|
+
if (continuation) {
|
|
78
|
+
const slice = model.slices[sliceIndex];
|
|
79
|
+
const sliceKey = refs.sliceKeys[sliceIndex];
|
|
80
|
+
const canonicalPath = `slices/${sliceKey}.md`;
|
|
81
|
+
const hasCanonical = slice.elements.some((el) => el.note === canonicalPath);
|
|
82
|
+
if (!hasCanonical) {
|
|
83
|
+
const viewName = model.byId.get(continuation.viewLogicalId).name;
|
|
84
|
+
pushDiag(diags, "continuation-has-own-doc", {
|
|
85
|
+
message: `slice "${slice.name}" is a continuation of "${continuation.sliceKey}" (view "${viewName}" again) ` +
|
|
86
|
+
`— "slices/${entry}" exists but isn't bound via \`note\`, so it's never read — fold it into ` +
|
|
87
|
+
`slices/${continuation.sliceKey}.md and delete it`,
|
|
88
|
+
refs: [sliceKey],
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
67
94
|
let parsed;
|
|
68
95
|
try {
|
|
69
96
|
parsed = parseSliceDoc(readFileSync(join(slicesDir, entry), "utf8"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orphanedSliceDocValidate.js","sourceRoot":"","sources":["../../src/catalog/orphanedSliceDocValidate.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,iGAAiG;AACjG,iGAAiG;AACjG,mFAAmF;AACnF,yFAAyF;AACzF,kGAAkG;AAClG,+FAA+F;AAC/F,+FAA+F;AAC/F,8FAA8F;AAC9F,yFAAyF;AACzF,oEAAoE;AACpE,EAAE;AACF,+FAA+F;AAC/F,8EAA8E;AAC9E,+FAA+F;AAC/F,gGAAgG;AAChG,iGAAiG;AACjG,kGAAkG;AAClG,kGAAkG;AAClG,iGAAiG;AACjG,iGAAiG;AACjG,8FAA8F;AAC9F,4FAA4F;AAC5F,+FAA+F;AAC/F,uBAAuB;AACvB,EAAE;AACF,kFAAkF;AAClF,8FAA8F;AAC9F,kGAAkG;AAClG,gGAAgG;AAChG,6FAA6F;AAC7F,+FAA+F;AAC/F,8FAA8F;AAE9F,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"orphanedSliceDocValidate.js","sourceRoot":"","sources":["../../src/catalog/orphanedSliceDocValidate.ts"],"names":[],"mappings":"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"}
|
package/dist/catalog/pages.d.ts
CHANGED
|
@@ -38,8 +38,23 @@ export interface SlicePageArgs {
|
|
|
38
38
|
pattern: SlicePattern;
|
|
39
39
|
/** Internal Element.id -> em export ref, for stable per-row anchors. */
|
|
40
40
|
elementRefs: Map<string, string>;
|
|
41
|
+
/** This slice's own doc, OR (MIL-121/MIL-137) a sibling doc that ratifies coverage of this
|
|
42
|
+
* slice — either way, the doc whose status/pattern this slice's badge and the index Status
|
|
43
|
+
* column should show. Which one it is is `coveredBy`'s job to say. */
|
|
41
44
|
doc: SliceDoc | null;
|
|
42
|
-
/**
|
|
45
|
+
/** Non-null exactly when `doc` came from a covering sibling rather than this slice's own
|
|
46
|
+
* `slices/<key>.md` — the detail page shows a banner linking to that other slice's own page
|
|
47
|
+
* instead of inlining `doc`'s body under this slice's name. `kind` distinguishes the two ways
|
|
48
|
+
* that can happen: `"covers"` (MIL-121 `covers:`, MIL-137 — a hand-authored cross-binding)
|
|
49
|
+
* vs. `"continuation"` (MIL-208 — an again-view-only slice, structural, no frontmatter
|
|
50
|
+
* involved). */
|
|
51
|
+
coveredBy: {
|
|
52
|
+
key: string;
|
|
53
|
+
name: string;
|
|
54
|
+
kind: "covers" | "continuation";
|
|
55
|
+
} | null;
|
|
56
|
+
/** slices/<slug>.md, relative to the source .em file — shown when no doc was found (own or
|
|
57
|
+
* covering). */
|
|
43
58
|
docExpectedPath: string;
|
|
44
59
|
}
|
|
45
60
|
export declare function renderSlicePage(args: SlicePageArgs): string;
|
package/dist/catalog/pages.js
CHANGED
|
@@ -73,6 +73,7 @@ function layout(title, bodyHtml, homeHref) {
|
|
|
73
73
|
.doc h1 { font-size: 1.3rem; }
|
|
74
74
|
.doc h2 { font-size: 1.05rem; }
|
|
75
75
|
.no-doc { color: #7b8794; font-style: italic; }
|
|
76
|
+
.covered-by { color: #52606d; font-style: italic; }
|
|
76
77
|
code { background: #eee; padding: .05rem .3rem; border-radius: 3px; }
|
|
77
78
|
</style>
|
|
78
79
|
</head>
|
|
@@ -159,10 +160,21 @@ ${rows}
|
|
|
159
160
|
</table>`;
|
|
160
161
|
}
|
|
161
162
|
export function renderSlicePage(args) {
|
|
162
|
-
const { modelName, diagramFile, sliceDiagramFile, slice, pattern, elementRefs, doc, docExpectedPath } = args;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
const { modelName, diagramFile, sliceDiagramFile, slice, pattern, elementRefs, doc, coveredBy, docExpectedPath } = args;
|
|
164
|
+
// coveredBy checked first: doc is non-null here too (it's the covering/originating doc,
|
|
165
|
+
// borrowed for status/pattern purposes — see SlicePageArgs), but its body is deliberately
|
|
166
|
+
// never inlined under a different slice's name (orchestrator ruling, MIL-137) — only the
|
|
167
|
+
// banner is. `kind` picks the wording: MIL-121 `covers:` reads "documented as part of" (a
|
|
168
|
+
// shared spec for two named-and-ratified slices); MIL-208 `continuation` reads "continuation
|
|
169
|
+
// of" (a structural fact — later `again` positions of the same read model, no frontmatter
|
|
170
|
+
// involved).
|
|
171
|
+
const docSection = coveredBy
|
|
172
|
+
? coveredBy.kind === "continuation"
|
|
173
|
+
? ` <p class="covered-by">Continuation of <a href="${escapeHtml(coveredBy.key)}.html">${escapeHtml(coveredBy.name)}</a> — documented in <code>slices/${escapeHtml(coveredBy.key)}.md</code>.</p>`
|
|
174
|
+
: ` <p class="covered-by">Documented as part of <a href="${escapeHtml(coveredBy.key)}.html">${escapeHtml(coveredBy.name)}</a> — see <code>slices/${escapeHtml(coveredBy.key)}.md</code>.</p>`
|
|
175
|
+
: doc
|
|
176
|
+
? ` <div class="doc">${doc.html}</div>`
|
|
177
|
+
: ` <p class="no-doc">No slice doc found at <code>${escapeHtml(docExpectedPath)}</code>.</p>`;
|
|
166
178
|
return layout(`${slice.name} — ${modelName}`, ` <p><a href="../../index.html">← ${escapeHtml(modelName)}</a></p>
|
|
167
179
|
<h1>${escapeHtml(slice.name)}</h1>
|
|
168
180
|
<p class="pattern">${escapeHtml(slicePatternLabel(pattern))} · <span class="status">${escapeHtml(statusLabel(!!doc, doc?.status ?? null))}</span></p>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/catalog/pages.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,6EAA6E;AAC7E,uEAAuE;AACvE,wEAAwE;AACxE,8EAA8E;AAC9E,8EAA8E;AAG9E,OAAO,EAAgB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGhE,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5B,CAAC;AAwBD;;uEAEuE;AACvE,SAAS,WAAW,CAAC,MAAe,EAAE,MAAqB;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC7B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;wEACwE;AACxE,SAAS,eAAe,CAAC,MAAqB;IAC5C,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;AAC1D,CAAC;AAED;;;+BAG+B;AAC/B,SAAS,MAAM,CAAC,KAAa,EAAE,QAAgB,EAAE,QAAgB;IAC/D,OAAO;;;;WAIE,UAAU,CAAC,KAAK,CAAC
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/catalog/pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,6 +82,18 @@ export interface SliceDoc {
|
|
|
82
82
|
* to find the ticket mirroring this slice — its export name/shape (docJoin.ts) is a
|
|
83
83
|
* cross-tool contract, not just an internal display field. */
|
|
84
84
|
tracking: string | null;
|
|
85
|
+
/** MIL-214: `conformedVersion:` — this slice's `version:` at the time a conform sweep last
|
|
86
|
+
* certified it, or null when never certified. Written only by `em slice conform`. Paired with
|
|
87
|
+
* `version` to compute `driftSignal`'s `uncertified` case (catalog/driftSignal.ts). */
|
|
88
|
+
conformedVersion: number | null;
|
|
89
|
+
/** MIL-214: `conformedAt:` — the target repo's revision that certification sweep diffed
|
|
90
|
+
* against, or null when absent. Written only by `em slice conform`; a plain revision string,
|
|
91
|
+
* NOT a `<slice-key>@v<N>` lineage ref. */
|
|
92
|
+
conformedAt: string | null;
|
|
93
|
+
/** MIL-214: `conformedOn:` — a `YYYY-MM-DD` date string, or null when absent. Written only by
|
|
94
|
+
* `em slice conform`; validated by the CLI layer, not re-validated here (this parser stays as
|
|
95
|
+
* lenient about value shape as every other frontmatter field). */
|
|
96
|
+
conformedOn: string | null;
|
|
85
97
|
/** True when a well-formed leading `---`/`---` frontmatter fence was found and
|
|
86
98
|
* closed — independent of which keys it contained. False for a legacy
|
|
87
99
|
* status-bullet-only doc, a doc with no frontmatter at all, or an
|
package/dist/catalog/sliceDoc.js
CHANGED
|
@@ -47,6 +47,18 @@
|
|
|
47
47
|
// particular is the field em-tracker-bridge reads to find the mirrored ticket, so its export
|
|
48
48
|
// name/shape is a cross-tool contract — see docJoin.ts/emit/json.ts. Additive,
|
|
49
49
|
// tolerate-unknown-fields: absent on every doc predating this feature.
|
|
50
|
+
//
|
|
51
|
+
// `conformedVersion`/`conformedAt`/`conformedOn` (MIL-214) are a ninth, tenth, and eleventh
|
|
52
|
+
// optional frontmatter-only field: per-slice-per-version certification, written only by
|
|
53
|
+
// `em slice conform` (cli/sliceConform.ts) — same "one write path" discipline `implementedIn`
|
|
54
|
+
// has with `em slice mark-implemented`. `conformedVersion` is this slice's own `version:` at the
|
|
55
|
+
// time a conform sweep last certified it (a cache of git truth, not derived/validated against
|
|
56
|
+
// git history — same convention `version` itself already uses); `conformedAt` is the TARGET
|
|
57
|
+
// REPO'S revision that sweep diffed against (a plain revision string, not a slice-doc lineage
|
|
58
|
+
// ref — deliberately NOT `<slice-key>@v<N>` shaped); `conformedOn` is the local date the
|
|
59
|
+
// certification was recorded. All three additive, tolerate-unknown-fields: absent on every doc
|
|
60
|
+
// predating this feature, or one never yet conformed. See catalog/driftSignal.ts's `uncertified`
|
|
61
|
+
// classification, which compares `conformedVersion` against `version`.
|
|
50
62
|
import { marked } from "marked";
|
|
51
63
|
/** Frontmatter keys docs/slice-doc-schema.md's required-vs-optional table marks
|
|
52
64
|
* required at every `status` — the mechanical basis for `frontmatter-invalid`
|
|
@@ -202,6 +214,9 @@ export function parseSliceDoc(markdown) {
|
|
|
202
214
|
ratifiedOn: fields.get("ratifiedon") ?? null,
|
|
203
215
|
owner: fields.get("owner") ?? null,
|
|
204
216
|
tracking: fields.get("tracking") ?? null,
|
|
217
|
+
conformedVersion: parseVersion(fields.get("conformedversion")),
|
|
218
|
+
conformedAt: fields.get("conformedat") ?? null,
|
|
219
|
+
conformedOn: fields.get("conformedon") ?? null,
|
|
205
220
|
frontmatterPresent,
|
|
206
221
|
missingRequiredFields: REQUIRED_FRONTMATTER_KEYS.filter((k) => !fields.has(k)),
|
|
207
222
|
html: marked.parse(body, { async: false }),
|