@milehimikey/em 1.16.0 → 1.17.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 +3 -2
- package/.claude/skills/event-modeling-conform/reference/conform.md +7 -0
- package/.claude/skills/event-modeling-design/SKILL.md +1 -1
- package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
- package/.claude/skills/event-modeling-engagement/SKILL.md +22 -5
- package/.claude/skills/event-modeling-engagement/reference/engagement.md +5 -4
- package/.claude/skills/event-modeling-implement/SKILL.md +1 -1
- package/.claude/skills/event-modeling-implement/reference/implement.md +10 -8
- package/.claude/skills/event-modeling-review/SKILL.md +1 -1
- package/.claude/skills/event-modeling-shared/reference/em-dsl.md +17 -5
- package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +26 -13
- package/.claude-plugin/marketplace.json +2 -2
- package/dist/catalog/docJoin.d.ts +13 -5
- package/dist/catalog/docJoin.js +6 -1
- package/dist/catalog/docJoin.js.map +1 -1
- package/dist/catalog/signedBodyValidate.d.ts +7 -0
- package/dist/catalog/signedBodyValidate.js +29 -0
- package/dist/catalog/signedBodyValidate.js.map +1 -0
- package/dist/catalog/sliceDoc.d.ts +53 -7
- package/dist/catalog/sliceDoc.js +89 -10
- package/dist/catalog/sliceDoc.js.map +1 -1
- package/dist/catalog/sliceReadyValidate.d.ts +15 -2
- package/dist/catalog/sliceReadyValidate.js +19 -19
- package/dist/catalog/sliceReadyValidate.js.map +1 -1
- package/dist/cli/defer.d.ts +32 -17
- package/dist/cli/defer.js +100 -82
- package/dist/cli/defer.js.map +1 -1
- package/dist/cli/engagement.d.ts +46 -0
- package/dist/cli/engagement.js +133 -1
- package/dist/cli/engagement.js.map +1 -1
- package/dist/cli/engagementFoundation.d.ts +47 -0
- package/dist/cli/engagementFoundation.js +164 -0
- package/dist/cli/engagementFoundation.js.map +1 -0
- package/dist/cli/frontmatterSurgery.d.ts +5 -0
- package/dist/cli/frontmatterSurgery.js +15 -0
- package/dist/cli/frontmatterSurgery.js.map +1 -1
- package/dist/cli/ledgerCheck.d.ts +5 -1
- package/dist/cli/ledgerCheck.js +50 -20
- package/dist/cli/ledgerCheck.js.map +1 -1
- package/dist/cli/ratify.d.ts +14 -2
- package/dist/cli/ratify.js +34 -6
- package/dist/cli/ratify.js.map +1 -1
- package/dist/cli/refsCheck.d.ts +78 -0
- package/dist/cli/refsCheck.js +153 -0
- package/dist/cli/refsCheck.js.map +1 -0
- package/dist/cli/revise.d.ts +10 -3
- package/dist/cli/revise.js +36 -8
- package/dist/cli/revise.js.map +1 -1
- package/dist/cli/sliceConform.js +9 -0
- package/dist/cli/sliceConform.js.map +1 -1
- package/dist/cli/status.d.ts +5 -4
- package/dist/cli/status.js +3 -3
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/upgrade.d.ts +1 -1
- package/dist/cli/upgrade.js +113 -3
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli.js +151 -33
- package/dist/cli.js.map +1 -1
- package/dist/emit/engagementJson.d.ts +4 -1
- package/dist/emit/engagementJson.js +25 -1
- package/dist/emit/engagementJson.js.map +1 -1
- package/dist/emit/json.d.ts +1 -1
- package/dist/emit/json.js +4 -1
- 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/refsJson.d.ts +4 -0
- package/dist/emit/refsJson.js +19 -0
- package/dist/emit/refsJson.js.map +1 -0
- package/dist/emit/validateJson.d.ts +2 -2
- package/dist/emit/validateJson.js +7 -2
- package/dist/emit/validateJson.js.map +1 -1
- package/dist/mcp/server.js +37 -7
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/rules.d.ts +18 -1
- package/dist/model/rules.js +20 -3
- package/dist/model/rules.js.map +1 -1
- package/dist/parser/lexer.d.ts +7 -1
- package/dist/parser/lexer.js +13 -2
- package/dist/parser/lexer.js.map +1 -1
- package/dist/render/watch.d.ts +2 -2
- package/dist/render/watch.js +9 -5
- package/dist/render/watch.js.map +1 -1
- package/package.json +2 -2
- package/plugin/.claude-plugin/plugin.json +2 -2
- package/plugin/shared/reference/em-dsl.md +17 -5
- package/plugin/shared/reference/slice-doc-schema.md +26 -13
- package/plugin/skills/conform/SKILL.md +3 -2
- package/plugin/skills/conform/reference/conform.md +7 -0
- package/plugin/skills/design/SKILL.md +1 -1
- package/plugin/skills/discover/SKILL.md +1 -1
- package/plugin/skills/engagement/SKILL.md +22 -5
- package/plugin/skills/engagement/reference/engagement.md +5 -4
- package/plugin/skills/event-modeling/SKILL.md +1 -1
- package/plugin/skills/implement/SKILL.md +1 -1
- package/plugin/skills/implement/reference/implement.md +10 -8
- package/plugin/skills/review/SKILL.md +1 -1
package/dist/cli/ledgerCheck.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// second, divergent git plumbing.
|
|
13
13
|
import { existsSync, readdirSync } from "node:fs";
|
|
14
14
|
import { basename, dirname, join, resolve } from "node:path";
|
|
15
|
-
import { hasUsableFrontmatter } from "../catalog/sliceDoc.js";
|
|
15
|
+
import { hasUsableFrontmatter, ratifiedBody } from "../catalog/sliceDoc.js";
|
|
16
16
|
import { readSliceDoc } from "../catalog/readSliceDoc.js";
|
|
17
17
|
import { realGit, listSliceKeysAtRevision, resolveDocAtRevision } from "./diff-inputs.js";
|
|
18
18
|
/** Slice keys currently on disk under `<baseDir>/slices/*.md` — the working-tree counterpart to
|
|
@@ -89,7 +89,10 @@ export function checkLedger(anchorFile, from, to, runGit = realGit) {
|
|
|
89
89
|
}
|
|
90
90
|
const oldVersion = oldDoc.version;
|
|
91
91
|
const newVersion = newDoc.version;
|
|
92
|
-
|
|
92
|
+
// GH #253/#257: "content" is the SIGNED content — `ratifiedBody()` leaves out the `## Open
|
|
93
|
+
// Questions` heading and its `deferred to v<n>` items, so a deferral `em slice defer` wrote
|
|
94
|
+
// into a ratified doc is not a content change here either (it describes a later version).
|
|
95
|
+
const bodyChanged = ratifiedBody(oldDoc.body).trim() !== ratifiedBody(newDoc.body).trim();
|
|
93
96
|
const docsLineageChanged = lineageChanged(oldDoc, newDoc);
|
|
94
97
|
const contentChanged = bodyChanged || docsLineageChanged;
|
|
95
98
|
let code = null;
|
|
@@ -102,19 +105,41 @@ export function checkLedger(anchorFile, from, to, runGit = realGit) {
|
|
|
102
105
|
else if (!contentChanged && newVersion > oldVersion) {
|
|
103
106
|
code = "ledger-version-without-content-change";
|
|
104
107
|
}
|
|
105
|
-
if (
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
108
|
+
if (code) {
|
|
109
|
+
const message = code === "ledger-version-regression"
|
|
110
|
+
? `slice "${sliceKey}": version went backwards (v${oldVersion} -> v${newVersion})`
|
|
111
|
+
: code === "ledger-content-without-version-bump"
|
|
112
|
+
? `slice "${sliceKey}": doc content changed but version: didn't bump (still v${oldVersion})`
|
|
113
|
+
: `slice "${sliceKey}": version: bumped (v${oldVersion} -> v${newVersion}) but doc content is unchanged`;
|
|
114
|
+
findings.push({ sliceKey, code, message, oldVersion, newVersion, bodyChanged, lineageChanged: docsLineageChanged });
|
|
115
|
+
}
|
|
116
|
+
// GH #257: independent of the version rule. A re-ratification writes a fresh hash (and
|
|
117
|
+
// `revise` clears it first), so "same hash, different signed body" can only be an edit that
|
|
118
|
+
// bypassed both gates — including one that bumped `version:` by hand. Docs with no hash on
|
|
119
|
+
// the old side (ratified before 1.15) have nothing to hold them to.
|
|
120
|
+
if (bodyChanged && oldDoc.ratifiedHash !== null && oldDoc.ratifiedHash === newDoc.ratifiedHash) {
|
|
121
|
+
findings.push({
|
|
122
|
+
sliceKey,
|
|
123
|
+
code: "ledger-body-changed-without-reratification",
|
|
124
|
+
message: `slice "${sliceKey}": signed body changed but ratifiedHash did not (v${oldVersion} -> v${newVersion}) — edited without re-ratification`,
|
|
125
|
+
oldVersion,
|
|
126
|
+
newVersion,
|
|
127
|
+
bodyChanged,
|
|
128
|
+
lineageChanged: docsLineageChanged,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
113
131
|
}
|
|
114
132
|
return { findings, waived: [], skipped, checkedCount: keys.length };
|
|
115
133
|
}
|
|
116
134
|
/** The only finding code a waiver may excuse (MIL-185, R9) — see `WaivedLedgerFinding`. */
|
|
117
|
-
|
|
135
|
+
/** The findings a waiver may excuse: the formatting-only false positive (MIL-185) and, since GH
|
|
136
|
+
* #257, the hash finding — a repo baselining docs edited before it started enforcing the hash
|
|
137
|
+
* needs a way to say so, auditably. A version regression or a bump with no content change
|
|
138
|
+
* stays unwaivable. A waiver names a slice key and excuses every waivable finding on it. */
|
|
139
|
+
const WAIVABLE_LEDGER_CODES = new Set([
|
|
140
|
+
"ledger-content-without-version-bump",
|
|
141
|
+
"ledger-body-changed-without-reratification",
|
|
142
|
+
]);
|
|
118
143
|
// `%x00`/`%x01` are git's own pretty-format escapes for those literal bytes — git substitutes
|
|
119
144
|
// them into its OUTPUT, so the argv string handed to spawnSync stays plain ASCII text (an actual
|
|
120
145
|
// embedded NUL byte in an argv string throws in Node's child_process). The output bytes they
|
|
@@ -196,8 +221,9 @@ export function readLedgerWaiverTrailers(anchorFile, from, to, runGit = realGit)
|
|
|
196
221
|
export function applyLedgerWaivers(result, flagWaivedKeys, trailerWaivers) {
|
|
197
222
|
const waivableBySliceKey = new Map();
|
|
198
223
|
for (const finding of result.findings) {
|
|
199
|
-
if (finding.code
|
|
200
|
-
|
|
224
|
+
if (!WAIVABLE_LEDGER_CODES.has(finding.code))
|
|
225
|
+
continue;
|
|
226
|
+
waivableBySliceKey.set(finding.sliceKey, [...(waivableBySliceKey.get(finding.sliceKey) ?? []), finding]);
|
|
201
227
|
}
|
|
202
228
|
const waivedSliceKeys = new Set();
|
|
203
229
|
const waived = [...result.waived];
|
|
@@ -207,10 +233,11 @@ export function applyLedgerWaivers(result, flagWaivedKeys, trailerWaivers) {
|
|
|
207
233
|
if (seenFlagKeys.has(sliceKey))
|
|
208
234
|
continue;
|
|
209
235
|
seenFlagKeys.add(sliceKey);
|
|
210
|
-
const
|
|
236
|
+
const found = waivableBySliceKey.get(sliceKey);
|
|
211
237
|
const source = { source: "flag" };
|
|
212
|
-
if (
|
|
213
|
-
|
|
238
|
+
if (found) {
|
|
239
|
+
for (const finding of found)
|
|
240
|
+
waived.push({ ...finding, waivedBy: source });
|
|
214
241
|
waivedSliceKeys.add(sliceKey);
|
|
215
242
|
}
|
|
216
243
|
else {
|
|
@@ -220,10 +247,11 @@ export function applyLedgerWaivers(result, flagWaivedKeys, trailerWaivers) {
|
|
|
220
247
|
for (const trailer of trailerWaivers) {
|
|
221
248
|
if (waivedSliceKeys.has(trailer.sliceKey))
|
|
222
249
|
continue; // already waived by a flag entry
|
|
223
|
-
const
|
|
250
|
+
const found = waivableBySliceKey.get(trailer.sliceKey);
|
|
224
251
|
const source = { source: "trailer", commit: trailer.commit };
|
|
225
|
-
if (
|
|
226
|
-
|
|
252
|
+
if (found) {
|
|
253
|
+
for (const finding of found)
|
|
254
|
+
waived.push({ ...finding, waivedBy: source });
|
|
227
255
|
waivedSliceKeys.add(trailer.sliceKey);
|
|
228
256
|
}
|
|
229
257
|
else {
|
|
@@ -231,7 +259,9 @@ export function applyLedgerWaivers(result, flagWaivedKeys, trailerWaivers) {
|
|
|
231
259
|
}
|
|
232
260
|
}
|
|
233
261
|
waived.sort((a, b) => a.sliceKey.localeCompare(b.sliceKey));
|
|
234
|
-
|
|
262
|
+
// Only the waivable findings on a waived key leave `findings`; an unwaivable one (a regression)
|
|
263
|
+
// on the same key stays and still fails the run.
|
|
264
|
+
const findings = result.findings.filter((f) => !(waivedSliceKeys.has(f.sliceKey) && WAIVABLE_LEDGER_CODES.has(f.code)));
|
|
235
265
|
return { result: { ...result, findings, waived }, unknownWaivers };
|
|
236
266
|
}
|
|
237
267
|
//# sourceMappingURL=ledgerCheck.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledgerCheck.js","sourceRoot":"","sources":["../../src/cli/ledgerCheck.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,+FAA+F;AAC/F,8FAA8F;AAC9F,6FAA6F;AAC7F,yFAAyF;AACzF,+FAA+F;AAC/F,8FAA8F;AAC9F,EAAE;AACF,+FAA+F;AAC/F,4EAA4E;AAC5E,4FAA4F;AAC5F,kCAAkC;AAElC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAsB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"ledgerCheck.js","sourceRoot":"","sources":["../../src/cli/ledgerCheck.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/ratify.d.ts
CHANGED
|
@@ -104,8 +104,18 @@ export type RatifiedIdentityResult = {
|
|
|
104
104
|
* still gives the ratified body an identity, and `--slice-ready` still checks it. Every git call
|
|
105
105
|
* runs `-C baseDir` — the model's directory, never the process cwd — so a model nested in a
|
|
106
106
|
* larger repository, or run from elsewhere, resolves against the right work tree.
|
|
107
|
+
*
|
|
108
|
+
* GH #255 — `noRef`: the repo's merge strategy rewrites commits (squash, rebase, merge queue),
|
|
109
|
+
* so `HEAD` of the ratification PR branch will not be reachable from the target branch once the
|
|
110
|
+
* branch is deleted; a ref recorded here would dangle, and `mark-implemented` would copy the
|
|
111
|
+
* dangling pointer into `shippedRef`. With `noRef` the identity is the hash alone — the same shape
|
|
112
|
+
* as outside git — and git is not consulted at all: the uncommitted-changes refusal exists only so
|
|
113
|
+
* the recorded ref's tree really holds the signed body, and with no ref there is nothing for it to
|
|
114
|
+
* protect (the hash is computed from the body itself).
|
|
107
115
|
*/
|
|
108
|
-
export declare function resolveRatifiedIdentity(git: GitRunner | null, baseDir: string, docPath: string, raw: string
|
|
116
|
+
export declare function resolveRatifiedIdentity(git: GitRunner | null, baseDir: string, docPath: string, raw: string, opts?: {
|
|
117
|
+
noRef?: boolean;
|
|
118
|
+
}): RatifiedIdentityResult;
|
|
109
119
|
export declare function applyRatifyFrontmatter(raw: string, sliceKey: string, ratifiedBy: string, ratifiedOn: string, skipReview?: boolean, confirmation?: MeaningConfirmation | null, identity?: RatifiedIdentity | null): ApplyRatifyResult;
|
|
110
120
|
export type RunRatifyResult = {
|
|
111
121
|
ok: true;
|
|
@@ -125,4 +135,6 @@ export type RunRatifyResult = {
|
|
|
125
135
|
* `--slice-ready`/`em export` use (MIL-121 cross-binding included), then reads/applies/writes
|
|
126
136
|
* it. `baseDir` is the `.em` file's directory, same convention every doc/note path in `em` uses.
|
|
127
137
|
*/
|
|
128
|
-
export declare function runRatify(model: NormalizedModel, refs: RefsResult, baseDir: string, sliceKey: string, ratifiedBy: string, ratifiedOn: string, skipReview?: boolean, confirmation?: MeaningConfirmation | null, git?: GitRunner | null
|
|
138
|
+
export declare function runRatify(model: NormalizedModel, refs: RefsResult, baseDir: string, sliceKey: string, ratifiedBy: string, ratifiedOn: string, skipReview?: boolean, confirmation?: MeaningConfirmation | null, git?: GitRunner | null,
|
|
139
|
+
/** GH #255: record `ratifiedHash:` only — no `ratifiedRef:`, no git consulted (`--no-ref`). */
|
|
140
|
+
noRef?: boolean): RunRatifyResult;
|
package/dist/cli/ratify.js
CHANGED
|
@@ -50,7 +50,7 @@ import { readFileSync, writeFileSync } from "node:fs";
|
|
|
50
50
|
import { join } from "node:path";
|
|
51
51
|
import { continuationOf } from "../model/continuation.js";
|
|
52
52
|
import { resolveSliceDocJoin } from "../catalog/docJoin.js";
|
|
53
|
-
import { sliceDocBodyHash } from "../catalog/sliceDoc.js";
|
|
53
|
+
import { ratifiedHashScope, sliceDocBodyHash } from "../catalog/sliceDoc.js";
|
|
54
54
|
import { buildModelIndex } from "../model/queryIndex.js";
|
|
55
55
|
import { realGit } from "./diff-inputs.js";
|
|
56
56
|
import { fieldLineRegex, fieldLineWithEolRegex, locateFrontmatterInner, normalizeFieldValue } from "./frontmatterSurgery.js";
|
|
@@ -179,10 +179,18 @@ export function upstreamUnratifiedSlices(model, refs, baseDir, sliceKey) {
|
|
|
179
179
|
* still gives the ratified body an identity, and `--slice-ready` still checks it. Every git call
|
|
180
180
|
* runs `-C baseDir` — the model's directory, never the process cwd — so a model nested in a
|
|
181
181
|
* larger repository, or run from elsewhere, resolves against the right work tree.
|
|
182
|
+
*
|
|
183
|
+
* GH #255 — `noRef`: the repo's merge strategy rewrites commits (squash, rebase, merge queue),
|
|
184
|
+
* so `HEAD` of the ratification PR branch will not be reachable from the target branch once the
|
|
185
|
+
* branch is deleted; a ref recorded here would dangle, and `mark-implemented` would copy the
|
|
186
|
+
* dangling pointer into `shippedRef`. With `noRef` the identity is the hash alone — the same shape
|
|
187
|
+
* as outside git — and git is not consulted at all: the uncommitted-changes refusal exists only so
|
|
188
|
+
* the recorded ref's tree really holds the signed body, and with no ref there is nothing for it to
|
|
189
|
+
* protect (the hash is computed from the body itself).
|
|
182
190
|
*/
|
|
183
|
-
export function resolveRatifiedIdentity(git, baseDir, docPath, raw) {
|
|
191
|
+
export function resolveRatifiedIdentity(git, baseDir, docPath, raw, opts = {}) {
|
|
184
192
|
const hash = sliceDocBodyHash(raw);
|
|
185
|
-
if (git === null)
|
|
193
|
+
if (git === null || opts.noRef === true)
|
|
186
194
|
return { ok: true, identity: { ref: null, hash } };
|
|
187
195
|
const inside = git(["-C", baseDir, "rev-parse", "--is-inside-work-tree"]);
|
|
188
196
|
if (inside.status !== 0 || inside.stdout.trim() !== "true")
|
|
@@ -317,7 +325,20 @@ export function applyRatifyFrontmatter(raw, sliceKey, ratifiedBy, ratifiedOn, sk
|
|
|
317
325
|
// else appended to the existing line's edit, ahead of the MIL-238 confirmation line.
|
|
318
326
|
const refMatch = identity ? fieldLineRegex("ratifiedRef").exec(inner) : null;
|
|
319
327
|
const hashMatch = identity ? fieldLineRegex("ratifiedHash").exec(inner) : null;
|
|
328
|
+
// GH #255: a ref-less identity (`--no-ref`, or outside git) must not leave an earlier
|
|
329
|
+
// `ratifiedRef:` line standing — that stale pointer is exactly what the caller asked not to
|
|
330
|
+
// record. The whole line goes, EOL included.
|
|
331
|
+
const staleRef = identity && identity.ref === null ? fieldLineWithEolRegex("ratifiedRef").exec(inner) : null;
|
|
320
332
|
const identityLines = [];
|
|
333
|
+
// GH #260: when `--skip-review` is what let this ratification through, the bypass is persisted
|
|
334
|
+
// on the doc as `reviewSkipped: <status it skipped from>`, right after `ratifiedOn:` — so a
|
|
335
|
+
// later reader of the doc (or of its git history, or a CI diff) can tell a reviewed
|
|
336
|
+
// ratification from one that bypassed review. A ratification that passed the gate writes
|
|
337
|
+
// nothing. An existing line (a same-signer run completing its record) is replaced in place.
|
|
338
|
+
// `em slice revise` clears it with the other sign-off keys.
|
|
339
|
+
const skippedMatch = fieldLineRegex("reviewSkipped").exec(inner);
|
|
340
|
+
if (skippedReviewFrom !== null && !skippedMatch)
|
|
341
|
+
identityLines.push(`reviewSkipped: ${skippedReviewFrom}`);
|
|
321
342
|
if (identity && identity.ref !== null && !refMatch)
|
|
322
343
|
identityLines.push(`ratifiedRef: ${identity.ref}`);
|
|
323
344
|
if (identity && !hashMatch)
|
|
@@ -351,6 +372,11 @@ export function applyRatifyFrontmatter(raw, sliceKey, ratifiedBy, ratifiedOn, sk
|
|
|
351
372
|
if (identity && refMatch && identity.ref !== null) {
|
|
352
373
|
edits.push({ index: refMatch.index, oldLen: refMatch[0].length, next: `${refMatch[1]}${identity.ref}` });
|
|
353
374
|
}
|
|
375
|
+
if (staleRef)
|
|
376
|
+
edits.push({ index: staleRef.index, oldLen: staleRef[0].length, next: "" });
|
|
377
|
+
if (skippedReviewFrom !== null && skippedMatch) {
|
|
378
|
+
edits.push({ index: skippedMatch.index, oldLen: skippedMatch[0].length, next: `${skippedMatch[1]}${skippedReviewFrom}` });
|
|
379
|
+
}
|
|
354
380
|
if (identity && hashMatch)
|
|
355
381
|
edits.push({ index: hashMatch.index, oldLen: hashMatch[0].length, next: `${hashMatch[1]}${identity.hash}` });
|
|
356
382
|
edits.sort((a, b) => b.index - a.index);
|
|
@@ -366,7 +392,9 @@ export function applyRatifyFrontmatter(raw, sliceKey, ratifiedBy, ratifiedOn, sk
|
|
|
366
392
|
* `--slice-ready`/`em export` use (MIL-121 cross-binding included), then reads/applies/writes
|
|
367
393
|
* it. `baseDir` is the `.em` file's directory, same convention every doc/note path in `em` uses.
|
|
368
394
|
*/
|
|
369
|
-
export function runRatify(model, refs, baseDir, sliceKey, ratifiedBy, ratifiedOn, skipReview = false, confirmation = null, git = realGit
|
|
395
|
+
export function runRatify(model, refs, baseDir, sliceKey, ratifiedBy, ratifiedOn, skipReview = false, confirmation = null, git = realGit,
|
|
396
|
+
/** GH #255: record `ratifiedHash:` only — no `ratifiedRef:`, no git consulted (`--no-ref`). */
|
|
397
|
+
noRef = false) {
|
|
370
398
|
const sliceIndex = refs.sliceKeys.indexOf(sliceKey);
|
|
371
399
|
if (sliceIndex === -1) {
|
|
372
400
|
return { ok: false, message: `no slice with export key "${sliceKey}" in this model` };
|
|
@@ -418,7 +446,7 @@ export function runRatify(model, refs, baseDir, sliceKey, ratifiedBy, ratifiedOn
|
|
|
418
446
|
// ratifier is, with nothing written.
|
|
419
447
|
if (!probe.changed) {
|
|
420
448
|
const recorded = recordedRatifiedHash(raw);
|
|
421
|
-
if (recorded !== null && recorded
|
|
449
|
+
if (recorded !== null && ratifiedHashScope(raw, recorded) === "mismatch") {
|
|
422
450
|
return {
|
|
423
451
|
ok: false,
|
|
424
452
|
message: `${doc.path}: body changed since ratification (no longer matches ratifiedHash) — ` +
|
|
@@ -428,7 +456,7 @@ export function runRatify(model, refs, baseDir, sliceKey, ratifiedBy, ratifiedOn
|
|
|
428
456
|
}
|
|
429
457
|
let result = probe;
|
|
430
458
|
if (probe.changed) {
|
|
431
|
-
const identity = resolveRatifiedIdentity(git, baseDir, doc.path, raw);
|
|
459
|
+
const identity = resolveRatifiedIdentity(git, baseDir, doc.path, raw, { noRef });
|
|
432
460
|
if (!identity.ok)
|
|
433
461
|
return identity;
|
|
434
462
|
const applied = applyRatifyFrontmatter(raw, sliceKey, ratifiedBy, ratifiedOn, skipReview, confirmation, identity.identity);
|
package/dist/cli/ratify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ratify.js","sourceRoot":"","sources":["../../src/cli/ratify.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ratify.js","sourceRoot":"","sources":["../../src/cli/ratify.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,0FAA0F;AAC1F,kFAAkF;AAClF,8FAA8F;AAC9F,8FAA8F;AAC9F,wFAAwF;AACxF,8FAA8F;AAC9F,6FAA6F;AAC7F,EAAE;AACF,gGAAgG;AAChG,+FAA+F;AAC/F,0FAA0F;AAC1F,gGAAgG;AAChG,yFAAyF;AACzF,EAAE;AACF,gGAAgG;AAChG,8FAA8F;AAC9F,8FAA8F;AAC9F,0FAA0F;AAC1F,gDAAgD;AAChD,EAAE;AACF,iGAAiG;AACjG,wFAAwF;AACxF,6FAA6F;AAC7F,iGAAiG;AACjG,0FAA0F;AAC1F,0FAA0F;AAC1F,2FAA2F;AAC3F,kGAAkG;AAClG,qFAAqF;AACrF,EAAE;AACF,iGAAiG;AACjG,6FAA6F;AAC7F,2FAA2F;AAC3F,+FAA+F;AAC/F,4FAA4F;AAC5F,8FAA8F;AAC9F,4FAA4F;AAC5F,8FAA8F;AAC9F,6FAA6F;AAC7F,8FAA8F;AAC9F,sEAAsE;AAEtE,kGAAkG;AAClG,iGAAiG;AACjG,+FAA+F;AAC/F,mGAAmG;AACnG,+FAA+F;AAC/F,uFAAuF;AAEvF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAa,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC7H,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,oGAAoG;AACpG,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,CAAU,CAAC;AAEzF;;sFAEsF;AACtF,MAAM,UAAU,iBAAiB,CAC/B,gBAAqC,EACrC,cAAkC;IAElC,IAAI,gBAAgB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,wEAAwE,EAAE,CAAC;IAC1G,CAAC;IACD,IAAI,gBAAgB;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,CAAC;IACvF,IAAI,cAAc,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IAC1E,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,kEAAkE,EAAE,CAAC;IAC5G,IAAI,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,4DAA4D,EAAE,CAAC;IAC9F,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,uGAAuG;SACjH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,EAAE,CAAC;AACtE,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,uBAAuB,CAAC,CAAsB;IAC5D,OAAO,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,GAAG,CAAC;AAClG,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,kCAAkC,CAAC,QAAgB;IACjE,OAAO,CACL,UAAU,QAAQ,8DAA8D;QAChF,2EAA2E,CAC5E,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mFAAmF;AACnF,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,EAAE,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,EAAE,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;IACrG,MAAM,EAAE,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAsB,EAAE,CAAsB;IACtE,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,IAAI,CAAC,CAAC,GAAG,KAAM,CAAqB,CAAC,GAAG,CAAC,CAAC;AACvG,CAAC;AAED;;oFAEoF;AACpF,MAAM,CAAC,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAEpD;;;;;sGAKsG;AACtG,MAAM,mBAAmB,GAAsB,CAAC,eAAe,CAAC,CAAC;AAWjE;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAsB,EACtB,IAAgB,EAChB,OAAe,EACf,QAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAEpD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU;gBAAE,SAAS;YAC9D,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,KAAK,MAAM,aAAa,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;QAC3D,MAAM,MAAM,GAAG,WAAW,EAAE,MAAM,IAAI,IAAI,CAAC;QAC3C,8FAA8F;QAC9F,4FAA4F;QAC5F,wFAAwF;QACxF,oCAAoC;QACpC,IAAI,WAAW,EAAE,OAAO;YAAE,SAAS;QACnC,IAAI,MAAM,KAAK,eAAe;YAAE,SAAS;QACzC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AA6CD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAqB,EACrB,OAAe,EACf,OAAe,EACf,GAAW,EACX,OAA4B,EAAE;IAE9B,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;IAC5F,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAC1E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;IAC/G,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,eAAe,EAAE,EAAE,CAAC;IAChH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,GAAG,OAAO,kHAAkH;SACtI,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,OAAO,kEAAkE,EAAE,CAAC;IACrI,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;AACnE,CAAC;AAED,sFAAsF;AACtF,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,CAAC,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,GAAW,EACX,QAAgB,EAChB,UAAkB,EAClB,UAAkB,EAClB,UAAU,GAAG,KAAK,EAClB,eAA2C,IAAI,EAC/C,WAAoC,IAAI;IAExC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC;IACpF,0FAA0F;IAC1F,8FAA8F;IAC9F,6FAA6F;IAC7F,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,mDAAmD,EAAE,CAAC;IACrF,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,UAAU,yBAAyB,EAAE,CAAC;IACtF,CAAC;IAED,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACxE,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACrD,4FAA4F;IAC5F,wEAAwE;IACxE,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAErF,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzD,IAAI,CAAC,WAAW;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;IAE3F,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC;IACjF,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnE,IAAI,aAAa,KAAK,eAAe,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAClF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YACxD,wFAAwF;YACxF,oFAAoF;YACpF,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;gBAC7F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,mBAAmB;YACjG,CAAC;YACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,OAAO,EACL,uBAAuB,SAAS,OAAO,SAAS,SAAS,uBAAuB,CAAC,QAAQ,CAAC,KAAK;wBAC/F,8BAA8B,uBAAuB,CAAC,YAAY,CAAC,EAAE;iBACxE,CAAC;YACJ,CAAC;YACD,mFAAmF;QACrF,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EACL,uBAAuB,SAAS,OAAO,SAAS,gCAAgC;oBAChF,GAAG,SAAS,OAAO,UAAU,EAAE;aAClC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,4FAA4F;IAC5F,4FAA4F;IAC5F,2FAA2F;IAC3F,8FAA8F;IAC9F,MAAM,UAAU,GAAG,aAAa,IAAI,SAAS,CAAC;IAC9C,+FAA+F;IAC/F,4FAA4F;IAC5F,6FAA6F;IAC7F,uFAAuF;IACvF,MAAM,oBAAoB,GACxB,aAAa,KAAK,eAAe,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,UAAU,CAAC,CAAC;IACnH,MAAM,eAAe,GAAG,aAAa,KAAK,IAAI,IAAI,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,CAAC;IACzH,IAAI,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,yFAAyF;QACzF,sFAAsF;QACtF,8EAA8E;QAC9E,IAAI,aAAa,KAAK,eAAe,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,iFAAiF,CAAC,CAAC,CAAC,aAAa,SAAS,EAAE,CAAC;YAChJ,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EACL,UAAU,QAAQ,uCAAuC,KAAK,0CAA0C;oBACxG,0FAA0F;oBAC1F,qEAAqE;aACxE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EACL,UAAU,QAAQ,kBAAkB,UAAU,wCAAwC;gBACtF,+EAA+E;gBAC/E,qCAAqC;SACxC,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9D,mFAAmF;IACnF,8FAA8F;IAC9F,4FAA4F;IAC5F,iFAAiF;IACjF,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3D,+FAA+F;IAC/F,2FAA2F;IAC3F,+FAA+F;IAC/F,0EAA0E;IAC1E,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,IAAI,CAAC,OAAO;QAAE,YAAY,CAAC,IAAI,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO;QAAE,YAAY,CAAC,IAAI,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;IAC7D,6FAA6F;IAC7F,+FAA+F;IAC/F,+FAA+F;IAC/F,qFAAqF;IACrF,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/E,sFAAsF;IACtF,4FAA4F;IAC5F,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,QAAQ,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7G,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,+FAA+F;IAC/F,4FAA4F;IAC5F,oFAAoF;IACpF,yFAAyF;IACzF,4FAA4F;IAC5F,4DAA4D;IAC5D,MAAM,YAAY,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjE,IAAI,iBAAiB,KAAK,IAAI,IAAI,CAAC,YAAY;QAAE,aAAa,CAAC,IAAI,CAAC,kBAAkB,iBAAiB,EAAE,CAAC,CAAC;IAC3G,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,QAAQ;QAAE,aAAa,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IACvG,IAAI,QAAQ,IAAI,CAAC,SAAS;QAAE,aAAa,CAAC,IAAI,CAAC,iBAAiB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjF,8FAA8F;IAC9F,4FAA4F;IAC5F,qBAAqB;IACrB,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,MAAM,YAAY,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,IAAI,CAAC,OAAO;QAAE,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,CAAC;IAC5D,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IAE/G,8FAA8F;IAC9F,8FAA8F;IAC9F,6FAA6F;IAC7F,oEAAoE;IACpE,MAAM,KAAK,GAAsD;QAC/D,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;KAC9E,CAAC;IACF,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,CAAC;IAChH,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM;YACzB,IAAI,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;SACpF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1F,IAAI,iBAAiB,KAAK,IAAI,IAAI,YAAY,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAC5H,CAAC;IACD,IAAI,QAAQ,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACxI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAExC,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9G,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;AACjE,CAAC;AAeD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,KAAsB,EACtB,IAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,UAAkB,EAClB,UAAkB,EAClB,UAAU,GAAG,KAAK,EAClB,eAA2C,IAAI,EAC/C,MAAwB,OAAO;AAC/B,+FAA+F;AAC/F,KAAK,GAAG,KAAK;IAEb,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,6BAA6B,QAAQ,iBAAiB,EAAE,CAAC;IACxF,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,mBAAmB,CACpE,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,OAAO,EACP,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAC9B,CAAC;IAEF,6FAA6F;IAC7F,uFAAuF;IACvF,qFAAqF;IACrF,6FAA6F;IAC7F,8FAA8F;IAC9F,sCAAsC;IACtC,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,CAAE,CAAC,IAAI,CAAC;QAClE,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EACL,IAAI,QAAQ,2BAA2B,iBAAiB,YAAY,QAAQ,aAAa;gBACzF,qCAAqC,iBAAiB,WAAW;SACpE,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,UAAU,QAAQ,yCAAyC,QAAQ,+CAA+C;SAC5H,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,sBAAsB,EAAE,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,QAAQ,YAAY,GAAG,CAAC,IAAI,2BAA2B,EAAE,CAAC;IACnG,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,qBAAqB,EAAE,CAAC;QACzC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,cAAc,GAAG,CAAC,IAAI,wEAAwE;SACxG,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,4FAA4F;IAC5F,4FAA4F;IAC5F,4FAA4F;IAC5F,MAAM,KAAK,GAAG,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACtG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IACjE,CAAC;IACD,8FAA8F;IAC9F,uFAAuF;IACvF,6FAA6F;IAC7F,qCAAqC;IACrC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,QAAQ,KAAK,IAAI,IAAI,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YACzE,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,OAAO,EACL,GAAG,GAAG,CAAC,IAAI,uEAAuE;oBAClF,kEAAkE;aACrE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,MAAM,GAA6C,KAAK,CAAC;IAC7D,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC;QAClC,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3H,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAClF,MAAM,GAAG,OAAO,CAAC;IACnB,CAAC;IACD,uFAAuF;IACvF,sDAAsD;IACtD,IAAI,YAAY,KAAK,IAAI,IAAI,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,kCAAkC,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,4FAA4F;IAC5F,gFAAgF;IAChF,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { NormalizedModel } from "../model/model.js";
|
|
2
|
+
import { RefsResult } from "../model/refs.js";
|
|
3
|
+
import { GitRunner } from "./diff-inputs.js";
|
|
4
|
+
export type RefField = "ratifiedRef" | "shippedRef" | "conformedAt";
|
|
5
|
+
export type RefStatus = "ancestor" | "not-ancestor" | "unresolved" | "undecidable";
|
|
6
|
+
export interface RefResult {
|
|
7
|
+
sliceKey: string;
|
|
8
|
+
/** The doc the ref was read from, relative to the model directory (`slices/<key>.md`). */
|
|
9
|
+
path: string;
|
|
10
|
+
field: RefField;
|
|
11
|
+
ref: string;
|
|
12
|
+
status: RefStatus;
|
|
13
|
+
/** Why, when `status` is not `ancestor`: git's own words, or the shallow-clone note. */
|
|
14
|
+
detail: string | null;
|
|
15
|
+
}
|
|
16
|
+
/** Where a waiver came from: the repeatable `--waive <slice-key>` flag, or a line of the
|
|
17
|
+
* `--waive-file` baseline. A waived result is still fully reported, just not counted toward
|
|
18
|
+
* the exit code — the `em ledger` convention (MIL-185). */
|
|
19
|
+
export type RefWaiveSource = {
|
|
20
|
+
source: "flag";
|
|
21
|
+
} | {
|
|
22
|
+
source: "file";
|
|
23
|
+
path: string;
|
|
24
|
+
};
|
|
25
|
+
export interface WaivedRefResult extends RefResult {
|
|
26
|
+
waivedBy: RefWaiveSource;
|
|
27
|
+
}
|
|
28
|
+
/** A waiver naming a slice key with nothing to excuse — surfaced, never swallowed (a typo'd
|
|
29
|
+
* baseline line would otherwise silently stop meaning anything). */
|
|
30
|
+
export interface UnknownRefWaiver {
|
|
31
|
+
sliceKey: string;
|
|
32
|
+
source: RefWaiveSource;
|
|
33
|
+
}
|
|
34
|
+
export interface RefsCheckResult {
|
|
35
|
+
reachableFrom: string;
|
|
36
|
+
/** The full sha `--reachable-from` resolved to. */
|
|
37
|
+
target: string;
|
|
38
|
+
/** True when the repository is a shallow clone — every result is then `undecidable`. */
|
|
39
|
+
shallow: boolean;
|
|
40
|
+
/** Docs that carried at least one ref field. */
|
|
41
|
+
checkedDocs: number;
|
|
42
|
+
/** Every (doc, field) that was examined, waived or not. */
|
|
43
|
+
checkedRefs: number;
|
|
44
|
+
/** Active results: everything that is not `ancestor` and was not waived. `ancestor` results
|
|
45
|
+
* are listed too (a CI log should show what WAS verified), so filter on `status` to count. */
|
|
46
|
+
results: RefResult[];
|
|
47
|
+
waived: WaivedRefResult[];
|
|
48
|
+
/** False when any active result is not `ancestor` — `undecidable` included. */
|
|
49
|
+
ok: boolean;
|
|
50
|
+
}
|
|
51
|
+
export type CheckRefsOutcome = {
|
|
52
|
+
ok: true;
|
|
53
|
+
result: RefsCheckResult;
|
|
54
|
+
} | {
|
|
55
|
+
ok: false;
|
|
56
|
+
message: string;
|
|
57
|
+
};
|
|
58
|
+
/** The git-facing half, exposed for tests: classify one ref against an already-resolved target. */
|
|
59
|
+
export declare function classifyRef(run: GitRunner, baseDir: string, ref: string, target: string, shallow: boolean): {
|
|
60
|
+
status: RefStatus;
|
|
61
|
+
detail: string | null;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Check every recorded ref on every slice doc of `model` against `reachableFrom`. `baseDir` is the
|
|
65
|
+
* `.em` file's directory (the docs' repository is located from it with `-C`, never the process
|
|
66
|
+
* cwd). Returns a message instead of a result when the directory is not in a git work tree or
|
|
67
|
+
* `reachableFrom` itself does not resolve — those are the caller's mistakes, not findings.
|
|
68
|
+
*/
|
|
69
|
+
export declare function checkRefs(model: NormalizedModel, refs: RefsResult, baseDir: string, reachableFrom: string, run?: GitRunner): CheckRefsOutcome;
|
|
70
|
+
/** One slice key per line; blank lines and `#` comments ignored. Missing file → empty list, so a
|
|
71
|
+
* recipe can reference a baseline before anyone has needed one. */
|
|
72
|
+
export declare function readWaiveFile(path: string): string[];
|
|
73
|
+
/** Excuse every non-`ancestor` result on a waived slice key — the exit code ignores them, the
|
|
74
|
+
* report still shows them under `waived`. `ancestor` results need no excuse and stay put. */
|
|
75
|
+
export declare function applyRefWaivers(result: RefsCheckResult, flagKeys: string[], fileKeys: string[], filePath: string | null): {
|
|
76
|
+
result: RefsCheckResult;
|
|
77
|
+
unknownWaivers: UnknownRefWaiver[];
|
|
78
|
+
};
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// `em refs` (GH #258): are the commits a model's slice docs point at still real, and still on the
|
|
3
|
+
// branch the docs live on? `ratifiedRef:` (MIL-284) is `HEAD` of whatever branch `em slice ratify`
|
|
4
|
+
// ran on, `shippedRef:` is its copy taken at `mark-implemented`, and a bare `conformedAt:` is the
|
|
5
|
+
// target-repo revision a conform sweep diffed against. Under squash or rebase merges every one of
|
|
6
|
+
// them can name a commit that exists only on a deleted PR branch — unreachable from the target
|
|
7
|
+
// branch, then garbage-collected — while `em validate`, `--slice-ready` and `em ledger` all keep
|
|
8
|
+
// passing, because none of them resolves a ref. This command does, once, per field, per doc.
|
|
9
|
+
//
|
|
10
|
+
// Three outcomes per (doc, field) plus one for "I can't tell":
|
|
11
|
+
// ancestor — resolves and is reachable from `--reachable-from` (the healthy case)
|
|
12
|
+
// not-ancestor — resolves (still in the object store) but is NOT reachable: the squash-merge
|
|
13
|
+
// signature before the orphaned commit is pruned
|
|
14
|
+
// unresolved — does not resolve at all: pruned, never fetched, or a typo
|
|
15
|
+
// undecidable — a shallow clone, or git failed in a way that is neither yes nor no; never
|
|
16
|
+
// reported as a pass (the issue's third acceptance line)
|
|
17
|
+
// Opt-in, CI-recipe tier like `em ledger`: it reads git, so it is deliberately not part of
|
|
18
|
+
// `em validate` (docs/ci.md). Local object store only — no network. Pure aside from the
|
|
19
|
+
// injectable GitRunner and fs reads via readSliceDoc; no process.exit, no console.
|
|
20
|
+
//
|
|
21
|
+
// Kinded `conformedAt:` values (`build:1234`, GH #261) are not git revisions and are skipped —
|
|
22
|
+
// `parseConformedAt` decides. Docs with no ref fields are not reported.
|
|
23
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
24
|
+
import { readSliceDoc } from "../catalog/readSliceDoc.js";
|
|
25
|
+
import { hasUsableFrontmatter, parseConformedAt } from "../catalog/sliceDoc.js";
|
|
26
|
+
import { realGit } from "./diff-inputs.js";
|
|
27
|
+
function git(run, baseDir, args) {
|
|
28
|
+
return run(["-C", baseDir, ...args]);
|
|
29
|
+
}
|
|
30
|
+
/** The git-facing half, exposed for tests: classify one ref against an already-resolved target. */
|
|
31
|
+
export function classifyRef(run, baseDir, ref, target, shallow) {
|
|
32
|
+
if (shallow) {
|
|
33
|
+
return { status: "undecidable", detail: "shallow clone — history is truncated, reachability cannot be decided (checkout with fetch-depth: 0)" };
|
|
34
|
+
}
|
|
35
|
+
const exists = git(run, baseDir, ["cat-file", "-e", `${ref}^{commit}`]);
|
|
36
|
+
if (exists.status !== 0) {
|
|
37
|
+
return { status: "unresolved", detail: "does not resolve to a commit in this repository (pruned after its branch was deleted, never fetched, or mistyped)" };
|
|
38
|
+
}
|
|
39
|
+
const anc = git(run, baseDir, ["merge-base", "--is-ancestor", ref, target]);
|
|
40
|
+
if (anc.status === 0)
|
|
41
|
+
return { status: "ancestor", detail: null };
|
|
42
|
+
if (anc.status === 1)
|
|
43
|
+
return { status: "not-ancestor", detail: `resolves but is not an ancestor of ${target.slice(0, 7)} — reachable only from a branch that was squash/rebase-merged and deleted` };
|
|
44
|
+
return { status: "undecidable", detail: `git merge-base failed: ${anc.stderr.trim() || `exit ${anc.status}`}` };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check every recorded ref on every slice doc of `model` against `reachableFrom`. `baseDir` is the
|
|
48
|
+
* `.em` file's directory (the docs' repository is located from it with `-C`, never the process
|
|
49
|
+
* cwd). Returns a message instead of a result when the directory is not in a git work tree or
|
|
50
|
+
* `reachableFrom` itself does not resolve — those are the caller's mistakes, not findings.
|
|
51
|
+
*/
|
|
52
|
+
export function checkRefs(model, refs, baseDir, reachableFrom, run = realGit) {
|
|
53
|
+
const inside = git(run, baseDir, ["rev-parse", "--is-inside-work-tree"]);
|
|
54
|
+
if (inside.status !== 0 || inside.stdout.trim() !== "true") {
|
|
55
|
+
return { ok: false, message: `${baseDir} is not inside a git work tree — em refs resolves commits, so it needs one` };
|
|
56
|
+
}
|
|
57
|
+
const target = git(run, baseDir, ["rev-parse", "--verify", "--quiet", `${reachableFrom}^{commit}`]);
|
|
58
|
+
if (target.status !== 0 || !/^[0-9a-f]{40,64}$/.test(target.stdout.trim())) {
|
|
59
|
+
return { ok: false, message: `--reachable-from "${reachableFrom}" does not resolve to a commit (fetch it first? \`git fetch origin main\`)` };
|
|
60
|
+
}
|
|
61
|
+
const targetSha = target.stdout.trim();
|
|
62
|
+
const shallowProbe = git(run, baseDir, ["rev-parse", "--is-shallow-repository"]);
|
|
63
|
+
const shallow = shallowProbe.status === 0 && shallowProbe.stdout.trim() === "true";
|
|
64
|
+
const results = [];
|
|
65
|
+
const seen = new Set();
|
|
66
|
+
let checkedDocs = 0;
|
|
67
|
+
model.slices.forEach((_slice, i) => {
|
|
68
|
+
const sliceKey = refs.sliceKeys[i];
|
|
69
|
+
if (seen.has(sliceKey))
|
|
70
|
+
return;
|
|
71
|
+
seen.add(sliceKey);
|
|
72
|
+
const doc = readSliceDoc(baseDir, sliceKey);
|
|
73
|
+
if (!doc || !hasUsableFrontmatter(doc))
|
|
74
|
+
return;
|
|
75
|
+
const path = `slices/${sliceKey}.md`;
|
|
76
|
+
const fields = [
|
|
77
|
+
["ratifiedRef", doc.ratifiedRef],
|
|
78
|
+
["shippedRef", doc.shippedRef],
|
|
79
|
+
["conformedAt", doc.conformedAt !== null && parseConformedAt(doc.conformedAt).kind === "git" ? doc.conformedAt : null],
|
|
80
|
+
];
|
|
81
|
+
const present = fields.filter((f) => f[1] !== null);
|
|
82
|
+
if (present.length === 0)
|
|
83
|
+
return;
|
|
84
|
+
checkedDocs++;
|
|
85
|
+
for (const [field, ref] of present) {
|
|
86
|
+
const { status, detail } = classifyRef(run, baseDir, ref, targetSha, shallow);
|
|
87
|
+
results.push({ sliceKey, path, field, ref, status, detail });
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
return {
|
|
91
|
+
ok: true,
|
|
92
|
+
result: {
|
|
93
|
+
reachableFrom,
|
|
94
|
+
target: targetSha,
|
|
95
|
+
shallow,
|
|
96
|
+
checkedDocs,
|
|
97
|
+
checkedRefs: results.length,
|
|
98
|
+
results,
|
|
99
|
+
waived: [],
|
|
100
|
+
ok: results.every((r) => r.status === "ancestor"),
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/** One slice key per line; blank lines and `#` comments ignored. Missing file → empty list, so a
|
|
105
|
+
* recipe can reference a baseline before anyone has needed one. */
|
|
106
|
+
export function readWaiveFile(path) {
|
|
107
|
+
if (!existsSync(path))
|
|
108
|
+
return [];
|
|
109
|
+
return readFileSync(path, "utf8")
|
|
110
|
+
.split(/\r?\n/)
|
|
111
|
+
.map((l) => l.replace(/#.*$/, "").trim())
|
|
112
|
+
.filter((l) => l.length > 0);
|
|
113
|
+
}
|
|
114
|
+
/** Excuse every non-`ancestor` result on a waived slice key — the exit code ignores them, the
|
|
115
|
+
* report still shows them under `waived`. `ancestor` results need no excuse and stay put. */
|
|
116
|
+
export function applyRefWaivers(result, flagKeys, fileKeys, filePath) {
|
|
117
|
+
const excusable = new Set(result.results.filter((r) => r.status !== "ancestor").map((r) => r.sliceKey));
|
|
118
|
+
const waivedKeys = new Map();
|
|
119
|
+
const unknownWaivers = [];
|
|
120
|
+
const noted = new Set();
|
|
121
|
+
// First mention of a key wins (flags are considered before the file); a key with nothing to
|
|
122
|
+
// excuse is noted once, whichever sources name it.
|
|
123
|
+
const consider = (keys, source) => {
|
|
124
|
+
for (const key of keys) {
|
|
125
|
+
if (waivedKeys.has(key) || noted.has(key))
|
|
126
|
+
continue;
|
|
127
|
+
if (excusable.has(key))
|
|
128
|
+
waivedKeys.set(key, source);
|
|
129
|
+
else {
|
|
130
|
+
noted.add(key);
|
|
131
|
+
unknownWaivers.push({ sliceKey: key, source });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
consider(flagKeys, { source: "flag" });
|
|
136
|
+
if (filePath !== null)
|
|
137
|
+
consider(fileKeys, { source: "file", path: filePath });
|
|
138
|
+
const waived = [...result.waived];
|
|
139
|
+
const kept = [];
|
|
140
|
+
for (const r of result.results) {
|
|
141
|
+
const by = waivedKeys.get(r.sliceKey);
|
|
142
|
+
if (by && r.status !== "ancestor")
|
|
143
|
+
waived.push({ ...r, waivedBy: by });
|
|
144
|
+
else
|
|
145
|
+
kept.push(r);
|
|
146
|
+
}
|
|
147
|
+
waived.sort((a, b) => a.sliceKey.localeCompare(b.sliceKey) || a.field.localeCompare(b.field));
|
|
148
|
+
return {
|
|
149
|
+
result: { ...result, results: kept, waived, ok: kept.every((r) => r.status === "ancestor") },
|
|
150
|
+
unknownWaivers,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=refsCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refsCheck.js","sourceRoot":"","sources":["../../src/cli/refsCheck.ts"],"names":[],"mappings":"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"}
|