@beehexa/hexasync-template-report-render 2608.8.3 → 2608.15.1

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.
@@ -1,4 +1,14 @@
1
1
  import { ComponentFlow, FlowStep } from '@beehexa/hexasync-template-report-model';
2
+ /**
3
+ * Build a Mermaid `flowchart LR` for a puller/pusher's step phases, mirroring the
4
+ * conventions dashboard-v2 uses in its Sync Logs → Flow tab:
5
+ * - one subgraph per non-empty phase (`beforePullSteps`, `pullSteps`, …),
6
+ * - one rectangle node per step (label = step `name` falling back to `key`),
7
+ * - edges driven by each step's `next` (string key, `{if,then,else}` object, or
8
+ * a Scriban expression referencing quoted step keys),
9
+ * - phases chained entry-to-entry so the overall order reads left-to-right.
10
+ * Pure string formatting — no I/O.
11
+ */
2
12
  /** Step keys quoted inside a Scriban/expression string (e.g. `"SAVE_ORDER"`). */
3
13
  /**
4
14
  * The step keys a routing EXPRESSION can name — every quoted identifier in it.
@@ -46,6 +56,27 @@ export interface FlowEdge {
46
56
  * * an empty or absent route is the end of the flow, and yields no edge.
47
57
  */
48
58
  export declare function flowEdges(steps: readonly FlowStep[]): readonly FlowEdge[];
49
- /** Render a component flow as a Mermaid definition string. */
59
+ /**
60
+ * The report's chart, drawn by the SHARED flow models (Story 4.6, AC-1).
61
+ *
62
+ * ⛔ This file used to draw it — `buildPhase`, `buildCreationMermaid`, `mermaidId`, `escapeLabel`, the phase-chaining
63
+ * loop, ~310 lines. That was the third of three implementations answering *"what is this component's flow?"*, and this
64
+ * epic exists because the three disagreed. The editor swapped in Story 4.5; this is the report.
65
+ *
66
+ * The evidence that it mattered is this file's own history: `escapeLabel` had to be fixed for `<` and `&` in Story 4.4's
67
+ * review **separately** from the identical fix in the flow packages, because the golden suite — the one named "holds the
68
+ * consumers to one answer" — renders through those packages and could not see this emitter. One emitter cannot drift
69
+ * from itself.
70
+ *
71
+ * Direction is preserved PER RUNTIME, exactly as shipped: `LR` for a puller/pusher, the shared default `TD` for a
72
+ * creation workflow. The retired emitter drew them that way — its own docblock said *"a `flowchart TD`"* of
73
+ * `creationSteps` — and the report's stylesheet gives the puller/pusher chart a horizontally scrolling box that a
74
+ * creation workflow's tall branch tree does not want. Direction is a presentation choice the renderer already takes as
75
+ * an argument, which is what separates a styling option from a second geometry; unifying the two would have been a
76
+ * visible change to the shipped report that no AC asks for.
77
+ *
78
+ * A flow with no `source` renders the empty node rather than a legacy chart: there is no second emitter left to fall
79
+ * back to, and drawing a diagram from the `phases` projection is exactly what this change removes.
80
+ */
50
81
  export declare function buildMermaid(flow: ComponentFlow): string;
51
82
  //# sourceMappingURL=flowChart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowChart.d.ts","sourceRoot":"","sources":["../src/flowChart.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,QAAQ,EACT,MAAM,yCAAyC,CAAC;AAgCjD,iFAAiF;AACjF;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMjD;AAED;mBACmB;AACnB,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD;AAiLD;;;;;;;GAOG;AACH,wCAAwC;AACxC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,QAAQ,EAAE,CA4EzE;AA6GD,8DAA8D;AAC9D,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAqCxD"}
