@milehimikey/em 1.19.7 → 1.21.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 (206) hide show
  1. package/.claude/skills/event-modeling/SKILL.md +1 -1
  2. package/.claude/skills/event-modeling-conform/SKILL.md +1 -1
  3. package/.claude/skills/event-modeling-conform/reference/conform.md +29 -1
  4. package/.claude/skills/event-modeling-design/SKILL.md +33 -7
  5. package/.claude/skills/event-modeling-discover/SKILL.md +2 -2
  6. package/.claude/skills/event-modeling-discover/reference/extract.md +12 -0
  7. package/.claude/skills/event-modeling-engagement/SKILL.md +1 -1
  8. package/.claude/skills/event-modeling-implement/SKILL.md +7 -2
  9. package/.claude/skills/event-modeling-implement/reference/implement.md +73 -6
  10. package/.claude/skills/event-modeling-review/SKILL.md +19 -7
  11. package/.claude/skills/event-modeling-shared/reference/em-dsl.md +57 -5
  12. package/.claude/skills/event-modeling-shared/reference/methodology.md +51 -2
  13. package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +2 -1
  14. package/.claude/skills/event-modeling-shared/templates/model-readme.md +10 -2
  15. package/.claude/skills/event-modeling-shared/templates/slice.md +12 -1
  16. package/.claude-plugin/marketplace.json +2 -2
  17. package/dist/catalog/build.js +6 -5
  18. package/dist/catalog/build.js.map +1 -1
  19. package/dist/catalog/coverage.d.ts +3 -0
  20. package/dist/catalog/coverage.js +12 -0
  21. package/dist/catalog/coverage.js.map +1 -1
  22. package/dist/catalog/docBadge.d.ts +16 -0
  23. package/dist/catalog/docBadge.js +50 -0
  24. package/dist/catalog/docBadge.js.map +1 -0
  25. package/dist/catalog/docLocate.d.ts +17 -0
  26. package/dist/catalog/docLocate.js +97 -0
  27. package/dist/catalog/docLocate.js.map +1 -0
  28. package/dist/catalog/docModelConsistencyValidate.js +9 -2
  29. package/dist/catalog/docModelConsistencyValidate.js.map +1 -1
  30. package/dist/catalog/frontmatterCoherenceValidate.js +16 -1
  31. package/dist/catalog/frontmatterCoherenceValidate.js.map +1 -1
  32. package/dist/catalog/invTokens.d.ts +49 -0
  33. package/dist/catalog/invTokens.js +94 -0
  34. package/dist/catalog/invTokens.js.map +1 -0
  35. package/dist/catalog/orphanedSliceDocValidate.js +15 -10
  36. package/dist/catalog/orphanedSliceDocValidate.js.map +1 -1
  37. package/dist/catalog/pages.js +48 -1
  38. package/dist/catalog/pages.js.map +1 -1
  39. package/dist/catalog/readSliceDoc.js +5 -4
  40. package/dist/catalog/readSliceDoc.js.map +1 -1
  41. package/dist/catalog/scenarioQualityValidate.js +2 -2
  42. package/dist/catalog/scenarioQualityValidate.js.map +1 -1
  43. package/dist/catalog/scenarios.d.ts +4 -0
  44. package/dist/catalog/scenarios.js +4 -1
  45. package/dist/catalog/scenarios.js.map +1 -1
  46. package/dist/catalog/sliceDoc.d.ts +54 -1
  47. package/dist/catalog/sliceDoc.js +99 -2
  48. package/dist/catalog/sliceDoc.js.map +1 -1
  49. package/dist/catalog/sliceDocRender.d.ts +3 -0
  50. package/dist/catalog/sliceDocRender.js +295 -0
  51. package/dist/catalog/sliceDocRender.js.map +1 -0
  52. package/dist/catalog/sliceSections.d.ts +18 -1
  53. package/dist/catalog/sliceSections.js +38 -4
  54. package/dist/catalog/sliceSections.js.map +1 -1
  55. package/dist/cli/coverage.d.ts +13 -23
  56. package/dist/cli/coverage.js +51 -91
  57. package/dist/cli/coverage.js.map +1 -1
  58. package/dist/cli/defer.js +3 -2
  59. package/dist/cli/defer.js.map +1 -1
  60. package/dist/cli/ledgerCheck.js +11 -8
  61. package/dist/cli/ledgerCheck.js.map +1 -1
  62. package/dist/cli/markImplemented.js +2 -2
  63. package/dist/cli/markImplemented.js.map +1 -1
  64. package/dist/cli/ratify.js +2 -2
  65. package/dist/cli/ratify.js.map +1 -1
  66. package/dist/cli/refsCheck.d.ts +52 -0
  67. package/dist/cli/refsCheck.js +129 -2
  68. package/dist/cli/refsCheck.js.map +1 -1
  69. package/dist/cli/render-inputs.d.ts +1 -1
  70. package/dist/cli/render-inputs.js +3 -2
  71. package/dist/cli/render-inputs.js.map +1 -1
  72. package/dist/cli/review.js +2 -2
  73. package/dist/cli/review.js.map +1 -1
  74. package/dist/cli/revise.js +2 -2
  75. package/dist/cli/revise.js.map +1 -1
  76. package/dist/cli/skillDirs.d.ts +22 -0
  77. package/dist/cli/skillDirs.js +24 -0
  78. package/dist/cli/skillDirs.js.map +1 -1
  79. package/dist/cli/sliceConform.d.ts +57 -1
  80. package/dist/cli/sliceConform.js +111 -10
  81. package/dist/cli/sliceConform.js.map +1 -1
  82. package/dist/cli/sliceIndex.d.ts +19 -3
  83. package/dist/cli/sliceIndex.js +81 -17
  84. package/dist/cli/sliceIndex.js.map +1 -1
  85. package/dist/cli/sliceNew.js +2 -0
  86. package/dist/cli/sliceNew.js.map +1 -1
  87. package/dist/cli/sliceStubAll.js +7 -2
  88. package/dist/cli/sliceStubAll.js.map +1 -1
  89. package/dist/cli/sliceSync.d.ts +12 -0
  90. package/dist/cli/sliceSync.js +42 -4
  91. package/dist/cli/sliceSync.js.map +1 -1
  92. package/dist/cli/status.d.ts +3 -4
  93. package/dist/cli/status.js +5 -4
  94. package/dist/cli/status.js.map +1 -1
  95. package/dist/cli/storylineSplit.d.ts +18 -0
  96. package/dist/cli/storylineSplit.js +110 -0
  97. package/dist/cli/storylineSplit.js.map +1 -0
  98. package/dist/cli/upgrade.js +39 -14
  99. package/dist/cli/upgrade.js.map +1 -1
  100. package/dist/cli/watchStoryline.d.ts +33 -0
  101. package/dist/cli/watchStoryline.js +65 -0
  102. package/dist/cli/watchStoryline.js.map +1 -0
  103. package/dist/cli.js +423 -71
  104. package/dist/cli.js.map +1 -1
  105. package/dist/emit/docJson.d.ts +99 -0
  106. package/dist/emit/docJson.js +197 -0
  107. package/dist/emit/docJson.js.map +1 -0
  108. package/dist/emit/json.d.ts +22 -1
  109. package/dist/emit/json.js +12 -1
  110. package/dist/emit/json.js.map +1 -1
  111. package/dist/emit/refsJson.d.ts +5 -3
  112. package/dist/emit/refsJson.js +5 -2
  113. package/dist/emit/refsJson.js.map +1 -1
  114. package/dist/mcp/server.js +43 -9
  115. package/dist/mcp/server.js.map +1 -1
  116. package/dist/model/continuation.d.ts +9 -0
  117. package/dist/model/continuation.js +30 -0
  118. package/dist/model/continuation.js.map +1 -1
  119. package/dist/model/edges.d.ts +1 -1
  120. package/dist/model/edges.js +8 -1
  121. package/dist/model/edges.js.map +1 -1
  122. package/dist/model/loadModel.d.ts +38 -0
  123. package/dist/model/loadModel.js +122 -0
  124. package/dist/model/loadModel.js.map +1 -0
  125. package/dist/model/model.d.ts +9 -4
  126. package/dist/model/model.js +4 -0
  127. package/dist/model/model.js.map +1 -1
  128. package/dist/model/rules.d.ts +31 -0
  129. package/dist/model/rules.js +31 -0
  130. package/dist/model/rules.js.map +1 -1
  131. package/dist/model/shapeLint.js +143 -0
  132. package/dist/model/shapeLint.js.map +1 -1
  133. package/dist/model/sliceDocIndex.js +13 -5
  134. package/dist/model/sliceDocIndex.js.map +1 -1
  135. package/dist/model/sliceDocPath.d.ts +19 -0
  136. package/dist/model/sliceDocPath.js +49 -0
  137. package/dist/model/sliceDocPath.js.map +1 -0
  138. package/dist/model/storylineMap.d.ts +20 -0
  139. package/dist/model/storylineMap.js +55 -0
  140. package/dist/model/storylineMap.js.map +1 -0
  141. package/dist/model/validate.d.ts +7 -0
  142. package/dist/model/validate.js +127 -0
  143. package/dist/model/validate.js.map +1 -1
  144. package/dist/parser/ast.d.ts +27 -0
  145. package/dist/parser/parser.d.ts +17 -1
  146. package/dist/parser/parser.js +142 -3
  147. package/dist/parser/parser.js.map +1 -1
  148. package/dist/pipeline.d.ts +16 -0
  149. package/dist/pipeline.js +19 -2
  150. package/dist/pipeline.js.map +1 -1
  151. package/dist/render/drawEdges.d.ts +5 -1
  152. package/dist/render/drawEdges.js +57 -4
  153. package/dist/render/drawEdges.js.map +1 -1
  154. package/dist/render/drawNotes.d.ts +4 -1
  155. package/dist/render/drawNotes.js +40 -10
  156. package/dist/render/drawNotes.js.map +1 -1
  157. package/dist/render/render.d.ts +11 -0
  158. package/dist/render/render.js +93 -10
  159. package/dist/render/render.js.map +1 -1
  160. package/dist/render/serve.d.ts +5 -0
  161. package/dist/render/serve.js +18 -2
  162. package/dist/render/serve.js.map +1 -1
  163. package/dist/render/sliceDiagram.js +3 -0
  164. package/dist/render/sliceDiagram.js.map +1 -1
  165. package/dist/render/sliceOverlay.d.ts +5 -1
  166. package/dist/render/sliceOverlay.js +24 -2
  167. package/dist/render/sliceOverlay.js.map +1 -1
  168. package/dist/render/sliceStatus.d.ts +8 -0
  169. package/dist/render/sliceStatus.js +22 -15
  170. package/dist/render/sliceStatus.js.map +1 -1
  171. package/dist/render/storylineBands.d.ts +0 -3
  172. package/dist/render/storylineBands.js +2 -22
  173. package/dist/render/storylineBands.js.map +1 -1
  174. package/dist/render/storylineDiagram.js +17 -69
  175. package/dist/render/storylineDiagram.js.map +1 -1
  176. package/dist/render/storylineMap.d.ts +18 -0
  177. package/dist/render/storylineMap.js +263 -0
  178. package/dist/render/storylineMap.js.map +1 -0
  179. package/dist/render/storylinePicker.d.ts +9 -0
  180. package/dist/render/storylinePicker.js +17 -0
  181. package/dist/render/storylinePicker.js.map +1 -0
  182. package/dist/render/svgGeometry.d.ts +9 -0
  183. package/dist/render/svgGeometry.js +16 -0
  184. package/dist/render/svgGeometry.js.map +1 -1
  185. package/dist/render/viewerHtml.js +1 -1
  186. package/dist/render/viewerHtml.js.map +1 -1
  187. package/dist/templates.d.ts +1 -1
  188. package/dist/templates.js +10 -2
  189. package/dist/templates.js.map +1 -1
  190. package/package.json +1 -1
  191. package/plugin/.claude-plugin/plugin.json +2 -2
  192. package/plugin/shared/reference/em-dsl.md +57 -5
  193. package/plugin/shared/reference/methodology.md +51 -2
  194. package/plugin/shared/reference/slice-doc-schema.md +2 -1
  195. package/plugin/shared/templates/model-readme.md +10 -2
  196. package/plugin/shared/templates/slice.md +12 -1
  197. package/plugin/skills/conform/SKILL.md +1 -1
  198. package/plugin/skills/conform/reference/conform.md +29 -1
  199. package/plugin/skills/design/SKILL.md +33 -7
  200. package/plugin/skills/discover/SKILL.md +2 -2
  201. package/plugin/skills/discover/reference/extract.md +12 -0
  202. package/plugin/skills/engagement/SKILL.md +1 -1
  203. package/plugin/skills/event-modeling/SKILL.md +1 -1
  204. package/plugin/skills/implement/SKILL.md +7 -2
  205. package/plugin/skills/implement/reference/implement.md +73 -6
  206. package/plugin/skills/review/SKILL.md +19 -7
