@milehimikey/em 1.16.1 → 1.18.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 (219) 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 +46 -5
  5. package/.claude/skills/event-modeling-discover/SKILL.md +43 -8
  6. package/.claude/skills/event-modeling-discover/reference/extract.md +6 -1
  7. package/.claude/skills/event-modeling-discover/reference/prd-rubric.md +102 -0
  8. package/.claude/skills/event-modeling-discover/reference/prd-spec-path.md +171 -0
  9. package/.claude/skills/event-modeling-engagement/SKILL.md +28 -6
  10. package/.claude/skills/event-modeling-engagement/reference/engagement.md +5 -4
  11. package/.claude/skills/event-modeling-implement/SKILL.md +1 -1
  12. package/.claude/skills/event-modeling-implement/reference/implement.md +18 -8
  13. package/.claude/skills/event-modeling-review/SKILL.md +1 -1
  14. package/.claude/skills/event-modeling-shared/reference/em-dsl.md +107 -10
  15. package/.claude/skills/event-modeling-shared/reference/methodology.md +268 -0
  16. package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +122 -15
  17. package/.claude/skills/event-modeling-shared/templates/slice.md +11 -3
  18. package/.claude-plugin/marketplace.json +2 -2
  19. package/dist/catalog/docJoin.d.ts +13 -5
  20. package/dist/catalog/docJoin.js +6 -1
  21. package/dist/catalog/docJoin.js.map +1 -1
  22. package/dist/catalog/docModelConsistencyValidate.js +160 -0
  23. package/dist/catalog/docModelConsistencyValidate.js.map +1 -1
  24. package/dist/catalog/invariantsValidate.d.ts +2 -0
  25. package/dist/catalog/invariantsValidate.js +67 -1
  26. package/dist/catalog/invariantsValidate.js.map +1 -1
  27. package/dist/catalog/scenarioQualityValidate.d.ts +4 -0
  28. package/dist/catalog/scenarioQualityValidate.js +148 -0
  29. package/dist/catalog/scenarioQualityValidate.js.map +1 -0
  30. package/dist/catalog/scenarios.d.ts +5 -0
  31. package/dist/catalog/scenarios.js +80 -0
  32. package/dist/catalog/scenarios.js.map +1 -1
  33. package/dist/catalog/signedBodyValidate.d.ts +7 -0
  34. package/dist/catalog/signedBodyValidate.js +29 -0
  35. package/dist/catalog/signedBodyValidate.js.map +1 -0
  36. package/dist/catalog/sliceDoc.d.ts +53 -7
  37. package/dist/catalog/sliceDoc.js +89 -10
  38. package/dist/catalog/sliceDoc.js.map +1 -1
  39. package/dist/catalog/sliceReadyValidate.d.ts +23 -2
  40. package/dist/catalog/sliceReadyValidate.js +54 -22
  41. package/dist/catalog/sliceReadyValidate.js.map +1 -1
  42. package/dist/catalog/sliceSections.d.ts +3 -2
  43. package/dist/catalog/sliceSections.js +99 -9
  44. package/dist/catalog/sliceSections.js.map +1 -1
  45. package/dist/cli/ciInit.d.ts +4 -11
  46. package/dist/cli/ciInit.js +24 -6
  47. package/dist/cli/ciInit.js.map +1 -1
  48. package/dist/cli/coverage.d.ts +9 -0
  49. package/dist/cli/coverage.js +18 -0
  50. package/dist/cli/coverage.js.map +1 -1
  51. package/dist/cli/defer.d.ts +60 -17
  52. package/dist/cli/defer.js +187 -86
  53. package/dist/cli/defer.js.map +1 -1
  54. package/dist/cli/engagement.d.ts +46 -0
  55. package/dist/cli/engagement.js +156 -1
  56. package/dist/cli/engagement.js.map +1 -1
  57. package/dist/cli/engagementFoundation.d.ts +47 -0
  58. package/dist/cli/engagementFoundation.js +164 -0
  59. package/dist/cli/engagementFoundation.js.map +1 -0
  60. package/dist/cli/frontmatterSurgery.d.ts +5 -0
  61. package/dist/cli/frontmatterSurgery.js +15 -0
  62. package/dist/cli/frontmatterSurgery.js.map +1 -1
  63. package/dist/cli/ledgerCheck.d.ts +5 -1
  64. package/dist/cli/ledgerCheck.js +50 -20
  65. package/dist/cli/ledgerCheck.js.map +1 -1
  66. package/dist/cli/markImplemented.d.ts +14 -10
  67. package/dist/cli/markImplemented.js +49 -1
  68. package/dist/cli/markImplemented.js.map +1 -1
  69. package/dist/cli/prdTriage.d.ts +109 -0
  70. package/dist/cli/prdTriage.js +378 -0
  71. package/dist/cli/prdTriage.js.map +1 -0
  72. package/dist/cli/ratify.d.ts +14 -2
  73. package/dist/cli/ratify.js +34 -6
  74. package/dist/cli/ratify.js.map +1 -1
  75. package/dist/cli/refsCheck.d.ts +78 -0
  76. package/dist/cli/refsCheck.js +153 -0
  77. package/dist/cli/refsCheck.js.map +1 -0
  78. package/dist/cli/render-inputs.d.ts +2 -0
  79. package/dist/cli/render-inputs.js +4 -0
  80. package/dist/cli/render-inputs.js.map +1 -1
  81. package/dist/cli/revise.d.ts +12 -3
  82. package/dist/cli/revise.js +43 -10
  83. package/dist/cli/revise.js.map +1 -1
  84. package/dist/cli/shape.d.ts +27 -0
  85. package/dist/cli/shape.js +77 -0
  86. package/dist/cli/shape.js.map +1 -0
  87. package/dist/cli/sliceConform.js +9 -0
  88. package/dist/cli/sliceConform.js.map +1 -1
  89. package/dist/cli/sliceIndex.d.ts +6 -1
  90. package/dist/cli/sliceIndex.js +28 -13
  91. package/dist/cli/sliceIndex.js.map +1 -1
  92. package/dist/cli/sliceNew.d.ts +4 -1
  93. package/dist/cli/sliceNew.js +26 -9
  94. package/dist/cli/sliceNew.js.map +1 -1
  95. package/dist/cli/status.d.ts +26 -5
  96. package/dist/cli/status.js +28 -6
  97. package/dist/cli/status.js.map +1 -1
  98. package/dist/cli/storylineSuggest.d.ts +26 -0
  99. package/dist/cli/storylineSuggest.js +252 -0
  100. package/dist/cli/storylineSuggest.js.map +1 -0
  101. package/dist/cli/upgrade.d.ts +15 -3
  102. package/dist/cli/upgrade.js +537 -8
  103. package/dist/cli/upgrade.js.map +1 -1
  104. package/dist/cli/upgradeReshape.d.ts +60 -0
  105. package/dist/cli/upgradeReshape.js +425 -0
  106. package/dist/cli/upgradeReshape.js.map +1 -0
  107. package/dist/cli.js +430 -57
  108. package/dist/cli.js.map +1 -1
  109. package/dist/emit/dot.d.ts +2 -0
  110. package/dist/emit/dot.js +44 -8
  111. package/dist/emit/dot.js.map +1 -1
  112. package/dist/emit/engagementJson.d.ts +4 -1
  113. package/dist/emit/engagementJson.js +27 -1
  114. package/dist/emit/engagementJson.js.map +1 -1
  115. package/dist/emit/json.d.ts +21 -1
  116. package/dist/emit/json.js +29 -2
  117. package/dist/emit/json.js.map +1 -1
  118. package/dist/emit/ledgerJson.d.ts +1 -1
  119. package/dist/emit/ledgerJson.js +6 -1
  120. package/dist/emit/ledgerJson.js.map +1 -1
  121. package/dist/emit/queryJson.d.ts +1 -1
  122. package/dist/emit/queryJson.js +3 -1
  123. package/dist/emit/queryJson.js.map +1 -1
  124. package/dist/emit/refsJson.d.ts +4 -0
  125. package/dist/emit/refsJson.js +19 -0
  126. package/dist/emit/refsJson.js.map +1 -0
  127. package/dist/emit/statusJson.d.ts +1 -1
  128. package/dist/emit/statusJson.js +6 -1
  129. package/dist/emit/statusJson.js.map +1 -1
  130. package/dist/emit/theme.d.ts +1 -0
  131. package/dist/emit/theme.js +13 -0
  132. package/dist/emit/theme.js.map +1 -1
  133. package/dist/emit/validateJson.d.ts +5 -2
  134. package/dist/emit/validateJson.js +41 -2
  135. package/dist/emit/validateJson.js.map +1 -1
  136. package/dist/layout/grid.d.ts +5 -1
  137. package/dist/layout/grid.js +93 -2
  138. package/dist/layout/grid.js.map +1 -1
  139. package/dist/mcp/server.js +79 -14
  140. package/dist/mcp/server.js.map +1 -1
  141. package/dist/model/edges.d.ts +7 -0
  142. package/dist/model/edges.js +33 -16
  143. package/dist/model/edges.js.map +1 -1
  144. package/dist/model/model.d.ts +33 -0
  145. package/dist/model/model.js +87 -3
  146. package/dist/model/model.js.map +1 -1
  147. package/dist/model/queryIndex.js +2 -2
  148. package/dist/model/queryIndex.js.map +1 -1
  149. package/dist/model/refs.js +8 -5
  150. package/dist/model/refs.js.map +1 -1
  151. package/dist/model/rules.d.ts +167 -1
  152. package/dist/model/rules.js +164 -3
  153. package/dist/model/rules.js.map +1 -1
  154. package/dist/model/shapeLint.d.ts +12 -0
  155. package/dist/model/shapeLint.js +170 -0
  156. package/dist/model/shapeLint.js.map +1 -0
  157. package/dist/model/storylines.d.ts +51 -0
  158. package/dist/model/storylines.js +188 -0
  159. package/dist/model/storylines.js.map +1 -0
  160. package/dist/model/validate.d.ts +6 -1
  161. package/dist/model/validate.js +317 -14
  162. package/dist/model/validate.js.map +1 -1
  163. package/dist/parser/againSugar.d.ts +30 -0
  164. package/dist/parser/againSugar.js +105 -0
  165. package/dist/parser/againSugar.js.map +1 -0
  166. package/dist/parser/ast.d.ts +33 -0
  167. package/dist/parser/lexer.d.ts +9 -1
  168. package/dist/parser/lexer.js +17 -2
  169. package/dist/parser/lexer.js.map +1 -1
  170. package/dist/parser/parser.js +284 -4
  171. package/dist/parser/parser.js.map +1 -1
  172. package/dist/query/format.js +1 -0
  173. package/dist/query/format.js.map +1 -1
  174. package/dist/query/verbs.d.ts +4 -0
  175. package/dist/query/verbs.js +30 -3
  176. package/dist/query/verbs.js.map +1 -1
  177. package/dist/render/drawEdges.js +100 -4
  178. package/dist/render/drawEdges.js.map +1 -1
  179. package/dist/render/render.js +20 -2
  180. package/dist/render/render.js.map +1 -1
  181. package/dist/render/sliceDiagram.js +5 -5
  182. package/dist/render/sliceDiagram.js.map +1 -1
  183. package/dist/render/storylineBands.d.ts +11 -0
  184. package/dist/render/storylineBands.js +80 -0
  185. package/dist/render/storylineBands.js.map +1 -0
  186. package/dist/render/storylineDiagram.d.ts +14 -0
  187. package/dist/render/storylineDiagram.js +142 -0
  188. package/dist/render/storylineDiagram.js.map +1 -0
  189. package/dist/roster/check.d.ts +32 -0
  190. package/dist/roster/check.js +92 -0
  191. package/dist/roster/check.js.map +1 -0
  192. package/dist/roster/context.d.ts +3 -0
  193. package/dist/roster/context.js +23 -0
  194. package/dist/roster/context.js.map +1 -0
  195. package/dist/roster/init.d.ts +15 -0
  196. package/dist/roster/init.js +52 -0
  197. package/dist/roster/init.js.map +1 -0
  198. package/dist/roster/roster.d.ts +79 -0
  199. package/dist/roster/roster.js +298 -0
  200. package/dist/roster/roster.js.map +1 -0
  201. package/package.json +1 -1
  202. package/plugin/.claude-plugin/plugin.json +2 -2
  203. package/plugin/shared/reference/em-dsl.md +107 -10
  204. package/plugin/shared/reference/methodology.md +268 -0
  205. package/plugin/shared/reference/slice-doc-schema.md +122 -15
  206. package/plugin/shared/templates/slice.md +11 -3
  207. package/plugin/skills/conform/SKILL.md +3 -2
  208. package/plugin/skills/conform/reference/conform.md +7 -0
  209. package/plugin/skills/design/SKILL.md +46 -5
  210. package/plugin/skills/discover/SKILL.md +43 -8
  211. package/plugin/skills/discover/reference/extract.md +6 -1
  212. package/plugin/skills/discover/reference/prd-rubric.md +103 -0
  213. package/plugin/skills/discover/reference/prd-spec-path.md +172 -0
  214. package/plugin/skills/engagement/SKILL.md +28 -6
  215. package/plugin/skills/engagement/reference/engagement.md +5 -4
  216. package/plugin/skills/event-modeling/SKILL.md +1 -1
  217. package/plugin/skills/implement/SKILL.md +1 -1
  218. package/plugin/skills/implement/reference/implement.md +18 -8
  219. package/plugin/skills/review/SKILL.md +1 -1
