@milehimikey/em 1.16.1 → 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.
Files changed (96) hide show
  1. package/.claude/skills/event-modeling/SKILL.md +1 -1
  2. package/.claude/skills/event-modeling-conform/SKILL.md +3 -2
  3. package/.claude/skills/event-modeling-conform/reference/conform.md +7 -0
  4. package/.claude/skills/event-modeling-design/SKILL.md +1 -1
  5. package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
  6. package/.claude/skills/event-modeling-engagement/SKILL.md +22 -5
  7. package/.claude/skills/event-modeling-engagement/reference/engagement.md +5 -4
  8. package/.claude/skills/event-modeling-implement/SKILL.md +1 -1
  9. package/.claude/skills/event-modeling-implement/reference/implement.md +10 -8
  10. package/.claude/skills/event-modeling-review/SKILL.md +1 -1
  11. package/.claude/skills/event-modeling-shared/reference/em-dsl.md +17 -5
  12. package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +26 -13
  13. package/.claude-plugin/marketplace.json +2 -2
  14. package/dist/catalog/docJoin.d.ts +13 -5
  15. package/dist/catalog/docJoin.js +6 -1
  16. package/dist/catalog/docJoin.js.map +1 -1
  17. package/dist/catalog/signedBodyValidate.d.ts +7 -0
  18. package/dist/catalog/signedBodyValidate.js +29 -0
  19. package/dist/catalog/signedBodyValidate.js.map +1 -0
  20. package/dist/catalog/sliceDoc.d.ts +53 -7
  21. package/dist/catalog/sliceDoc.js +89 -10
  22. package/dist/catalog/sliceDoc.js.map +1 -1
  23. package/dist/catalog/sliceReadyValidate.d.ts +15 -2
  24. package/dist/catalog/sliceReadyValidate.js +19 -19
  25. package/dist/catalog/sliceReadyValidate.js.map +1 -1
  26. package/dist/cli/defer.d.ts +32 -17
  27. package/dist/cli/defer.js +100 -82
  28. package/dist/cli/defer.js.map +1 -1
  29. package/dist/cli/engagement.d.ts +46 -0
  30. package/dist/cli/engagement.js +133 -1
  31. package/dist/cli/engagement.js.map +1 -1
  32. package/dist/cli/engagementFoundation.d.ts +47 -0
  33. package/dist/cli/engagementFoundation.js +164 -0
  34. package/dist/cli/engagementFoundation.js.map +1 -0
  35. package/dist/cli/frontmatterSurgery.d.ts +5 -0
  36. package/dist/cli/frontmatterSurgery.js +15 -0
  37. package/dist/cli/frontmatterSurgery.js.map +1 -1
  38. package/dist/cli/ledgerCheck.d.ts +5 -1
  39. package/dist/cli/ledgerCheck.js +50 -20
  40. package/dist/cli/ledgerCheck.js.map +1 -1
  41. package/dist/cli/ratify.d.ts +14 -2
  42. package/dist/cli/ratify.js +34 -6
  43. package/dist/cli/ratify.js.map +1 -1
  44. package/dist/cli/refsCheck.d.ts +78 -0
  45. package/dist/cli/refsCheck.js +153 -0
  46. package/dist/cli/refsCheck.js.map +1 -0
  47. package/dist/cli/revise.d.ts +10 -3
  48. package/dist/cli/revise.js +36 -8
  49. package/dist/cli/revise.js.map +1 -1
  50. package/dist/cli/sliceConform.js +9 -0
  51. package/dist/cli/sliceConform.js.map +1 -1
  52. package/dist/cli/status.d.ts +5 -4
  53. package/dist/cli/status.js +3 -3
  54. package/dist/cli/status.js.map +1 -1
  55. package/dist/cli/upgrade.d.ts +1 -1
  56. package/dist/cli/upgrade.js +113 -3
  57. package/dist/cli/upgrade.js.map +1 -1
  58. package/dist/cli.js +147 -31
  59. package/dist/cli.js.map +1 -1
  60. package/dist/emit/engagementJson.d.ts +4 -1
  61. package/dist/emit/engagementJson.js +25 -1
  62. package/dist/emit/engagementJson.js.map +1 -1
  63. package/dist/emit/json.d.ts +1 -1
  64. package/dist/emit/json.js +4 -1
  65. package/dist/emit/json.js.map +1 -1
  66. package/dist/emit/ledgerJson.d.ts +1 -1
  67. package/dist/emit/ledgerJson.js +6 -1
  68. package/dist/emit/ledgerJson.js.map +1 -1
  69. package/dist/emit/refsJson.d.ts +4 -0
  70. package/dist/emit/refsJson.js +19 -0
  71. package/dist/emit/refsJson.js.map +1 -0
  72. package/dist/emit/validateJson.d.ts +2 -2
  73. package/dist/emit/validateJson.js +7 -2
  74. package/dist/emit/validateJson.js.map +1 -1
  75. package/dist/mcp/server.js +37 -7
  76. package/dist/mcp/server.js.map +1 -1
  77. package/dist/model/rules.d.ts +18 -1
  78. package/dist/model/rules.js +20 -3
  79. package/dist/model/rules.js.map +1 -1
  80. package/dist/parser/lexer.d.ts +7 -1
  81. package/dist/parser/lexer.js +13 -2
  82. package/dist/parser/lexer.js.map +1 -1
  83. package/package.json +1 -1
  84. package/plugin/.claude-plugin/plugin.json +2 -2
  85. package/plugin/shared/reference/em-dsl.md +17 -5
  86. package/plugin/shared/reference/slice-doc-schema.md +26 -13
  87. package/plugin/skills/conform/SKILL.md +3 -2
  88. package/plugin/skills/conform/reference/conform.md +7 -0
  89. package/plugin/skills/design/SKILL.md +1 -1
  90. package/plugin/skills/discover/SKILL.md +1 -1
  91. package/plugin/skills/engagement/SKILL.md +22 -5
  92. package/plugin/skills/engagement/reference/engagement.md +5 -4
  93. package/plugin/skills/event-modeling/SKILL.md +1 -1
  94. package/plugin/skills/implement/SKILL.md +1 -1
  95. package/plugin/skills/implement/reference/implement.md +10 -8
  96. package/plugin/skills/review/SKILL.md +1 -1