@@ -4,8 +4,12 @@ import { Diagnostic } from "../model/validate.js";
4
4
  /** The marker name wrapping the Slices table: `<!-- GENERATED:slices:start -->` /
5
5
  * `<!-- GENERATED:slices:end -->`, matching templates/model-readme.md. */
6
6
  export declare const SLICE_INDEX_MARKER = "slices";
7
+ /** The root README's storyline table (`GENERATED:storylines`). */
8
+ export declare const STORYLINE_INDEX_MARKER = "storylines";
7
9
  export interface SliceIndexRow {
8
10
  index: number;
11
+ /** The slice's position in `model.slices` (the timeline), for grouping and ordering. */
12
+ sliceIndex: number;
9
13
  name: string;
10
14
  /** GH #277: the `storyline` block the slice is declared in, or `—`. The column is only
11
15
  * rendered when the model declares at least one storyline (see `buildSliceIndexTable`), so a
@@ -27,22 +31,34 @@ export interface SliceIndexRow {
27
31
  }
28
32
  export interface SliceIndexTable {
29
33
  /** The full replacement body for the GENERATED:slices block — header + one row per slice
30
- * (or just the header when the model has no slices yet). */
34
+ * (or just the header when the model has no slices yet). For a model that declares
35
+ * storylines: one `### <Storyline>` section per storyline, its slices in timeline order and
36
+ * numbered within the story, then any slice outside every storyline. */
31
37
  markdown: string;
38
+ /** The GENERATED:storylines body for the root README: one row per storyline (slice count,
39
+ * implemented count, diagram link) and the canvas link. Empty string without storylines. */
40
+ storylinesMarkdown: string;
32
41
  rows: SliceIndexRow[];
33
42
  /** binding-missing-file / frontmatter-invalid warnings from resolveSliceDocJoin — the same
34
43
  * diagnostics `em export` surfaces for a broken doc binding. */
35
44
  diagnostics: Diagnostic[];
36
45
  }