1
+ {"version":3,"file":"flowChart.d.ts","sourceRoot":"","sources":["../src/flowChart.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,QAAQ,EACT,MAAM,yCAAyC,CAAC;AAWjD;;;;;;;;;GASG;AAEH,iFAAiF;AACjF;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAMjD;AAED;mBACmB;AACnB,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;;;;GAOG;AACH,wCAAwC;AACxC,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,SAAS,QAAQ,EAAE,CAqGzE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CA6DxD"}
package/dist/flowChart.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { workerFlow, renderMermaid as renderWorkerMermaid, } from '@beehexa/hexasync-template-worker-flow';
2
+ import { frontendFlow, renderMermaid as renderFrontendMermaid, } from '@beehexa/hexasync-template-frontend-flow';
1
3
  /**
2
4
  * Build a Mermaid `flowchart LR` for a puller/pusher's step phases, mirroring the
3
5
  * conventions dashboard-v2 uses in its Sync Logs → Flow tab:
@@ -8,22 +10,6 @@
8
10
  * - phases chained entry-to-entry so the overall order reads left-to-right.
9
11
  * Pure string formatting — no I/O.
10
12
  */
11
- /** Sanitize a value into a Mermaid-safe node/subgraph id. */
12
- function mermaidId(value) {
13
- return value.replace(/[^a-zA-Z0-9_]/g, '_');
14
- }
15
- /** Escape a value for use inside a quoted Mermaid label. Only `"` (which would close
16
- * the quoted label) and newlines need escaping — braces/pipes render fine inside a
17
- * quoted label, whereas HTML numeric entities (`&#123;`) are mangled by Mermaid. This
18
- * matters for raw Scriban expression labels, which contain `{{ … | … }}`. */
19
- function escapeLabel(value) {
20
- return String(value ?? '')
21
- .replace(/"/g, '&quot;')
22
- .replace(/\r?\n/g, ' ');
23
- }
24
- function nodeId(phaseKey, stepKey) {
25
- return `${mermaidId(phaseKey)}_${mermaidId(stepKey)}`;
26
- }
27
13
  /** Step keys quoted inside a Scriban/expression string (e.g. `"SAVE_ORDER"`). */
28
14
  /**
29
15
  * The step keys a routing EXPRESSION can name — every quoted identifier in it.
@@ -45,166 +31,6 @@ export function quotedKeys(expr) {
45
31
  export function looksLikeExpression(s) {
46
32
  return s.includes('{{') || s.includes('}}') || /"[A-Za-z0-9_]+"/.test(s);
47
33
  }
48
- function buildPhase(phaseKey, steps,
49
- /**
50
- * Kept in the signature, unused since the IF/SWITCH-via-`data` routing was ungated (2026-08-06).
51
- *
52
- * The callers pass it and the flag still means something to the model, so removing it from the signature
53
- * would be a wider change than the fix; naming it `_newKind` records that nothing here reads it any more.
54
- */
55
- _newKind = false) {
56
- const nodeLines = [];
57
- const edgeLines = [];
58
- const seenEdges = new Set();
59
- const byKey = new Map(steps.map((s) => [s.key, s]));
60
- let diamondSeq = 0;
61
- const pushEdge = (line) => {
62
- if (!seenEdges.has(line)) {
63
- seenEdges.add(line);
64
- edgeLines.push(line);
65
- }
66
- };
67
- for (const step of steps) {
68
- nodeLines.push(` ${nodeId(phaseKey, step.key)}["${escapeLabel(step.label)}"]`);
69
- }
70
- /** Resolve a target key to a node id, synthesizing a stadium for an unknown target
71
- * (e.g. a cross-phase onError / fromStep reference). New-kind only. */
72
- const targetNode = (k) => {
73
- if (byKey.has(k))
74
- return nodeId(phaseKey, k);
75
- const uId = `${mermaidId(phaseKey)}_UNK_${mermaidId(k)}`;
76
- const decl = ` ${uId}(["${escapeLabel(k)}"])`;
77
- if (!nodeLines.includes(decl))
78
- nodeLines.push(decl);
79
- return uId;
80
- };
81
- /** Draw a labeled edge from a node to a (possibly synthesized) target. New-kind only. */
82
- const linkLabeled = (fromId, next, label) => {
83
- if (next == null || next === '')
84
- return;
85
- if (typeof next === 'object') {
86
- linkFrom(fromId, next);
87
- return;
88
- }
89
- pushEdge(` ${fromId} -->|"${escapeLabel(label)}"| ${targetNode(String(next))}`);
90
- };
91
- const linkFrom = (fromId, next) => {
92
- if (next == null || next === '')
93
- return;
94
- // Hierarchical conditional: { if, then, else } → diamond with YES/NO branches.
95
- if (typeof next === 'object') {
96
- const cond = next;
97
- const dId = `${mermaidId(phaseKey)}_D_${++diamondSeq}`;
98
- nodeLines.push(` ${dId}{"${escapeLabel(cond.if ?? '?')}"}`);
99
- pushEdge(` ${fromId} --> ${dId}`);
100
- if (typeof cond.then === 'string' && byKey.has(cond.then)) {
101
- pushEdge(` ${dId} -->|"YES"| ${nodeId(phaseKey, cond.then)}`);
102
- }
103
- else if (cond.then && typeof cond.then === 'object') {
104
- linkFrom(dId, cond.then);
105
- }
106
- if (typeof cond.else === 'string' && byKey.has(cond.else)) {
107
- pushEdge(` ${dId} -->|"NO"| ${nodeId(phaseKey, cond.else)}`);
108
- }
109
- else if (cond.else && typeof cond.else === 'object') {
110
- linkFrom(dId, cond.else);
111
- }
112
- return;
113
- }
114
- const s = String(next);
115
- // Direct step key.
116
- if (byKey.has(s)) {
117
- pushEdge(` ${fromId} --> ${nodeId(phaseKey, s)}`);
118
- return;
119
- }
120
- // Scriban/expression: diamond → each quoted key that names a real step.
121
- if (looksLikeExpression(s)) {
122
- const targets = quotedKeys(s).filter((k) => byKey.has(k));
123
- if (targets.length > 0) {
124
- const dId = `${mermaidId(phaseKey)}_EXPR_${++diamondSeq}`;
125
- nodeLines.push(` ${dId}{"${escapeLabel(s)}"}`);
126
- pushEdge(` ${fromId} --> ${dId}`);
127
- for (const t of targets) {
128
- pushEdge(` ${dId} --> ${nodeId(phaseKey, t)}`);
129
- }
130
- return;
131
- }
132
- }
133
- // Unknown terminal target → stadium node.
134
- const uId = `${mermaidId(phaseKey)}_UNK_${mermaidId(s)}`;
135
- nodeLines.push(` ${uId}(["${escapeLabel(s)}"])`);
136
- pushEdge(` ${fromId} --> ${uId}`);
137
- };
138
- for (const step of steps) {
139
- const fromId = nodeId(phaseKey, step.key);
140
- /**
141
- * IF / SWITCH routing via `data` — for EVERY kind, not new-kind only (reported 2026-08-06).
142
- *
143
- * This block was gated on `newKind`, and `toFlowStep`'s own comment recorded the assumption behind it:
144
- * *"New-kind fields; harmless for old-kind steps (all undefined)."* A shipped OLD-kind pusher disproves
145
- * it — `001-projects/nla-extensions/nla-backorder/.../Backorder_BackOrderItemEstimatedDate_Pusher.yaml`
146
- * has three `displayType: IF` steps whose branches are in `data.then` / `data.else`. Gated out, they fell
147
- * through to `step.next`, which an IF step does not have, so six of its seven nodes were drawn with no
148
- * edges at all — the reported chart.
149
- *
150
- * The runtime settles which is right: `IfStepExecutor.ExecuteAsync` passes the step's own `StepData` into
151
- * `NextStepBuilder`, so `data: { if, then, else }` IS that step's next, whatever kind of flow it sits in.
152
- *
153
- * Safe to ungate: every clause is guarded by the presence of the field it reads, so an old-kind step
154
- * with no `stepType`, no `data`, no `onError` and no `fromStep` takes exactly the path it took before.
155
- */
156
- const st = String(step.stepType ?? '').toUpperCase();
157
- const d = step.data && typeof step.data === 'object'
158
- ? step.data
159
- : undefined;
160
- if (st === 'IF' && d) {
161
- if (d.then != null)
162
- linkLabeled(fromId, d.then, 'YES');
163
- if (d.else != null)
164
- linkLabeled(fromId, d.else, 'NO');
165
- // A conditional in `data` does not preclude a plain `next`; draw it when it is there.
166
- if (d.then == null && d.else == null)
167
- linkFrom(fromId, step.next);
168
- }
169
- else if (st === 'SWITCH' && d && !Array.isArray(d)) {
170
- for (const branchKey of Object.keys(d))
171
- linkLabeled(fromId, branchKey, branchKey);
172
- }
173
- else {
174
- linkFrom(fromId, step.next);
175
- }
176
- if (step.onError)
177
- linkLabeled(fromId, step.onError, 'onError');
178
- // Exception back-reference: fromStep → this step. New-kind in practice, inert without `fromStep`.
179
- if (step.fromStep)
180
- pushEdge(` ${targetNode(step.fromStep)} -->|"Exception"| ${fromId}`);
181
- }
182
- // Entry nodes: rootStep steps, or the first step if none is flagged.
183
- const roots = steps.filter((s) => s.rootStep);
184
- const entrySteps = roots.length > 0 ? roots : steps.slice(0, 1);
185
- const entryIds = entrySteps.map((s) => nodeId(phaseKey, s.key));
186
- // Tails = every terminal step (no successor `next`), so each end-point chains to
187
- // the next phase — not merely the last-declared step (which may still branch on).
188
- // Falls back to the last step in document order when nothing is terminal.
189
- /**
190
- * A step is TERMINAL when nothing routes out of it — `next` and a `data` conditional alike.
191
- *
192
- * Reading `next` alone made every `data`-branching IF step look terminal, so each was chained to the next
193
- * phase's entry: an edge the flow does not have, drawn beside the branches it was missing.
194
- */
195
- const isTerminal = (s) => {
196
- const branch = s.data && typeof s.data === 'object'
197
- ? s.data
198
- : undefined;
199
- if (branch && (branch.then != null || branch.else != null))
200
- return false;
201
- return s.next == null || s.next === '';
202
- };
203
- const terminals = steps.filter(isTerminal);
204
- const tailSteps = terminals.length > 0 ? terminals : [steps[steps.length - 1]];
205
- const tailIds = tailSteps.map((s) => nodeId(phaseKey, s.key));
206
- return { key: phaseKey, entryIds, tailIds, nodeLines, edgeLines };
207
- }
208
34
  /**
209
35
  * Every route out of every step, as DATA — the same resolution the mermaid builder draws.
210
36
  *
@@ -226,6 +52,29 @@ export function flowEdges(steps) {
226
52
  const out = [];
227
53
  /** Walk one route value, iteratively — `then`/`else` nest without bound. */
228
54
  const routes = (from, value, label) => {
55
+ /**
56
+ * Branch objects already entered on THIS step's walk — the cycle guard.
57
+ *
58
+ * ⛔ Added at the Epic 4 close (2026-08-12). `routeGraph.ts` and the frontend twin both carry this guard, with the
59
+ * reason recorded: a cyclic branch does not loop, it **kills the process** with an uncatchable V8 fatal, and this
60
+ * code is bundled into the VS Code extension host. This walker never received it, and it is the one the
61
+ * extension's fallback SVG still consumes on every preview — so the guarded packages closed the hole on the new
62
+ * path and left it open on the shipped one.
63
+ *
64
+ * Measured: `const a = {}; a.then = a;` walked through here under `--max-old-space-size=200` gives
65
+ * `FATAL ERROR: … heap out of memory`, process aborted. A `try/catch` around the preview does not help.
66
+ *
67
+ * REACHABLE FROM YAML with the parser the CLI already uses — a recursive anchor is all it takes:
68
+ *
69
+ * ```yaml
70
+ * next: &loop
71
+ * if: "x"
72
+ * then: *loop
73
+ * ```
74
+ *
75
+ * Identity, not path: the same object reached twice is the cycle, however long the path to it.
76
+ */
77
+ const entered = new WeakSet();
229
78
  const stack = [
230
79
  { value, ...(label ? { label } : {}) },
231
80
  ];
@@ -235,6 +84,9 @@ export function flowEdges(steps) {
235
84
  if (node == null || node === '')
236
85
  continue;
237
86
  if (typeof node === 'object' && !Array.isArray(node)) {
87
+ if (entered.has(node))
88
+ continue;
89
+ entered.add(node);
238
90
  const cond = node;
239
91
  stack.push({ value: cond.else, label: 'NO' });
240
92
  stack.push({ value: cond.then, label: 'YES' });
@@ -302,144 +154,97 @@ export function flowEdges(steps) {
302
154
  }
303
155
  return out;
304
156
  }
305
- function buildCreationMermaid(flow) {
306
- const steps = flow.phases[0]?.steps ?? [];
307
- if (steps.length === 0)
308
- return 'flowchart TD\n empty["No steps"]';
309
- const wf = 'creationSteps';
310
- const byKey = new Set(steps.map((s) => s.key));
311
- const nid = (k) => `${mermaidId(wf)}_${mermaidId(k)}`;
312
- const startId = `${mermaidId(wf)}_START`;
313
- const endId = `${mermaidId(wf)}_END`;
314
- const nodeLines = [];
315
- const extraNodes = new Map();
316
- const edgeLines = [];
317
- const seenEdges = new Set();
318
- let endUsed = false;
319
- const isDecision = (s) => s.stepType === 'IF' ||
320
- s.stepType === 'SWITCH' ||
321
- (!!s.next && typeof s.next === 'object');
322
- for (const s of steps) {
323
- const label = escapeLabel(s.label);
324
- nodeLines.push(isDecision(s)
325
- ? ` ${nid(s.key)}{"${label}"}`
326
- : ` ${nid(s.key)}["${label}"]`);
327
- }
328
- const pushEdge = (line) => {
329
- if (!seenEdges.has(line)) {
330
- seenEdges.add(line);
331
- edgeLines.push(line);
332
- }
333
- };
334
- /** Resolve a target key to a node id, synthesizing a stadium for unknown targets. */
335
- const target = (k) => {
336
- if (byKey.has(k))
337
- return nid(k);
338
- const uid = `${mermaidId(wf)}_UNK_${mermaidId(k)}`;
339
- if (!extraNodes.has(uid))
340
- extraNodes.set(uid, ` ${uid}(["${escapeLabel(k)}"])`);
341
- return uid;
342
- };
343
- const edge = (from, to, label) => pushEdge(label
344
- ? ` ${from} -->|"${escapeLabel(label)}"| ${to}`
345
- : ` ${from} --> ${to}`);
346
- for (const s of steps) {
347
- const from = nid(s.key);
348
- const md = s.metadata && typeof s.metadata === 'object' ? s.metadata : {};
349
- const before = edgeLines.length;
350
- let isDecisionStep = false;
351
- if (s.stepType === 'IF') {
352
- isDecisionStep = true;
353
- if (md.then != null)
354
- edge(from, target(String(md.then)), 'YES');
355
- if (md.else != null)
356
- edge(from, target(String(md.else)), 'NO');
357
- }
358
- else if (s.stepType === 'SWITCH') {
359
- isDecisionStep = true;
360
- const cases = md.cases && typeof md.cases === 'object' ? md.cases : {};
361
- for (const [caseVal, tgt] of Object.entries(cases)) {
362
- edge(from, target(String(tgt)), caseVal);
363
- }
364
- if (md.default != null)
365
- edge(from, target(String(md.default)), 'default');
366
- }
367
- else if (s.next && typeof s.next === 'object') {
368
- isDecisionStep = true;
369
- const nb = s.next;
370
- const thenT = nb.then ?? nb.success;
371
- const elseT = nb.else ?? nb.failed;
372
- if (typeof thenT === 'string')
373
- edge(from, target(thenT), 'YES');
374
- if (typeof elseT === 'string')
375
- edge(from, target(elseT), 'NO');
376
- }
377
- else if (typeof s.next === 'string' && s.next.trim() !== '') {
378
- edge(from, target(s.next));
379
- }
380
- else {
381
- endUsed = true;
382
- edge(from, endId);
383
- }
384
- if (s.onCancelled)
385
- edge(from, target(s.onCancelled), 'Cancel');
386
- // A decision step that produced NO edge at all (empty metadata, and no
387
- // onCancelled) would otherwise dangle; link it to END so the chart stays
388
- // connected. Checked after onCancelled so a cancel-only decision isn't also
389
- // given a spurious normal-completion END edge.
390
- if (isDecisionStep && edgeLines.length === before) {
391
- endUsed = true;
392
- edge(from, endId);
393
- }
394
- }
395
- const roots = steps.filter((s) => s.rootStep);
396
- const entries = (roots.length > 0 ? roots : steps.slice(0, 1)).map((s) => nid(s.key));
397
- const lines = ['flowchart TD'];
398
- lines.push(` ${startId}(["Profile Creation"])`);
399
- lines.push(...nodeLines);
400
- for (const decl of extraNodes.values())
401
- lines.push(decl);
402
- if (endUsed)
403
- lines.push(` ${endId}(["END"])`);
404
- for (const entry of entries)
405
- pushEdge(` ${startId} --> ${entry}`);
406
- lines.push(...edgeLines);
407
- return lines.join('\n');
408
- }
409
- /** Render a component flow as a Mermaid definition string. */
157
+ /**
158
+ * The report's chart, drawn by the SHARED flow models (Story 4.6, AC-1).
159
+ *
160
+ * ⛔ This file used to draw it — `buildPhase`, `buildCreationMermaid`, `mermaidId`, `escapeLabel`, the phase-chaining
161
+ * loop, ~310 lines. That was the third of three implementations answering *"what is this component's flow?"*, and this
162
+ * epic exists because the three disagreed. The editor swapped in Story 4.5; this is the report.
163
+ *
164
+ * The evidence that it mattered is this file's own history: `escapeLabel` had to be fixed for `<` and `&` in Story 4.4's
165
+ * review **separately** from the identical fix in the flow packages, because the golden suite — the one named "holds the
166
+ * consumers to one answer" — renders through those packages and could not see this emitter. One emitter cannot drift
167
+ * from itself.
168
+ *
169
+ * Direction is preserved PER RUNTIME, exactly as shipped: `LR` for a puller/pusher, the shared default `TD` for a
170
+ * creation workflow. The retired emitter drew them that way — its own docblock said *"a `flowchart TD`"* of
171
+ * `creationSteps` — and the report's stylesheet gives the puller/pusher chart a horizontally scrolling box that a
172
+ * creation workflow's tall branch tree does not want. Direction is a presentation choice the renderer already takes as
173
+ * an argument, which is what separates a styling option from a second geometry; unifying the two would have been a
174
+ * visible change to the shipped report that no AC asks for.
175
+ *
176
+ * A flow with no `source` renders the empty node rather than a legacy chart: there is no second emitter left to fall
177
+ * back to, and drawing a diagram from the `phases` projection is exactly what this change removes.
178
+ */
410
179
  export function buildMermaid(flow) {
411
- if (flow.kind === 'creation')
412
- return buildCreationMermaid(flow);
413
- const phases = flow.phases.filter((p) => p.steps.length > 0);
414
- if (phases.length === 0) {
415
- return 'flowchart LR\n empty["No steps"]';
416
- }
417
- const lines = ['flowchart LR'];
418
- const newKind = flow.newKind === true;
419
- const builds = phases.map((p) => buildPhase(p.name, p.steps, newKind));
420
- for (const b of builds) {
421
- lines.push(` subgraph sg_${mermaidId(b.key)}["${escapeLabel(b.key)}"]`);
422
- lines.push(' direction LR');
423
- lines.push(...b.nodeLines);
424
- lines.push(...b.edgeLines);
425
- lines.push(' end');
426
- }
427
- // Chain phases: each terminal of the previous phase → each entry of the next,
428
- // so no end-point dead-ends when a phase has multiple terminals.
429
- const seenInterEdges = new Set();
430
- for (let i = 1; i < builds.length; i++) {
431
- const prev = builds[i - 1];
432
- const cur = builds[i];
433
- for (const from of prev.tailIds) {
434
- for (const to of cur.entryIds) {
435
- const line = ` ${from} --> ${to}`;
436
- if (from && to && !seenInterEdges.has(line)) {
437
- seenInterEdges.add(line);
438
- lines.push(line);
439
- }
440
- }
441
- }
180
+ const source = flow.source;
181
+ if (!source)
182
+ return EMPTY_CHART;
183
+ if (source.runtime === 'frontend') {
184
+ /**
185
+ * The FRONTEND model, because AD-21 keeps the two vocabularies apart for real reasons: `then`/`success` aliases,
186
+ * `metadata` rather than `data`, `onCancelled` rather than `onError`. Handing a `creationSteps` document to the
187
+ * worker model would silently drop half the edges of a real connector document.
188
+ */
189
+ const drawn = frontendFlow({
190
+ document: source.component,
191
+ documentId: source.componentId,
192
+ collection: source.collection,
193
+ }).workflows;
194
+ /**
195
+ * ONE chart: the workflow this row is about, not every workflow the document happens to declare.
196
+ *
197
+ * `source.component` is the composed OUTPUT ROOT — `creationSteps` sits there rather than inside a collection — and
198
+ * `frontendFlow` scans all six frontend workflow keys off whatever document it is given. So a root that also
199
+ * declared `setupSteps` would have had it charted into a row whose caption counts `creationSteps` alone.
200
+ *
201
+ * ⛔ The first version rendered every workflow and `join('\n')`ed them, with a comment claiming that a document
202
+ * growing a second workflow *"must not silently lose it"*. Each element is a COMPLETE `flowchart TD …` document, so
203
+ * two of them concatenated inside one ```mermaid fence is a parse error — the branch written to avoid losing a
204
+ * chart lost both (Story 4.6 review, M3). A row shows its own workflow; a second row would show a second one.
205
+ */
206
+ const workflow = drawn.find((one) => one.workflow === CREATION_WORKFLOW && one.nodes.length > 0);
207
+ return workflow === undefined
208
+ ? EMPTY_CHART
209
+ : renderFrontendMermaid(workflow);
442
210
  }
443
- return lines.join('\n');
211
+ // A worker flow always names its collection; `WORKER_STAGES` has no stage list for anything else, and guessing one
212
+ // would draw a chart of a component the model cannot describe.
213
+ if (source.collection !== 'pullers' && source.collection !== 'pushers')
214
+ return EMPTY_CHART;
215
+ const drawn = workerFlow({
216
+ collection: source.collection,
217
+ component: source.component,
218
+ componentId: source.componentId,
219
+ });
220
+ /**
221
+ * `multiStage: true` — EVERY stage is boxed and labelled, including a lone one.
222
+ *
223
+ * ⛔ Omitting it was a measured regression (Story 4.6 review, H1): the shared renderer defaults the option to
224
+ * `groups.length > 1`, and **1,293 of the corpus's 2,065 composed pullers/pushers declare exactly one non-empty
225
+ * stage**, so 63% of the report's charts lost their box AND the stage's name — under a caption that says
226
+ * "1 phase(s)" without ever saying which. The retired emitter boxed unconditionally (`for (const b of builds) {
227
+ * lines.push(' subgraph sg_…') }`, no length test), and the deleted assertion
228
+ * `toContain('subgraph sg_pushSteps["pushSteps"]')` on a single-phase fixture proves it.
229
+ *
230
+ * The replacement assertion had justified the loss by quoting *"one stage is not worth a box around it"* as the
231
+ * retired emitter's own rule. It is not: that is `frontend-flow`'s rule about a frontend WORKFLOW. Story 4.5 declined
232
+ * `multiStage: true` for the EDITOR on the same evidence read correctly — the editor's retired renderer did not box a
233
+ * lone stage. Two surfaces, two baselines, and the golden suite renders with `multiStage: true` because a report
234
+ * groups a component's stages whether or not there are two.
235
+ */
236
+ return drawn.nodes.length === 0
237
+ ? EMPTY_CHART
238
+ : renderWorkerMermaid(drawn, { direction: 'LR', multiStage: true });
444
239
  }
240
+ /** The workflow key this report charts. A `creationSteps` row is about that workflow and no other. */
241
+ const CREATION_WORKFLOW = 'creationSteps';
242
+ /**
243
+ * What an empty flow says here — wording kept verbatim from the retired emitter.
244
+ *
245
+ * `LR` on both paths, deliberately: a placeholder is one node with no edges, so it has no geometry to preserve, and one
246
+ * spelling of "there is nothing here" is easier to grep for than two. The retired code said `TD` on the creation path
247
+ * (Story 4.6 review, L3) — a difference no reader can see.
248
+ */
249
+ const EMPTY_CHART = 'flowchart LR\n empty["No steps"]';
445
250
  //# sourceMappingURL=flowChart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"flowChart.js","sourceRoot":"","sources":["../src/flowChart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flowChart.js","sourceRoot":"","sources":["../src/flowChart.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderValidation.d.ts","sourceRoot":"","sources":["../src/renderValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAEtB,MAAM,yCAAyC,CAAC;AAkDjD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAqC3E"}
1
+ {"version":3,"file":"renderValidation.d.ts","sourceRoot":"","sources":["../src/renderValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAEtB,MAAM,yCAAyC,CAAC;AAmDjD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAyC3E"}
@@ -7,6 +7,7 @@ const SEV_LABEL = {
7
7
  major: 'MAJOR',
8
8
  medium: 'MEDIUM',
9
9
  low: 'LOW',
10
+ 'very-low': 'VERY LOW',
10
11
  };
11
12
  /** Prose-safe text for Markdown: HTML-escape (escHtml handles & < > " | $), collapse
12
13
  * newlines to spaces, and escape Markdown structural chars so an interpolated message,
@@ -60,23 +61,73 @@ export function renderValidationReport(model) {
60
61
  lines.push(`## Summary — ${summary}`);
61
62
  lines.push('');
62
63
  for (const g of model.issuesByComponent) {
64
+ const real = g.issues.filter(isRealIssue);
65
+ if (real.length === 0)
66
+ continue;
63
67
  const label = g.sourceLink
64
68
  ? `[${mdText(g.idOrKey)}](${mdUrl(g.sourceLink)})`
65
69
  : `\`${mdText(g.idOrKey)}\``;
66
70
  lines.push(`### ${mdText(g.parentKey)} — ${label}`);
67
71
  lines.push('');
68
- for (const i of g.issues)
72
+ for (const i of real)
69
73
  lines.push(...renderIssueMd(i));
70
74
  }
71
- if (model.crossCutting.length > 0) {
75
+ const crossCutting = model.crossCutting.filter(isRealIssue);
76
+ if (crossCutting.length > 0) {
72
77
  lines.push('## Project-wide');
73
78
  lines.push('');
74
- for (const i of model.crossCutting)
79
+ for (const i of crossCutting)
75
80
  lines.push(...renderIssueMd(i));
76
81
  }
82
+ lines.push(...renderNoticesMd(model));
77
83
  lines.push(...renderAppendixMd(model));
78
84
  return lines.join('\n');
79
85
  }
86
+ /**
87
+ * A finding about the profile's CONFIGURATION, as opposed to a migration notice.
88
+ *
89
+ * The split is `very-low` (reported by Jazz, 2026-08-11): a deprecation, a retired component type, a legacy-but-working
90
+ * shape. *"It doesn't break the profile runtime. Just focus on real configuration issues."* Interleaved, a project with
91
+ * many legacy pullers pushed the findings that DO break something off the top of the report.
92
+ */
93
+ const isRealIssue = (issue) => issue.severity !== 'very-low';
94
+ /**
95
+ * The trailing notices section — everything `very-low`, after the real findings and before the appendix.
96
+ *
97
+ * Gathered rather than merely sorted last. Severity ordering alone would still have put a legacy puller's notice
98
+ * INSIDE that puller's own `###` block, so a reader scanning component by component kept meeting them; and a component
99
+ * whose only finding is a notice got a heading that promised a problem. Here the body above contains configuration
100
+ * issues only, and the notices are one list a reader can act on when migrating rather than while debugging.
101
+ *
102
+ * Component identity travels in the line, since these are no longer under a component heading — a notice that cannot
103
+ * say WHICH puller is legacy is not actionable.
104
+ */
105
+ function renderNoticesMd(model) {
106
+ const notices = [];
107
+ for (const g of model.issuesByComponent)
108
+ for (const i of g.issues)
109
+ if (!isRealIssue(i))
110
+ notices.push({ issue: i, where: `${g.parentKey} — ${g.idOrKey}` });
111
+ for (const i of model.crossCutting)
112
+ if (!isRealIssue(i))
113
+ notices.push({ issue: i });
114
+ if (notices.length === 0)
115
+ return [];
116
+ const out = [];
117
+ out.push('## Deprecations & legacy notices');
118
+ out.push('');
119
+ out.push('_None of these breaks the profile at runtime._ They are here so a template can be migrated before the ' +
120
+ 'platform stops carrying the shape — act on them when you next touch the component, not while debugging a run.');
121
+ out.push('');
122
+ for (const { issue, where } of notices) {
123
+ const rendered = renderIssueMd(issue);
124
+ // The component, appended to the finding's own first line — these sit under no `###` heading of their own.
125
+ if (where !== undefined && rendered.length > 0)
126
+ rendered[0] = `${rendered[0]} — in \`${mdText(where)}\``;
127
+ out.push(...rendered);
128
+ }
129
+ return out;
130
+ }
80
131
  /** Appendix: explain every rule that appears in this report — what it checks and what
81
132
  * breaks if ignored — so a reader can act on a rule id without leaving the document. */
82
133
  function renderAppendixMd(model) {
@@ -1 +1 @@
1
- {"version":3,"file":"renderValidation.js","sourceRoot":"","sources":["../src/renderValidation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderValidation.js","sourceRoot":"","sources":["../src/renderValidation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderValidationHtml.d.ts","sourceRoot":"","sources":["../src/renderValidationHtml.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAEtB,MAAM,yCAAyC,CAAC;AAwEjD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,qBAAqB,GAC3B,MAAM,CAiCR"}
1
+ {"version":3,"file":"renderValidationHtml.d.ts","sourceRoot":"","sources":["../src/renderValidationHtml.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EAEtB,MAAM,yCAAyC,CAAC;AA2EjD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,qBAAqB,GAC3B,MAAM,CAqCR"}
@@ -7,6 +7,7 @@ const SEV_LABEL = {
7
7
  major: 'MAJOR',
8
8
  medium: 'MEDIUM',
9
9
  low: 'LOW',
10
+ 'very-low': 'VERY LOW',
10
11
  };
11
12
  const STYLE = `
12
13
  :root { color-scheme: light dark; }
@@ -26,6 +27,8 @@ code { background: #eff1f3; padding: .1rem .3rem; border-radius: 4px; font-size:
26
27
  .sev-major { background: #fff8c5; color: #7d4e00; }
27
28
  .sev-medium { background: #ddf4ff; color: #0969da; }
28
29
  .sev-low { background: #eaeef2; color: #57606a; }
30
+ /* Quieter than LOW on purpose: a deprecation notice should read as a note, not as a problem. */
31
+ .sev-very-low { background: #f6f8fa; color: #6e7781; }
29
32
  .ok { background: #dafbe1; color: #116329; padding: .6rem .8rem; border-radius: 6px; display: inline-block; }
30
33
  pre { background: #f6f8fa; padding: .6rem .8rem; border-radius: 6px; overflow-x: auto; }
31
34
  .appendix { margin-top: 2rem; }
@@ -77,21 +80,57 @@ export function renderValidationReportHtml(model) {
77
80
  body.push(`<h2>Summary</h2>`);
78
81
  body.push(`<p>${summary}</p>`);
79
82
  for (const g of model.issuesByComponent) {
83
+ const real = g.issues.filter(isRealIssue);
84
+ if (real.length === 0)
85
+ continue;
80
86
  const label = g.sourceLink
81
87
  ? `<a href="${esc(g.sourceLink)}">${esc(g.idOrKey)}</a>`
82
88
  : `<code>${esc(g.idOrKey)}</code>`;
83
89
  body.push(`<h3>${esc(g.parentKey)} — ${label}</h3>`);
84
- for (const i of g.issues)
90
+ for (const i of real)
85
91
  body.push(renderIssueHtml(i));
86
92
  }
87
- if (model.crossCutting.length > 0) {
93
+ const crossCutting = model.crossCutting.filter(isRealIssue);
94
+ if (crossCutting.length > 0) {
88
95
  body.push(`<h2>Project-wide</h2>`);
89
- for (const i of model.crossCutting)
96
+ for (const i of crossCutting)
90
97
  body.push(renderIssueHtml(i));
91
98
  }
99
+ body.push(...renderNoticesHtml(model));
92
100
  body.push(...renderAppendixHtml(model));
93
101
  return page(model.projectTitle, body.join('\n'));
94
102
  }
103
+ /**
104
+ * A finding about CONFIGURATION, as opposed to a migration notice — the same split the Markdown twin makes, and it
105
+ * must stay the same split: two renderers of one report disagreeing about which section a finding belongs in is the
106
+ * class of defect this repo keeps paying for.
107
+ */
108
+ const isRealIssue = (issue) => issue.severity !== 'very-low';
109
+ /** The trailing notices section. See the Markdown twin's `renderNoticesMd` for why these are gathered, not just sorted last. */
110
+ function renderNoticesHtml(model) {
111
+ const out = [];
112
+ const notices = [];
113
+ for (const g of model.issuesByComponent)
114
+ for (const i of g.issues)
115
+ if (!isRealIssue(i))
116
+ notices.push({ issue: i, where: `${g.parentKey} — ${g.idOrKey}` });
117
+ for (const i of model.crossCutting)
118
+ if (!isRealIssue(i))
119
+ notices.push({ issue: i });
120
+ if (notices.length === 0)
121
+ return out;
122
+ out.push(`<h2>Deprecations &amp; legacy notices</h2>`);
123
+ out.push(`<p class="notice-intro"><em>None of these breaks the profile at runtime.</em> They are here so a template can ` +
124
+ `be migrated before the platform stops carrying the shape — act on them when you next touch the component, ` +
125
+ `not while debugging a run.</p>`);
126
+ for (const { issue, where } of notices) {
127
+ const rendered = renderIssueHtml(issue);
128
+ out.push(where === undefined
129
+ ? rendered
130
+ : `${rendered}<p class="notice-where">in <code>${esc(where)}</code></p>`);
131
+ }
132
+ return out;
133
+ }
95
134
  /** Appendix: explain every rule that appears in this report. */
96
135
  function renderAppendixHtml(model) {
97
136
  const ids = [];
@@ -1 +1 @@
1
- {"version":3,"file":"renderValidationHtml.js","sourceRoot":"","sources":["../src/renderValidationHtml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderValidationHtml.js","sourceRoot":"","sources":["../src/renderValidationHtml.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beehexa/hexasync-template-report-render",
3
- "version": "2608.8.3",
3
+ "version": "2608.15.1",
4
4
  "description": "Markdown and HTML renderers for the report models.",
5
5
  "license": "SEE LICENSE IN ../../LICENSE",
6
6
  "type": "module",
@@ -20,9 +20,11 @@
20
20
  "build": "tsc -p tsconfig.build.json"
21
21
  },
22
22
  "dependencies": {
23
- "@beehexa/hexasync-template-compose": "2608.8.3",
24
- "@beehexa/hexasync-template-report-model": "2608.8.3",
25
- "@beehexa/hexasync-template-validate": "2608.8.3"
23
+ "@beehexa/hexasync-template-compose": "2608.15.1",
24
+ "@beehexa/hexasync-template-frontend-flow": "2608.15.1",
25
+ "@beehexa/hexasync-template-report-model": "2608.15.1",
26
+ "@beehexa/hexasync-template-validate": "2608.15.1",
27
+ "@beehexa/hexasync-template-worker-flow": "2608.15.1"
26
28
  },
27
29
  "hexasync": {
28
30
  "layer": "adapter"