@@ -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
- const bodyChanged = oldDoc.body.trim() !== newDoc.body.trim();
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 (!code)
106
- continue;
107
- const message = code === "ledger-version-regression"
108
- ? `slice "${sliceKey}": version went backwards (v${oldVersion} -> v${newVersion})`
109
- : code === "ledger-content-without-version-bump"
110
- ? `slice "${sliceKey}": doc content changed but version: didn't bump (still v${oldVersion})`
111
- : `slice "${sliceKey}": version: bumped (v${oldVersion} -> v${newVersion}) but doc content is unchanged`;
112
- findings.push({ sliceKey, code, message, oldVersion, newVersion, bodyChanged, lineageChanged: docsLineageChanged });
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
- const WAIVABLE_LEDGER_CODE = "ledger-content-without-version-bump";
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 === WAIVABLE_LEDGER_CODE)
200
- waivableBySliceKey.set(finding.sliceKey, finding);
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 finding = waivableBySliceKey.get(sliceKey);
236
+ const found = waivableBySliceKey.get(sliceKey);
211
237
  const source = { source: "flag" };
212
- if (finding) {
213
- waived.push({ ...finding, waivedBy: source });
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 finding = waivableBySliceKey.get(trailer.sliceKey);
250
+ const found = waivableBySliceKey.get(trailer.sliceKey);
224
251
  const source = { source: "trailer", commit: trailer.commit };
225
- if (finding) {
226
- waived.push({ ...finding, waivedBy: source });
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
- const findings = result.findings.filter((f) => !waivedSliceKeys.has(f.sliceKey));
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;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAa,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAgErG;4FAC4F;AAC5F,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;uEAEuE;AACvE,SAAS,QAAQ,CAAC,CAAkB,EAAE,CAAkB;IACtD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC;AACzB,CAAC;AAED,SAAS,YAAY,CAAC,CAAa,EAAE,CAAa;IAChD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;8FAE8F;AAC9F,SAAS,cAAc,CAAC,MAAgB,EAAE,MAAgB;IACxD,OAAO,CACL,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;QAC7C,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;QACnD,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CACxD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,IAAY,EAAE,EAAiB,EAAE,SAAoB,OAAO;IAC1G,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,uBAAuB,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpG,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACxD,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7G,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,yEAAyE;QACzE,mFAAmF;QACnF,4FAA4F;QAC5F,4FAA4F;QAC5F,uFAAuF;QACvF,0FAA0F;QAC1F,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACzH,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAC1D,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9D,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,WAAW,IAAI,kBAAkB,CAAC;QAEzD,IAAI,IAAI,GAA6B,IAAI,CAAC;QAC1C,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;YAC5B,IAAI,GAAG,2BAA2B,CAAC;QACrC,CAAC;aAAM,IAAI,cAAc,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YACvD,IAAI,GAAG,qCAAqC,CAAC;QAC/C,CAAC;aAAM,IAAI,CAAC,cAAc,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;YACtD,IAAI,GAAG,uCAAuC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,OAAO,GACX,IAAI,KAAK,2BAA2B;YAClC,CAAC,CAAC,UAAU,QAAQ,+BAA+B,UAAU,QAAQ,UAAU,GAAG;YAClF,CAAC,CAAC,IAAI,KAAK,qCAAqC;gBAC9C,CAAC,CAAC,UAAU,QAAQ,2DAA2D,UAAU,GAAG;gBAC5F,CAAC,CAAC,UAAU,QAAQ,wBAAwB,UAAU,QAAQ,UAAU,gCAAgC,CAAC;QAE/G,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACtH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACtE,CAAC;AAED,2FAA2F;AAC3F,MAAM,oBAAoB,GAAsB,qCAAqC,CAAC;AAStF,8FAA8F;AAC9F,iGAAiG;AACjG,6FAA6F;AAC7F,gGAAgG;AAChG,iGAAiG;AACjG,yFAAyF;AACzF,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,QAAQ,GAAG,MAAM,CAAC;AACxB,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,wBAAwB,CAAC,UAAkB,EAAE,IAAY,EAAE,EAAiB,EAAE,SAAoB,OAAO;IACvH,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC9F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,GAAG,IAAI,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC;QACjB,IAAI;QACJ,QAAQ;QACR,KAAK;QACL,WAAW;QACX,cAAc,eAAe,4CAA4C,iBAAiB,EAAE;QAC5F,KAAK;KACN,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAA0B,EAAE,CAAC;IAC1C,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,SAAS;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,CAAC,CAAC;YAAE,SAAS;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI;aAChB,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;aACnB,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS,CAAC,mDAAmD;YACrF,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAyB,EACzB,cAAwB,EACxB,cAAqC;IAErC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5D,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAoB;YAAE,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,MAAM,MAAM,GAA0B,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,cAAc,GAA0B,EAAE,CAAC;IAEjD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACtC,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QACzC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,MAAM,GAAsB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACrD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS,CAAC,iCAAiC;QACtF,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,MAAM,GAAsB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAChF,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjF,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"ledgerCheck.js","sourceRoot":"","sources":["../../src/cli/ledgerCheck.ts"],"names":[],"mappings":"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"}
@@ -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): RatifiedIdentityResult;
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): RunRatifyResult;
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;
@@ -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 !== sliceDocBodyHash(raw)) {
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);
@@ -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":"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"}
@@ -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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"}