46
+ export interface SliceIndexOptions {
47
+ /** Every lifecycle column (the pre-2026-11 table) instead of the reader's five. */
48
+ full?: boolean;
49
+ }
37
50
  /** Build the Slices table body for `model`. `baseDir` is the `.em` file's directory — same
38
51
  * doc-resolution convention `em export`/`em catalog` use for `slices/<key>.md`. */
39
- export declare function buildSliceIndexTable(model: NormalizedModel, refs: RefsResult, baseDir: string): SliceIndexTable;
52
+ export declare function buildSliceIndexTable(model: NormalizedModel, refs: RefsResult, baseDir: string, opts?: SliceIndexOptions): SliceIndexTable;
40
53
  export type SliceIndexResult = {
41
54
  ok: true;
42
55
  readmePath: string;
43
56
  wrote: boolean;
44
57
  changed: boolean;
45
58
  table: SliceIndexTable;
59
+ /** `GENERATED:storylines` outcome: `absent` (the README has no such markers — add the
60
+ * section from templates/model-readme.md), `written`, `current`, or `n/a` (no storylines). */
61
+ storylines: "absent" | "written" | "current" | "n/a";
46
62
  } | {
47
63
  ok: false;
48
64
  kind: "missing-readme" | "missing-markers" | "stale";
@@ -59,4 +75,4 @@ export type SliceIndexResult = {
59
75
  * `check: true` never writes to disk; a stale table is reported as `kind: "stale"` instead
60
76
  * (CI-ready — the caller exits non-zero without having touched the working tree).
61
77
  */
62
- export declare function runSliceIndex(model: NormalizedModel, refs: RefsResult, emFilePath: string, check: boolean): SliceIndexResult;
78
+ export declare function runSliceIndex(model: NormalizedModel, refs: RefsResult, emFilePath: string, check: boolean, opts?: SliceIndexOptions): SliceIndexResult;
@@ -13,11 +13,21 @@ import { dirname, join } from "node:path";
13
13
  import { classifySlicePattern, slicePatternLabel } from "../catalog/classify.js";
14
14
  import { resolveSliceDocJoin } from "../catalog/docJoin.js";
15
15
  import { applyMarker } from "../util/markers.js";
16
+ import { composedRank } from "../model/storylines.js";
17
+ import { kebabSlug } from "../util/slug.js";
18
+ import { docDirOf } from "../model/sliceDocPath.js";
16
19
  /** The marker name wrapping the Slices table: `<!-- GENERATED:slices:start -->` /
17
20
  * `<!-- GENERATED:slices:end -->`, matching templates/model-readme.md. */
18
21
  export const SLICE_INDEX_MARKER = "slices";
22
+ /** The full table (`--full`): every lifecycle column. */
19
23
  const TABLE_HEADER = "| # | Slice | Pattern | Status | Reviewed by | Ratified by | Owner | Tracking | Implemented in | Conformed | Design doc |\n" +
20
24
  "|---|-------|---------|--------|-------------|-------------|-------|----------|----------------|-----------|------------|";
25
+ /** The reader's table (default since the 2026-11-03 ruling): what a person needs to find a slice.
26
+ * The lifecycle columns are `em status`'s job; `--full` brings them back. */
27
+ const READER_HEADER = "| # | Slice | Pattern | Status | Design doc |\n|---|-------|---------|--------|------------|";
28
+ /** The root README's storyline table (`GENERATED:storylines`). */
29
+ export const STORYLINE_INDEX_MARKER = "storylines";
30
+ const STORYLINE_HEADER = "| Storyline | Slices | Implemented | Diagram |\n|-----------|--------|-------------|---------|";
21
31
  /** MIL-214: `v<N> @ <rev>` when this slice's current version has a conformance certification
22
32
  * (`doc.conformedVersion`/`doc.conformedAt` both set — always set together, `em slice conform`'s
23
33
  * only write path), `—` otherwise. Deliberately reports the RECORDED certification verbatim,
@@ -57,7 +67,7 @@ function statusCell(doc, continuationOf) {
57
67
  }
58
68
  /** Build the Slices table body for `model`. `baseDir` is the `.em` file's directory — same
59
69
  * doc-resolution convention `em export`/`em catalog` use for `slices/<key>.md`. */
60
- export function buildSliceIndexTable(model, refs, baseDir) {
70
+ export function buildSliceIndexTable(model, refs, baseDir, opts = {}) {
61
71
  const diagnostics = [];
62
72
  // GH #287: a continuation column synthesized from `view X again` inside another slice has no
63
73
  // source slice block of its own, so it gets no row (and does not consume a row number).
@@ -71,6 +81,7 @@ export function buildSliceIndexTable(model, refs, baseDir) {
71
81
  diagnostics.push(...docDiags);
72
82
  rows.push({
73
83
  index: rows.length + 1,
84
+ sliceIndex: i,
74
85
  name: slice.name,
75
86
  storyline: slice.storyline ?? "—",
76
87
  pattern: slicePatternLabel(pattern),
@@ -85,18 +96,58 @@ export function buildSliceIndexTable(model, refs, baseDir) {
85
96
  implementedIn: continuationOf ? "—" : (doc.implementedIn ?? "—"),
86
97
  conformed: continuationOf ? "—" : conformedCell(doc),
87
98
  // GH #275: `no-doc-bound` carries a made-up `slices/<key>.md` path that nothing backs.
88
- docPath: !doc.found && doc.reason === "no-doc-bound" ? null : doc.path,
99
+ // GH #421: the README sits beside the root, the doc beside its declaring file — link through the folder
100
+ docPath: !doc.found && doc.reason === "no-doc-bound" ? null : `${docDirOf(slice)}${doc.path}`,
89
101
  });
90
102
  });
91
- // GH #277: a Storyline column right after Slice, only for a model that declares storylines.
92
- const withStoryline = (model.storylines ?? []).length > 0;
93
- const header = withStoryline
94
- ? TABLE_HEADER.split("\n").map((l, n) => (n === 0 ? l.replace("| Slice |", "| Slice | Storyline |") : l.replace("|-------|", "|-------|-----------|"))).join("\n")
95
- : TABLE_HEADER;
96
- const lines = rows.map((r) => `| ${r.index} | ${escapeCell(r.name)} | ${withStoryline ? `${escapeCell(r.storyline)} | ` : ""}${escapeCell(r.pattern)} | ${escapeCell(r.status)} | ` +
97
- `${escapeCell(r.reviewedBy)} | ${escapeCell(r.ratifiedBy)} | ${escapeCell(r.owner)} | ` +
98
- `${escapeCell(r.tracking)} | ${escapeCell(r.implementedIn)} | ${escapeCell(r.conformed)} | ${r.docPath ? `[${r.docPath}](${r.docPath})` : "—"} |`);
99
- return { markdown: [header, ...lines].join("\n"), rows, diagnostics };
103
+ const storylines = model.storylines ?? [];
104
+ const withStoryline = storylines.length > 0;
105
+ const full = opts.full === true;
106
+ // `--full` keeps the pre-2026-11 table: every lifecycle column, plus (GH #277) a Storyline
107
+ // column right after Slice when the model declares storylines.
108
+ const header = !full
109
+ ? READER_HEADER
110
+ : withStoryline
111
+ ? TABLE_HEADER.split("\n").map((l, n) => (n === 0 ? l.replace("| Slice |", "| Slice | Storyline |") : l.replace("|-------|", "|-------|-----------|"))).join("\n")
112
+ : TABLE_HEADER;
113
+ const line = (r, n) => {
114
+ const doc = r.docPath ? `[${r.docPath}](${r.docPath})` : "—";
115
+ if (!full)
116
+ return `| ${n} | ${escapeCell(r.name)} | ${escapeCell(r.pattern)} | ${escapeCell(r.status)} | ${doc} |`;
117
+ return (`| ${n} | ${escapeCell(r.name)} | ${withStoryline ? `${escapeCell(r.storyline)} | ` : ""}${escapeCell(r.pattern)} | ${escapeCell(r.status)} | ` +
118
+ `${escapeCell(r.reviewedBy)} | ${escapeCell(r.ratifiedBy)} | ${escapeCell(r.owner)} | ` +
119
+ `${escapeCell(r.tracking)} | ${escapeCell(r.implementedIn)} | ${escapeCell(r.conformed)} | ${doc} |`);
120
+ };
121
+ let markdown;
122
+ let storylinesMarkdown = "";
123
+ if (!withStoryline) {
124
+ markdown = [header, ...rows.map((r) => line(r, r.index))].join("\n");
125
+ }
126
+ else {
127
+ // One section per storyline (document order), its slices on the composed timeline and
128
+ // numbered within the story — the same "Step N of M" the doc's story line states — then
129
+ // any slice outside every storyline. The storyline's own diagram is `em render --map`'s
130
+ // (or `--storyline`'s) default output.
131
+ const byIndex = new Map(rows.map((r) => [r.sliceIndex, r]));
132
+ const sections = [];
133
+ const placed = new Set();
134
+ const storyRows = [];
135
+ for (const st of storylines) {
136
+ const members = [...st.sliceIndexes].sort((a, b) => composedRank(model, a) - composedRank(model, b)).map((i) => byIndex.get(i)).filter((r) => r !== undefined);
137
+ for (const r of members)
138
+ placed.add(r.sliceIndex);
139
+ const svg = `storylines/${kebabSlug(st.name)}.svg`;
140
+ sections.push(`### ${st.name}`, `_${members.length} slice${members.length === 1 ? "" : "s"} · [diagram](${svg})_`, "", header, ...members.map((r, n) => line(r, n + 1)), "");
141
+ const implemented = members.filter((r) => r.status === "implemented").length;
142
+ storyRows.push(`| ${escapeCell(st.name)} | ${members.length} | ${implemented} | [${svg}](${svg}) |`);
143
+ }
144
+ const outside = rows.filter((r) => !placed.has(r.sliceIndex));
145
+ if (outside.length > 0)
146
+ sections.push("### Outside any storyline", "", header, ...outside.map((r, n) => line(r, n + 1)), "");
147
+ markdown = sections.join("\n").trimEnd();
148
+ storylinesMarkdown = [STORYLINE_HEADER, ...storyRows, "", "Canvas: [storylines/map.html](storylines/map.html) (`em render --map`)"].join("\n");
149
+ }
150
+ return { markdown, storylinesMarkdown, rows, diagnostics };
100
151
  }
101
152
  /**
102
153
  * Rewrite (or, in `check` mode, verify) the GENERATED:slices block in `<dirname(emFilePath)>/
@@ -108,10 +159,10 @@ export function buildSliceIndexTable(model, refs, baseDir) {
108
159
  * `check: true` never writes to disk; a stale table is reported as `kind: "stale"` instead
109
160
  * (CI-ready — the caller exits non-zero without having touched the working tree).
110
161
  */
111
- export function runSliceIndex(model, refs, emFilePath, check) {
162
+ export function runSliceIndex(model, refs, emFilePath, check, opts = {}) {
112
163
  const baseDir = dirname(emFilePath);
113
164
  const readmePath = join(baseDir, "README.md");
114
- const table = buildSliceIndexTable(model, refs, baseDir);
165
+ const table = buildSliceIndexTable(model, refs, baseDir, opts);
115
166
  if (!existsSync(readmePath)) {
116
167
  return {
117
168
  ok: false,
@@ -134,9 +185,22 @@ export function runSliceIndex(model, refs, emFilePath, check) {
134
185
  table,
135
186
  };
136
187
  }
137
- const changed = updated !== original;
188
+ // The storyline table is optional: a README scaffolded before 2026-11 has no
189
+ // GENERATED:storylines markers, and that is a hint, never an error.
190
+ let storylines = "n/a";
191
+ let next = updated;
192
+ if (table.storylinesMarkdown !== "") {
193
+ const withStorylines = applyMarker(updated, STORYLINE_INDEX_MARKER, table.storylinesMarkdown);
194
+ if (withStorylines === null)
195
+ storylines = "absent";
196
+ else {
197
+ storylines = withStorylines === updated ? "current" : "written";
198
+ next = withStorylines;
199
+ }
200
+ }
201
+ const changed = next !== original;
138
202
  if (!changed)
139
- return { ok: true, readmePath, wrote: false, changed: false, table };
203
+ return { ok: true, readmePath, wrote: false, changed: false, table, storylines };
140
204
  if (check) {
141
205
  return {
142
206
  ok: false,
@@ -146,7 +210,7 @@ export function runSliceIndex(model, refs, emFilePath, check) {
146
210
  table,
147
211
  };
148
212
  }
149
- writeFileSync(readmePath, updated, "utf8");
150
- return { ok: true, readmePath, wrote: true, changed: true, table };
213
+ writeFileSync(readmePath, next, "utf8");
214
+ return { ok: true, readmePath, wrote: true, changed: true, table, storylines };
151
215
  }
152
216
  //# sourceMappingURL=sliceIndex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sliceIndex.js","sourceRoot":"","sources":["../../src/cli/sliceIndex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sliceIndex.js","sourceRoot":"","sources":["../../src/cli/sliceIndex.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,8 @@ alternatives = []) {
68
68
  ``,
69
69
  `![Diagram](./${key}.svg)`,
70
70
  ``,
71
+ ...block("story"),
72
+ ``,
71
73
  `## Intent`,
72
74
  `{{Why this slice exists — the user or business goal it serves, in one or two sentences. Note the`,
73
75
  `originating ticket/conversation link here if one exists.}}`,
@@ -1 +1 @@
1
- {"version":3,"file":"sliceNew.js","sourceRoot":"","sources":["../../src/cli/sliceNew.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sliceNew.js","sourceRoot":"","sources":["../../src/cli/sliceNew.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,6 @@
39
39
  // review, then ratify, then mark-implemented. One `--by`/`on` pair stamps every escalated field
40
40
  // this run touches — a batch scaffold, not a record of N separate human sessions.
41
41
  import { existsSync, writeFileSync } from "node:fs";
42
- import { join } from "node:path";
43
42
  import { continuationOf } from "../model/continuation.js";
44
43
  import { classifySlicePattern } from "../catalog/classify.js";
45
44
  import { resolveSliceDocJoin } from "../catalog/docJoin.js";
@@ -48,6 +47,7 @@ import { buildStubDocContent } from "./sliceNew.js";
48
47
  import { applyReviewFrontmatter } from "./review.js";
49
48
  import { applyRatifyFrontmatter } from "./ratify.js";
50
49
  import { applyImplementedFrontmatter } from "./markImplemented.js";
50
+ import { docAbsPath } from "../catalog/docLocate.js";
51
51
  /** `--status`'s exact 4-value enum — the same lifecycle values every slice doc already uses
52
52
  * (docs/slice-doc-schema.md); `stub-all` never invents a 5th "backbone"/"existing" value. */
53
53
  export const STUB_STATUSES = ["draft", "reviewed", "ready-to-implement", "implemented"];
@@ -134,7 +134,7 @@ export function runStubAll(model, refs, baseDir, source, opts) {
134
134
  // Safe: every classifySlicePattern() value other than "unclassified" is one of the exact 4
135
135
  // string literals sliceNew.ts's SlicePattern enumerates too.
136
136
  const pattern = classified;
137
- const absPath = join(baseDir, doc.path);
137
+ const absPath = docAbsPath(baseDir, doc.path, slice); // GH #421: a new stub goes into the slice's own folder
138
138
  if (doc.reason === "no-doc-bound" && existsSync(absPath)) {
139
139
  outcomes.push({
140
140
  kind: "skip",
@@ -161,6 +161,11 @@ export function runStubAll(model, refs, baseDir, source, opts) {
161
161
  // `binding-missing-file`: a note already points at this exact path — re-wiring would refuse
162
162
  // ("already has a note clause"), and there's nothing to wire anyway.
163
163
  const needsWire = doc.reason !== "binding-missing-file";
164
+ if (needsWire && slice.file !== undefined) {
165
+ // GH #421: the note would go into a storyline model file, not the root text in hand.
166
+ outcomes.push({ kind: "skip", sliceKey, reason: `declared in storyline model file ${slice.file} — stub it with \`em slice new\` and wire it with \`--wire\`` });
167
+ continue;
168
+ }
164
169
  let elementName = null;
165
170
  if (needsWire) {
166
171
  const wired = wireSliceNote(workingSource, model, refs, sliceKey, pattern, doc.path);
@@ -1 +1 @@
1
- {"version":3,"file":"sliceStubAll.js","sourceRoot":"","sources":["../../src/cli/sliceStubAll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sliceStubAll.js","sourceRoot":"","sources":["../../src/cli/sliceStubAll.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,2FAA2F;AAC3F,2FAA2F;AAC3F,4FAA4F;AAC5F,+FAA+F;AAC/F,6FAA6F;AAC7F,iGAAiG;AACjG,yFAAyF;AACzF,iEAAiE;AACjE,EAAE;AACF,gGAAgG;AAChG,qBAAqB;AACrB,gGAAgG;AAChG,uDAAuD;AACvD,kGAAkG;AAClG,wDAAwD;AACxD,uFAAuF;AACvF,gGAAgG;AAChG,iEAAiE;AACjE,iGAAiG;AACjG,iGAAiG;AACjG,4FAA4F;AAC5F,+DAA+D;AAC/D,iGAAiG;AACjG,6FAA6F;AAC7F,8FAA8F;AAC9F,gGAAgG;AAChG,+FAA+F;AAC/F,iGAAiG;AACjG,wDAAwD;AACxD,EAAE;AACF,uFAAuF;AACvF,8FAA8F;AAC9F,kGAAkG;AAClG,8FAA8F;AAC9F,gGAAgG;AAChG,gGAAgG;AAChG,2FAA2F;AAC3F,gGAAgG;AAChG,kFAAkF;AAElF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAgB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD;8FAC8F;AAC9F,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,aAAa,CAAU,CAAC;AAGjG,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAQ,aAAmC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAY;IAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,OAAO,CAAC;IACvE,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC;IAC1E,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,GAAG,OAAO,MAAM,OAAO,EAAE,CAAC;AACnC,CAAC;AAID;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,QAAgB,EAChB,MAAkB,EAClB,EAAU,EACV,EAAU,EACV,gBAA+B;IAE/B,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAErD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IAE1E,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,MAAM,KAAK,oBAAoB;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IAEpF,2BAA2B;IAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,6DAA6D,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO,2BAA2B,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACzE,CAAC;AAmCD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,KAAsB,EACtB,IAAgB,EAChB,OAAe,EACf,MAAc,EACd,IAAoB;IAEpB,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,IAAI,aAAa,GAAG,MAAM,CAAC;IAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,YAAY,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,MAAM,EAAE,oBAAoB,YAAY,CAAC,QAAQ,6CAA6C;aAC/F,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,CAAC;QAC1G,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,uBAAuB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YACtF,SAAS;QACX,CAAC;QAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAC,CAAC;YAC/F,SAAS;QACX,CAAC;QACD,2FAA2F;QAC3F,6DAA6D;QAC7D,MAAM,OAAO,GAAG,UAA0B,CAAC;QAE3C,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,uDAAuD;QAC7G,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,6DAA6D;aACjF,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,qBAAqB,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,MAAM;gBACZ,QAAQ;gBACR,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,2EAA2E;aAC/F,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzH,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,SAAS;QACX,CAAC;QAED,4FAA4F;QAC5F,qEAAqE;QACrE,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,KAAK,sBAAsB,CAAC;QACxD,IAAI,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1C,qFAAqF;YACrF,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,oCAAoC,KAAK,CAAC,IAAI,8DAA8D,EAAE,CAAC,CAAC;YAChK,SAAS;QACX,CAAC;QACD,IAAI,WAAW,GAAkB,IAAI,CAAC;QACtC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,aAAa,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACrF,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACrF,SAAS;YACX,CAAC;YACD,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACvE,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,SAAS;YACf,QAAQ;YACR,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO;YACP,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,SAAS;YAChB,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;AACpE,CAAC"}
@@ -21,6 +21,18 @@ export interface DocTextSync {
21
21
  /** Regenerate `raw`'s regions against `expected`. Pure. Statuses are check-mode (`stale`, never
22
22
  * `synced`); the runner relabels after writing. */
23
23
  export declare function syncDocText(raw: string, expected: GeneratedRegion[]): DocTextSync;
24
+ /**
25
+ * The one region `em slice sync` DOES insert when missing: `em-slice-story` (owner ruling
26
+ * 2026-11-03), placed right after the doc's `![Diagram](…)` line (else after its `# Slice:`
27
+ * title). Only on a doc that has regions and no `ratifiedHash:` — marker lines are authored
28
+ * text under the signature (catalog/sliceDoc.ts `stripGeneratedRegions`), so on a signed doc
29
+ * the region stays `missing` with its note until the next revision adds the pair. Pure.
30
+ */
31
+ export declare function adoptStoryRegion(raw: string): {
32
+ text: string;
33
+ inserted: boolean;
34
+ hadRegions: boolean;
35
+ };
24
36
  /** GH #347: what a region rewrite did to a doc's `ratifiedHash:` — `kept` (current scope, the
25
37
  * hash is untouched), `restamped` (an intact older-scope hash moved to the current scope; `from`
26
38
  * names the old scope), `broken` (the body already failed its hash before the sync). */
@@ -33,12 +33,12 @@
33
33
  // Pure core (`syncDocText`) + fs-aware runner (`runSliceSync`); the CLI and the MCP `slice_sync`
34
34
  // tool (check-only) share `buildSliceSyncJson`.
35
35
  import { readFileSync, writeFileSync } from "node:fs";
36
- import { join } from "node:path";
37
36
  import { resolveSliceDocJoin } from "../catalog/docJoin.js";
38
- import { buildSliceRegions, scanSliceRegions } from "../catalog/sliceSections.js";
37
+ import { buildSliceRegions, regionEndLine, regionStartLine, scanSliceRegions } from "../catalog/sliceSections.js";
39
38
  import { isOldHashScope, parseSliceDoc, ratifiedHashScope, sliceDocBodyHash } from "../catalog/sliceDoc.js";
40
39
  import { replaceFieldValue } from "./frontmatterSurgery.js";
41
40
  import { GENERATOR_NAME, GENERATOR_VERSION } from "../emit/json.js";
41
+ import { docAbsPath } from "../catalog/docLocate.js";
42
42
  // 1.0 (MIL-266): initial shape.
43
43
  export const SLICE_SYNC_SCHEMA_VERSION = "1.0";
44
44
  /** Regenerate `raw`'s regions against `expected`. Pure. Statuses are check-mode (`stale`, never
@@ -77,6 +77,32 @@ export function syncDocText(raw, expected) {
77
77
  next = next.slice(0, e.start) + e.text + next.slice(e.end);
78
78
  return { status: edits.length > 0 ? "stale" : "ok", regions, problems: [], next };
79
79
  }
80
+ /**
81
+ * The one region `em slice sync` DOES insert when missing: `em-slice-story` (owner ruling
82
+ * 2026-11-03), placed right after the doc's `![Diagram](…)` line (else after its `# Slice:`
83
+ * title). Only on a doc that has regions and no `ratifiedHash:` — marker lines are authored
84
+ * text under the signature (catalog/sliceDoc.ts `stripGeneratedRegions`), so on a signed doc
85
+ * the region stays `missing` with its note until the next revision adds the pair. Pure.
86
+ */
87
+ export function adoptStoryRegion(raw) {
88
+ const scan = scanSliceRegions(raw);
89
+ const hadRegions = scan.regions.length > 0;
90
+ if (scan.problems.length > 0)
91
+ return { text: raw, inserted: false, hadRegions };
92
+ if (scan.regions.some((r) => r.name === "em-slice-story"))
93
+ return { text: raw, inserted: false, hadRegions };
94
+ if (parseSliceDoc(raw).ratifiedHash)
95
+ return { text: raw, inserted: false, hadRegions };
96
+ const eol = raw.includes("\r\n") ? "\r\n" : "\n";
97
+ const lines = raw.split(eol);
98
+ let at = lines.findIndex((l) => /^!\[[^\]]*\]\(/.test(l));
99
+ if (at < 0)
100
+ at = lines.findIndex((l) => /^# /.test(l));
101
+ if (at < 0)
102
+ return { text: raw, inserted: false, hadRegions };
103
+ lines.splice(at + 1, 0, "", regionStartLine("em-slice-story"), regionEndLine("em-slice-story"));
104
+ return { text: lines.join(eol), inserted: true, hadRegions };
105
+ }
80
106
  /**
81
107
  * Pure (GH #347): the signature half of a sync. `raw` is the doc as read, `next` the doc with its
82
108
  * regions regenerated. A doc with no `ratifiedHash:` passes through (`signature: null`). Otherwise
@@ -146,10 +172,22 @@ export function runSliceSync(model, refs, baseDir, sliceKey, check) {
146
172
  continue;
147
173
  const docKey = path.replace(/^slices\//, "").replace(/\.md$/, "");
148
174
  const ownerIdx = indices.find((i) => refs.sliceKeys[i] === docKey) ?? Math.min(...indices);
149
- const abs = join(baseDir, path);
175
+ const abs = docAbsPath(baseDir, path); // GH #421: the doc may sit in a storyline folder
150
176
  const raw = readFileSync(abs, "utf8");
151
177
  // GH #368: the doc's own authored scenarios retire the collection stubs they cover.
152
- const result = syncDocText(raw, buildSliceRegions(model, indices, { authoredDoc: raw }));
178
+ // The story region is the one region sync inserts (unsigned docs only). A doc that had no
179
+ // regions at all — written before em slice sync existed — adopts just that line: its field
180
+ // tables are not inserted (still `em slice new --force`'s job), so it is synced against the
181
+ // story region alone and the other regions are not reported missing.
182
+ const adopted = adoptStoryRegion(raw);
183
+ const all = buildSliceRegions(model, indices, { authoredDoc: raw, storyOwner: ownerIdx, refs });
184
+ // A story-only doc (adopted now, or on an earlier run) is synced against the story line alone:
185
+ // its field tables were never generated, so they are not "missing" — `em slice new --force`
186
+ // is still how a doc adopts them.
187
+ const present = scanSliceRegions(adopted.text).regions.map((r) => r.name);
188
+ const storyOnly = present.length === 1 && present[0] === "em-slice-story";
189
+ const expected = storyOnly ? all.filter((r) => r.kind === "story") : all;
190
+ const result = syncDocText(adopted.text, expected);
153
191
  let status = result.status;
154
192
  let regions = result.regions;
155
193
  let problems = result.problems;
@@ -1 +1 @@
1
- {"version":3,"file":"sliceSync.js","sourceRoot":"","sources":["../../src/cli/sliceSync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sliceSync.js","sourceRoot":"","sources":["../../src/cli/sliceSync.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,9 @@ import { CoverageReport } from "./coverage.js";
7
7
  import { GitRunner } from "./diff-inputs.js";
8
8
  import { SliceDocFacts } from "./conformScope.js";
9
9
  import { ModelVersionSliceChange } from "./modelVersion.js";
10
- /** The 4 canonical slice-doc lifecycle statuses (docs/slice-doc-schema.md) — the same enum
11
- * `em catalog`'s header coloring and `em render`'s status legend already recognize. */
12
- export declare const CANONICAL_STATUSES: readonly ["draft", "reviewed", "ready-to-implement", "implemented"];
13
- export type CanonicalStatus = (typeof CANONICAL_STATUSES)[number];
10
+ import { CANONICAL_STATUSES, CanonicalStatus } from "../catalog/sliceDoc.js";
11
+ export { CANONICAL_STATUSES };
12
+ export type { CanonicalStatus };
14
13
  /** Bucket a slice's lifecycle status falls into for the rollup: one of the 4 canonical values,
15
14
  * `"no-doc"` (no doc bound at all, or the binding names a missing file — `resolveSliceDocJoin`'s
16
15
  * `found: false`), `"frontmatter-invalid"` (a doc WAS found — a note binds it — but its
@@ -32,15 +32,16 @@ import { findingsFilesOf, resolveFindingsForReport, unruledAcrossFiles } from ".
32
32
  import { findCertifiedVersion, latestModelVersionNumber, modelVersionDrift } from "./modelVersion.js";
33
33
  import { isOlder } from "../util/semver.js";
34
34
  import { slicePublicTouching } from "../catalog/apiFirst.js";
35
- /** The 4 canonical slice-doc lifecycle statuses (docs/slice-doc-schema.md) — the same enum
36
- * `em catalog`'s header coloring and `em render`'s status legend already recognize. */
37
- export const CANONICAL_STATUSES = ["draft", "reviewed", "ready-to-implement", "implemented"];
35
+ // The 4 canonical slice-doc lifecycle statuses live with the doc reader (GH #411: `em validate`'s
36
+ // frontmatter-status-unrecognized shares them); re-exported here for the rollup's own callers.
37
+ import { CANONICAL_STATUSES, isCanonicalStatus } from "../catalog/sliceDoc.js";
38
+ export { CANONICAL_STATUSES };
38
39
  export function classifyStatusBucket(found, reason, status) {
39
40
  if (!found)
40
41
  return "no-doc";
41
42
  if (reason === "frontmatter-invalid")
42
43
  return "frontmatter-invalid";
43
- if (status !== null && CANONICAL_STATUSES.includes(status))
44
+ if (isCanonicalStatus(status))
44
45
  return status;
45
46
  return "unknown";
46
47
  }