@@ -0,0 +1,378 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // GH #295: the PRD/spec discovery path's record — `discovery/prd-triage.json`. The discover skill
3
+ // (reference/prd-spec-path.md) walks an input document: walkthroughs -> storylines, split into
4
+ // single-claim statements, classify against the SHIPPED rubric, group by reaction, rewrite-don't-
5
+ // drop, record. The LLM does the judgment; em does the part that must not be judged: the shape,
6
+ // the verbatim quotes (the LLM may reword, never invent — every statement and storyline quotes
7
+ // the input and the quote must appear in it), the rubric version, and "every statement has a
8
+ // group and an outcome". `em discover triage-check <file>` (cli.ts) and the MCP tool
9
+ // `discover_triage_check` are thin wrappers over `checkPrdTriage` below.
10
+ //
11
+ // The rubric's source of truth for the checker is PRD_RUBRIC here; the same data ships in the
12
+ // skill bundle as reference/prd-rubric.md (a ```json block — the bundle is markdown-only) so the
13
+ // agent reads it, and test/prdTriage.test.ts asserts the two are identical.
14
+ import { existsSync, readFileSync } from "node:fs";
15
+ import { dirname, isAbsolute, resolve } from "node:path";
16
+ export const PRD_TRIAGE_SCHEMA_VERSION = "1.0";
17
+ export const TRIAGE_OUTCOMES = ["modeled", "rewritten", "constraint", "parked", "question"];
18
+ export const TRIAGE_CONFIDENCE = ["high", "low"];
19
+ export const TRIAGE_PROVENANCE = ["walkthrough", "reference"];
20
+ /** A quote shorter than this is too short to prove anything (`"order"` appears everywhere). */
21
+ export const MIN_QUOTE_CHARS = 12;
22
+ export const PRD_RUBRIC = {
23
+ rubricVersion: "1.0",
24
+ independentCheck: "Is this about the business, independent of how it is built?",
25
+ categories: [
26
+ { id: "business-fact", aboutBusiness: true, outcomes: ["modeled", "rewritten", "parked", "question"], meaning: "Something that happens or is true in the business; candidate event or field." },
27
+ { id: "user-intent", aboutBusiness: true, outcomes: ["modeled", "rewritten", "parked", "question"], meaning: "What an actor wants to accomplish; candidate command with its trigger." },
28
+ { id: "information-need", aboutBusiness: true, outcomes: ["modeled", "rewritten", "parked", "question"], meaning: "What an actor needs to see or know to act; candidate read model." },
29
+ { id: "actor", aboutBusiness: true, outcomes: ["modeled", "parked", "question"], meaning: "A person, role or calling system; candidate persona." },
30
+ { id: "business-rule", aboutBusiness: true, outcomes: ["modeled", "rewritten", "parked", "question"], meaning: "A constraint the business imposes; candidate invariant or scenario." },
31
+ { id: "external-system", aboutBusiness: "either", outcomes: ["modeled", "rewritten", "constraint", "parked", "question"], meaning: "A system outside the boundary; candidate translation slice or constraint." },
32
+ { id: "implementation-detail", aboutBusiness: false, outcomes: ["rewritten", "constraint", "parked", "question"], meaning: "How it is built. Rewritten in business language when it implies a business fact; a real tech choice goes to the constraints list." },
33
+ { id: "nfr", aboutBusiness: "either", outcomes: ["constraint", "parked", "question"], meaning: "Performance, availability, security, compliance: feeds the constitution, never a slice." },
34
+ { id: "goal-background", aboutBusiness: true, outcomes: ["parked", "rewritten", "question"], meaning: "Why the product exists; context for the main storyline, not a slice." },
35
+ { id: "question", aboutBusiness: "either", outcomes: ["question", "parked"], meaning: "An open question in the source; becomes a Socratic question, never an invented answer." },
36
+ { id: "resource-or-endpoint", aboutBusiness: false, outcomes: ["rewritten", "parked", "question"], meaning: "Describes an API resource or endpoint. Rewritten to the intent it serves (one endpoint may carry several); never promoted to a command as-is." },
37
+ ],
38
+ };
39
+ export const RUBRIC_CATEGORY_IDS = PRD_RUBRIC.categories.map((c) => c.id);
40
+ const norm = (s) => s.replace(/\s+/g, " ").trim();
41
+ /** Comparison form for the verbatim check, applied to BOTH sides: Markdown emphasis/code marks
42
+ * stripped, smart quotes straightened, whitespace collapsed. */
43
+ const normQuote = (s) => norm(s
44
+ .replace(/[‘’]/g, "'")
45
+ .replace(/[“”]/g, '"')
46
+ .replace(/[`*_]/g, ""));
47
+ function isObj(v) {
48
+ return typeof v === "object" && v !== null && !Array.isArray(v);
49
+ }
50
+ /** Shape + cross-reference validation of a parsed triage document (no file access). When
51
+ * `sourceText` is given, also checks every quote appears verbatim (see `normQuote`). Quotes
52
+ * shorter than MIN_QUOTE_CHARS are always rejected. `referenceOnlyGroups` lists the groups whose
53
+ * every statement came from the resource/endpoint reference rather than a walkthrough. */
54
+ export function validatePrdTriage(input, sourceText) {
55
+ const errors = [];
56
+ const err = (m) => errors.push(m);
57
+ if (!isObj(input))
58
+ return { ok: false, errors: ["top level must be a JSON object"] };
59
+ if (input.prdTriageSchemaVersion !== PRD_TRIAGE_SCHEMA_VERSION) {
60
+ err(`prdTriageSchemaVersion must be "${PRD_TRIAGE_SCHEMA_VERSION}" (got ${JSON.stringify(input.prdTriageSchemaVersion)})`);
61
+ }
62
+ if (input.rubricVersion !== PRD_RUBRIC.rubricVersion) {
63
+ err(`rubricVersion must be "${PRD_RUBRIC.rubricVersion}", the shipped rubric (got ${JSON.stringify(input.rubricVersion)})`);
64
+ }
65
+ if (typeof input.source !== "string" || input.source === "")
66
+ err("source must be a non-empty string (the input document path)");
67
+ for (const k of ["storylines", "groups", "statements", "constraints"]) {
68
+ if (!Array.isArray(input[k]))
69
+ err(`${k} must be an array`);
70
+ }
71
+ if (errors.length > 0)
72
+ return { ok: false, errors };
73
+ const nonEmpty = (v) => typeof v === "string" && v.trim() !== "";
74
+ const quoteIn = (where, q) => {
75
+ if (normQuote(q).length < MIN_QUOTE_CHARS) {
76
+ err(`${where}: quote is shorter than ${MIN_QUOTE_CHARS} characters ("${q}"); quote the whole claim`);
77
+ }
78
+ else if (sourceText !== undefined && !normQuote(sourceText).includes(normQuote(q))) {
79
+ err(`${where}: quote does not appear verbatim in the source: "${q.length > 60 ? q.slice(0, 57) + "..." : q}"`);
80
+ }
81
+ };
82
+ const seen = (kind, ids, id) => {
83
+ if (!nonEmpty(id)) {
84
+ err(`${kind}: id must be a non-empty string`);
85
+ return false;
86
+ }
87
+ if (ids.has(id)) {
88
+ err(`${kind} ${id}: duplicate id`);
89
+ return false;
90
+ }
91
+ ids.add(id);
92
+ return true;
93
+ };
94
+ const storylineIds = new Set();
95
+ const storylineSpan = new Map();
96
+ let mains = 0;
97
+ input.storylines.forEach((raw, i) => {
98
+ const w = `storylines[${i}]`;
99
+ if (!isObj(raw))
100
+ return err(`${w}: must be an object`);
101
+ if (!seen(w, storylineIds, raw.id))
102
+ return;
103
+ if (!nonEmpty(raw.name))
104
+ err(`${w} ${raw.id}: name required`);
105
+ if (typeof raw.main !== "boolean")
106
+ err(`${w} ${raw.id}: main must be a boolean`);
107
+ else if (raw.main)
108
+ mains++;
109
+ if (!nonEmpty(raw.quote))
110
+ err(`${w} ${raw.id}: quote required (the walkthrough's source span)`);
111
+ else {
112
+ quoteIn(`${w} ${raw.id}`, raw.quote);
113
+ storylineSpan.set(raw.id, normQuote(raw.quote));
114
+ }
115
+ });
116
+ if (storylineIds.size === 0)
117
+ err("storylines must name at least one storyline (the main end-to-end journey)");
118
+ else if (mains !== 1)
119
+ err(`exactly one storyline must be main (found ${mains})`);
120
+ const groupIds = new Set();
121
+ const groupStoryline = new Map();
122
+ const groupName = new Map();
123
+ input.groups.forEach((raw, i) => {
124
+ const w = `groups[${i}]`;
125
+ if (!isObj(raw))
126
+ return err(`${w}: must be an object`);
127
+ if (!seen(w, groupIds, raw.id))
128
+ return;
129
+ groupStoryline.set(raw.id, typeof raw.storyline === "string" ? raw.storyline : null);
130
+ groupName.set(raw.id, typeof raw.name === "string" ? raw.name : raw.id);
131
+ for (const k of ["name", "trigger", "actor"])
132
+ if (!nonEmpty(raw[k]))
133
+ err(`${w} ${raw.id}: ${k} required`);
134
+ // null = a reference-only group (outside every storyline); verified against its statements below.
135
+ if (raw.storyline !== null && (!nonEmpty(raw.storyline) || !storylineIds.has(raw.storyline))) {
136
+ err(`${w} ${raw.id}: storyline must name a declared storyline, or be null for a reference-only group`);
137
+ }
138
+ });
139
+ const statementIds = new Set();
140
+ const byId = new Map();
141
+ const usedGroups = new Set();
142
+ const groupMembers = new Map();
143
+ const quoteOwner = new Map();
144
+ input.statements.forEach((raw, i) => {
145
+ const w = `statements[${i}]`;
146
+ if (!isObj(raw))
147
+ return err(`${w}: must be an object`);
148
+ if (!seen(w, statementIds, raw.id))
149
+ return;
150
+ const id = raw.id;
151
+ byId.set(id, raw);
152
+ const at = `${w} ${id}`;
153
+ if (!nonEmpty(raw.quote))
154
+ err(`${at}: quote required`);
155
+ else {
156
+ quoteIn(at, raw.quote);
157
+ const nq = normQuote(raw.quote);
158
+ for (const [pq, pid] of quoteOwner) {
159
+ if (pq === nq)
160
+ err(`${at}: quote duplicates statement ${pid}'s; one statement per claim`);
161
+ else if (pq.includes(nq) || nq.includes(pq))
162
+ err(`${at}: quote overlaps statement ${pid}'s (one contains the other); one statement per claim`);
163
+ }
164
+ if (!quoteOwner.has(nq))
165
+ quoteOwner.set(nq, id);
166
+ // Provenance is checked, not declared: walkthrough quotes lie inside a storyline span,
167
+ // reference quotes lie outside every span.
168
+ const inside = [...storylineSpan].filter(([, span]) => span.includes(nq)).map(([sid]) => sid);
169
+ if (raw.provenance === "walkthrough" && inside.length === 0) {
170
+ err(`${at}: provenance is walkthrough but its quote lies inside no storyline's span (a walkthrough statement must quote a storyline's span)`);
171
+ }
172
+ if (raw.provenance === "reference" && inside.length > 0) {
173
+ err(`${at}: provenance is reference but its quote lies inside storyline ${inside[0]}'s span (a reference statement must quote text outside every storyline span)`);
174
+ }
175
+ }
176
+ const cat = PRD_RUBRIC.categories.find((c) => c.id === raw.category);
177
+ if (!cat)
178
+ err(`${at}: category must be one of ${RUBRIC_CATEGORY_IDS.join(", ")} (got ${JSON.stringify(raw.category)})`);
179
+ if (typeof raw.aboutBusiness !== "boolean")
180
+ err(`${at}: aboutBusiness must be a boolean (the independent check)`);
181
+ if (!TRIAGE_CONFIDENCE.includes(raw.confidence))
182
+ err(`${at}: confidence must be high or low`);
183
+ const outcome = raw.outcome;
184
+ if (!TRIAGE_OUTCOMES.includes(outcome)) {
185
+ err(`${at}: outcome must be one of ${TRIAGE_OUTCOMES.join(", ")}`);
186
+ return;
187
+ }
188
+ if (cat && !cat.outcomes.includes(outcome))
189
+ err(`${at}: category ${cat.id} may not have outcome ${outcome} (allowed: ${cat.outcomes.join(", ")})`);
190
+ if (!TRIAGE_PROVENANCE.includes(raw.provenance))
191
+ err(`${at}: provenance must be walkthrough or reference`);
192
+ // The independent check contradicting the category's expectation is a disagreement: a human's call.
193
+ if (cat && cat.aboutBusiness !== "either" && typeof raw.aboutBusiness === "boolean" && raw.aboutBusiness !== cat.aboutBusiness && outcome !== "question") {
194
+ err(`${at}: aboutBusiness is ${raw.aboutBusiness} but category ${cat.id} expects ${cat.aboutBusiness}; a disagreement must have outcome question (carry the proposed rewrite in the question), not ${outcome}`);
195
+ }
196
+ const needsGroup = outcome === "modeled" || outcome === "rewritten";
197
+ if (needsGroup || (outcome === "question" && raw.group !== null && raw.group !== undefined)) {
198
+ if (!nonEmpty(raw.group) || !groupIds.has(raw.group))
199
+ err(`${at}: outcome ${outcome} needs a group naming a declared group`);
200
+ else {
201
+ usedGroups.add(raw.group);
202
+ const members = groupMembers.get(raw.group) ?? [];
203
+ members.push(raw);
204
+ groupMembers.set(raw.group, members);
205
+ }
206
+ const gs = nonEmpty(raw.group) && groupStoryline.has(raw.group) ? groupStoryline.get(raw.group) : undefined;
207
+ if (gs === null) {
208
+ if (raw.storyline !== null && raw.storyline !== undefined)
209
+ err(`${at}: its group ${String(raw.group)} is reference-only (storyline null), so the statement's storyline must be null`);
210
+ }
211
+ else if (!nonEmpty(raw.storyline) || !storylineIds.has(raw.storyline)) {
212
+ err(`${at}: outcome ${outcome} needs a storyline naming a declared storyline`);
213
+ }
214
+ else if (gs !== undefined && gs !== raw.storyline) {
215
+ err(`${at}: storyline ${raw.storyline} differs from its group ${String(raw.group)}'s storyline ${gs}`);
216
+ }
217
+ }
218
+ else if (raw.group !== null && raw.group !== undefined) {
219
+ err(`${at}: outcome ${outcome} must have group null (only modeled/rewritten statements join a slice group; a question may name the group it would join)`);
220
+ }
221
+ if (outcome === "rewritten" && !nonEmpty(raw.rewrite))
222
+ err(`${at}: outcome rewritten needs a rewrite (business-language text)`);
223
+ if (outcome === "parked" && !nonEmpty(raw.reason))
224
+ err(`${at}: outcome parked needs a reason (it also goes in the Decisions log)`);
225
+ if (outcome === "question" && !nonEmpty(raw.question))
226
+ err(`${at}: outcome question needs a question`);
227
+ if (cat?.id === "resource-or-endpoint" && outcome === "modeled") {
228
+ err(`${at}: a resource-or-endpoint statement is never modeled as-is; rewrite it to the intent it serves`);
229
+ }
230
+ if (raw.confidence === "low" && outcome !== "question")
231
+ err(`${at}: low confidence must become a question, not ${outcome}`);
232
+ if (raw.scenarioOf !== undefined && (!nonEmpty(raw.scenarioOf) || !groupIds.has(raw.scenarioOf))) {
233
+ err(`${at}: scenarioOf must name a declared group`);
234
+ }
235
+ });
236
+ if (statementIds.size === 0)
237
+ err("statements must not be empty");
238
+ const constrained = new Set();
239
+ input.constraints.forEach((raw, i) => {
240
+ const w = `constraints[${i}]`;
241
+ if (!isObj(raw))
242
+ return err(`${w}: must be an object`);
243
+ if (!nonEmpty(raw.id))
244
+ err(`${w}: id required`);
245
+ if (!nonEmpty(raw.text))
246
+ err(`${w}: text required`);
247
+ if (!Array.isArray(raw.statements) || raw.statements.length === 0)
248
+ return err(`${w}: statements must list at least one statement id`);
249
+ for (const s of raw.statements) {
250
+ const st = typeof s === "string" ? byId.get(s) : undefined;
251
+ if (!st)
252
+ err(`${w}: unknown statement ${JSON.stringify(s)}`);
253
+ else if (st.outcome !== "constraint")
254
+ err(`${w}: statement ${String(s)} has outcome ${String(st.outcome)}, not constraint`);
255
+ else
256
+ constrained.add(s);
257
+ }
258
+ });
259
+ for (const [id, st] of byId) {
260
+ if (st.outcome === "constraint" && !constrained.has(id))
261
+ err(`statement ${id}: outcome constraint but no constraints[] entry lists it`);
262
+ }
263
+ for (const g of groupIds)
264
+ if (!usedGroups.has(g))
265
+ err(`group ${g}: no statement joins it`);
266
+ // Walkthrough-first: a group is EITHER anchored (a walkthrough statement whose quote lies inside
267
+ // its named storyline's span) OR reference-only (every statement `reference`, the group and its
268
+ // statements outside every storyline: storyline null). Reference-only groups are listed in the
269
+ // report for the human to inspect.
270
+ const referenceOnlyGroups = [];
271
+ for (const g of groupIds) {
272
+ const members = groupMembers.get(g);
273
+ if (!members)
274
+ continue;
275
+ const named = groupStoryline.get(g) ?? null;
276
+ if (members.every((m) => m.provenance === "reference")) {
277
+ if (named !== null)
278
+ err(`group ${g}: every statement is reference, so it is a reference-only group and must have storyline null (it joins no walkthrough storyline), not ${named}`);
279
+ else
280
+ referenceOnlyGroups.push(groupName.get(g) ?? g);
281
+ continue;
282
+ }
283
+ if (named === null) {
284
+ err(`group ${g}: storyline is null but it has walkthrough statements; name the storyline they advance`);
285
+ continue;
286
+ }
287
+ const span = storylineSpan.get(named);
288
+ // Only modeled/rewritten walkthrough statements anchor; a question is a pointer, never an anchor.
289
+ const inSpan = (m) => m.provenance === "walkthrough" && span !== undefined && typeof m.quote === "string" && span.includes(normQuote(m.quote));
290
+ const anchored = members.some((m) => (m.outcome === "modeled" || m.outcome === "rewritten") && inSpan(m));
291
+ if (!anchored && members.some((m) => m.outcome === "question" && inSpan(m))) {
292
+ err(`group ${g}: anchored by questions only — answer them or make the group reference-only`);
293
+ }
294
+ else if (!anchored)
295
+ err(`group ${g}: no walkthrough statement lies inside storyline ${named}'s span; anchor it in that walkthrough, or move it to a reference-only group`);
296
+ }
297
+ return errors.length > 0 ? { ok: false, errors } : { ok: true, doc: input, referenceOnlyGroups };
298
+ }
299
+ /** Check a `discovery/prd-triage.json`. The input document is `opts.source` when given, else the
300
+ * file's own `source`, resolved relative to the triage file's directory. */
301
+ export function checkPrdTriage(path, opts = {}) {
302
+ if (!existsSync(path))
303
+ return { ok: false, path, errors: [`no such file: ${path}`] };
304
+ let parsed;
305
+ try {
306
+ parsed = JSON.parse(readFileSync(path, "utf8"));
307
+ }
308
+ catch {
309
+ return { ok: false, path, errors: [`${path} is not valid JSON`] };
310
+ }
311
+ const declared = isObj(parsed) && typeof parsed.source === "string" ? parsed.source : undefined;
312
+ const sourceRef = opts.source ?? declared;
313
+ let sourcePath;
314
+ let sourceText;
315
+ const pre = [];
316
+ if (sourceRef) {
317
+ sourcePath = opts.source ? resolve(opts.source) : isAbsolute(sourceRef) ? sourceRef : resolve(dirname(path), sourceRef);
318
+ if (!existsSync(sourcePath))
319
+ pre.push(`source document not found: ${sourcePath}`);
320
+ else
321
+ sourceText = readFileSync(sourcePath, "utf8");
322
+ }
323
+ const shape = validatePrdTriage(parsed, sourceText);
324
+ const errors = [...pre, ...(shape.ok ? [] : shape.errors)];
325
+ if (errors.length > 0 || !shape.ok)
326
+ return { ok: false, path, errors };
327
+ return {
328
+ ok: true,
329
+ path,
330
+ source: sourcePath ?? shape.doc.source,
331
+ statements: shape.doc.statements.length,
332
+ storylines: shape.doc.storylines.length,
333
+ groups: shape.doc.groups.length,
334
+ referenceOnlyGroups: shape.referenceOnlyGroups,
335
+ errors: [],
336
+ };
337
+ }
338
+ /** `em discover triage-check --json` document. */
339
+ export function buildCheckPrdTriageJson(result) {
340
+ const doc = result.ok
341
+ ? { ok: true, path: result.path, source: result.source, storylines: result.storylines, groups: result.groups, statements: result.statements, referenceOnlyGroups: result.referenceOnlyGroups, errors: [] }
342
+ : { ok: false, path: result.path, errors: result.errors };
343
+ return JSON.stringify(doc, null, 2);
344
+ }
345
+ /** The Markdown view of a triage record (`--markdown`): deterministic, for the engagement reader. */
346
+ export function renderPrdTriageMarkdown(doc, referenceOnlyGroups = []) {
347
+ const L = ["# PRD triage", "", `Source: \`${doc.source}\` · rubric ${doc.rubricVersion} · schema ${doc.prdTriageSchemaVersion}`, ""];
348
+ L.push("## Storylines", "");
349
+ for (const s of doc.storylines)
350
+ L.push(`- **${s.name}**${s.main ? " (main)" : ""} — "${norm(s.quote)}"`);
351
+ L.push("", "## Slice groups", "");
352
+ for (const g of doc.groups) {
353
+ L.push(`### ${g.name}`, "", `Storyline: ${g.storyline ?? "none (reference-only)"} · trigger: ${g.trigger} · acting: ${g.actor}`, "");
354
+ for (const s of doc.statements.filter((x) => x.group === g.id)) {
355
+ const body = s.outcome === "rewritten" ? `${s.rewrite} _(from: "${norm(s.quote)}")_` : `"${norm(s.quote)}"`;
356
+ L.push(`- \`${s.id}\` [${s.category}] ${body}${s.scenarioOf ? ` — scenario of ${s.scenarioOf}` : ""}`);
357
+ }
358
+ L.push("");
359
+ }
360
+ if (referenceOnlyGroups.length > 0) {
361
+ L.push("## Reference-only groups — operations no walkthrough touches; check these are not CRUD fill", "");
362
+ for (const g of referenceOnlyGroups)
363
+ L.push(`- ${g}`);
364
+ L.push("");
365
+ }
366
+ const withOutcome = (o) => doc.statements.filter((s) => s.outcome === o);
367
+ L.push("## Constraints (feed the constitution)", "");
368
+ for (const c of doc.constraints)
369
+ L.push(`- ${c.text} (${c.statements.join(", ")})`);
370
+ L.push("", "## Parked", "");
371
+ for (const s of withOutcome("parked"))
372
+ L.push(`- \`${s.id}\` "${norm(s.quote)}" — ${s.reason}`);
373
+ L.push("", "## Questions for the owner", "");
374
+ for (const s of withOutcome("question"))
375
+ L.push(`- \`${s.id}\` ${s.question} _(source: "${norm(s.quote)}")_`);
376
+ return L.join("\n") + "\n";
377
+ }
378
+ //# sourceMappingURL=prdTriage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prdTriage.js","sourceRoot":"","sources":["../../src/cli/prdTriage.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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"}