@sentropic/track 0.10.1 → 0.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/events/types.d.ts +1 -1
- package/dist/events/types.d.ts.map +1 -1
- package/dist/events/types.js +5 -0
- package/dist/events/types.js.map +1 -1
- package/dist/ingest/contract.d.ts +1 -1
- package/dist/ingest/contract.d.ts.map +1 -1
- package/dist/ingest/contract.js +10 -0
- package/dist/ingest/contract.js.map +1 -1
- package/dist/ingest/ingest.d.ts.map +1 -1
- package/dist/ingest/ingest.js +5 -0
- package/dist/ingest/ingest.js.map +1 -1
- package/dist/ingest/map.d.ts.map +1 -1
- package/dist/ingest/map.js +5 -0
- package/dist/ingest/map.js.map +1 -1
- package/dist/model/decision.d.ts +50 -1
- package/dist/model/decision.d.ts.map +1 -1
- package/dist/model/decision.js +74 -0
- package/dist/model/decision.js.map +1 -1
- package/dist/model/index.d.ts +1 -1
- package/dist/model/index.d.ts.map +1 -1
- package/dist/model/index.js +1 -1
- package/dist/model/index.js.map +1 -1
- package/dist/read/commands.d.ts +7 -2
- package/dist/read/commands.d.ts.map +1 -1
- package/dist/read/commands.js +17 -11
- package/dist/read/commands.js.map +1 -1
- package/dist/read/contract.d.ts +2 -2
- package/dist/read/contract.js +1 -1
- package/dist/read/contract.js.map +1 -1
- package/dist/report/build.d.ts +2 -1
- package/dist/report/build.d.ts.map +1 -1
- package/dist/report/build.js +1 -0
- package/dist/report/build.js.map +1 -1
- package/dist/report/format.d.ts +28 -3
- package/dist/report/format.d.ts.map +1 -1
- package/dist/report/format.js +128 -6
- package/dist/report/format.js.map +1 -1
- package/dist/report/index.d.ts +1 -1
- package/dist/report/index.d.ts.map +1 -1
- package/dist/report/index.js +1 -1
- package/dist/report/index.js.map +1 -1
- package/dist/report/rollup.d.ts +6 -1
- package/dist/report/rollup.d.ts.map +1 -1
- package/dist/report/rollup.js +15 -2
- package/dist/report/rollup.js.map +1 -1
- package/dist/state/fold.d.ts.map +1 -1
- package/dist/state/fold.js +13 -0
- package/dist/state/fold.js.map +1 -1
- package/dist/track.d.ts +12 -1
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +25 -1
- package/dist/track.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/report/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/report/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAa,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC1F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAqB,KAAK,MAAM,EAAqB,MAAM,cAAc,CAAA;AAChF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAExD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,EAAE,gBAAgB,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,YAAY,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,CAAC,EAAE,OAAO,CAAA;IAGrB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;IACpC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAA;IACzB,0GAA0G;IAC1G,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,sGAAsG;IACtG,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AA4BD,4GAA4G;AAC5G,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CA+BxE;AAED,MAAM,WAAW,WAAW;IAG1B,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,yGAAyG;IACzG,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB;AAED,kEAAkE;AAClE,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,SAAS,EAAE,CA0B5F"}
|
package/dist/report/build.js
CHANGED
|
@@ -57,6 +57,7 @@ export function buildReport(state, options) {
|
|
|
57
57
|
realization: d.realization,
|
|
58
58
|
outcome: d.outcome,
|
|
59
59
|
...(d.accountable !== undefined ? { accountable: d.accountable } : {}),
|
|
60
|
+
...(d.dossier.artifacts !== undefined ? { artifacts: d.dossier.artifacts } : {}),
|
|
60
61
|
}));
|
|
61
62
|
}
|
|
62
63
|
return report;
|
package/dist/report/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/report/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAMtD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAkC,MAAM,cAAc,CAAA;AAChF,OAAO,EAAE,aAAa,EAAe,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/report/build.ts"],"names":[],"mappings":"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"}
|
package/dist/report/format.d.ts
CHANGED
|
@@ -3,13 +3,38 @@ import type { WpNode } from './rollup.js';
|
|
|
3
3
|
export type Format = 'json' | 'text' | 'md';
|
|
4
4
|
export declare function formatReport(report: Report, format: Format): string;
|
|
5
5
|
/**
|
|
6
|
-
* Render the WP rollup forest
|
|
6
|
+
* Render the WP rollup forest in agent-stats' shape (Workpackages §2):
|
|
7
7
|
* - **WP1 · <title>** (done/total, pct%)
|
|
8
8
|
* - **WP1.1 · <title>** (done/total, pct%)
|
|
9
9
|
* - [x] <leaf> / [ ] <leaf>
|
|
10
10
|
* `total` = `active` (DONE+TO-DO+AWAITED); DROPPED leaves are shown with `[~]` and excluded from %.
|
|
11
|
-
* `pct` is `n/a` for a 0/0 node (never 100%).
|
|
11
|
+
* `pct` is `n/a` for a 0/0 node (never 100%). `format` gates escaping — `md` escapes markdown
|
|
12
|
+
* metacharacters (no formatting injection); `text` is CLEAN (no backslash leaks). Defaults to `md`.
|
|
12
13
|
*/
|
|
13
|
-
export declare function formatWpTree(tree: readonly WpNode[]): string;
|
|
14
|
+
export declare function formatWpTree(tree: readonly WpNode[], format?: Format): string;
|
|
15
|
+
/** Global totals — the SUM of every WP node's directly-attached leaves across the forest (no double-count). */
|
|
16
|
+
export interface WpTotals {
|
|
17
|
+
done: number;
|
|
18
|
+
active: number;
|
|
19
|
+
dropped: number;
|
|
20
|
+
pct: number | 'n/a';
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Sum the forest's leaves ONCE: every non-WP leaf is attached to exactly one node (`directLeaves`
|
|
24
|
+
* stops at sub-WP boundaries), so a flat walk over `node.leaves` is the true global total — never the
|
|
25
|
+
* roots' rolled-up counts (which would double-count nested sub-WP leaves).
|
|
26
|
+
*/
|
|
27
|
+
export declare function wpTotals(tree: readonly WpNode[]): WpTotals;
|
|
28
|
+
/**
|
|
29
|
+
* Report-revamp — the 3-table CONDUCTOR view over the WP forest (the owner reports THROUGH this):
|
|
30
|
+
* FAIT — WPs at 100% + a global done/total, pct%.
|
|
31
|
+
* À-FAIRE (%·WP) — one row per non-100% WP `WPn · title — done/active pct%`, then its OPEN leaves
|
|
32
|
+
* (`◦ <title>`); DROPPED shown aside.
|
|
33
|
+
* ATTENDUS — AWAITED (blocked) leaves carrying a derived disposition tag
|
|
34
|
+
* (`décision: owner` when AWAITED-on-a-decision or carrying an open engagementRef,
|
|
35
|
+
* else `action: agent`).
|
|
36
|
+
* `format` gates escaping (md escapes; text is clean). The forest's leaves drive every section.
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatWpConductor(tree: readonly WpNode[], format: Format): string;
|
|
14
39
|
export declare function formatRows(rows: ReportRow[], format: Format): string;
|
|
15
40
|
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/report/format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAoD3C,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAqBnE;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/report/format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAoD3C,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAqBnE;AAaD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,GAAE,MAAa,GAAG,MAAM,CAenF;AAED,+GAA+G;AAC/G,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAiB1D;AAwBD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAiDjF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAYpE"}
|
package/dist/report/format.js
CHANGED
|
@@ -67,23 +67,34 @@ export function formatReport(report, format) {
|
|
|
67
67
|
}
|
|
68
68
|
return lines.join('\n').trimEnd() + '\n';
|
|
69
69
|
}
|
|
70
|
+
const pctStr = (p) => (p === 'n/a' ? 'n/a' : `${p}%`);
|
|
70
71
|
/**
|
|
71
|
-
*
|
|
72
|
+
* Strip a redundant leading `WPn — `/`WPn · `/`WPn -` prefix the WP item TITLE may already carry, so
|
|
73
|
+
* the renderer's derived `${label} · ` is never doubled (`WP1 · WP1 — …`). Case-insensitive on `WP`,
|
|
74
|
+
* tolerant of `—`/`·`/`-` separators and surrounding spaces; a title with no such prefix is unchanged.
|
|
75
|
+
*/
|
|
76
|
+
function stripWpPrefix(s) {
|
|
77
|
+
return s.replace(/^WP\d+(?:\.\d+)*\s*[—·-]\s*/i, '');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Render the WP rollup forest in agent-stats' shape (Workpackages §2):
|
|
72
81
|
* - **WP1 · <title>** (done/total, pct%)
|
|
73
82
|
* - **WP1.1 · <title>** (done/total, pct%)
|
|
74
83
|
* - [x] <leaf> / [ ] <leaf>
|
|
75
84
|
* `total` = `active` (DONE+TO-DO+AWAITED); DROPPED leaves are shown with `[~]` and excluded from %.
|
|
76
|
-
* `pct` is `n/a` for a 0/0 node (never 100%).
|
|
85
|
+
* `pct` is `n/a` for a 0/0 node (never 100%). `format` gates escaping — `md` escapes markdown
|
|
86
|
+
* metacharacters (no formatting injection); `text` is CLEAN (no backslash leaks). Defaults to `md`.
|
|
77
87
|
*/
|
|
78
|
-
export function formatWpTree(tree) {
|
|
88
|
+
export function formatWpTree(tree, format = 'md') {
|
|
79
89
|
const lines = [];
|
|
80
|
-
const
|
|
90
|
+
const bold = (s) => (format === 'md' ? `**${s}**` : s);
|
|
81
91
|
const render = (node, depth) => {
|
|
82
92
|
const indent = ' '.repeat(depth);
|
|
83
|
-
|
|
93
|
+
const label = `${node.label} · ${title(stripWpPrefix(node.title), format)}`;
|
|
94
|
+
lines.push(`${indent}- ${bold(label)} (${node.done}/${node.active}, ${pctStr(node.pct)})`);
|
|
84
95
|
for (const leaf of node.leaves) {
|
|
85
96
|
const box = leaf.bucket === 'DONE' ? '[x]' : leaf.bucket === 'DROPPED' ? '[~]' : '[ ]';
|
|
86
|
-
lines.push(`${indent} - ${box} ${title(leaf.title,
|
|
97
|
+
lines.push(`${indent} - ${box} ${title(leaf.title, format)}`);
|
|
87
98
|
}
|
|
88
99
|
for (const child of node.children)
|
|
89
100
|
render(child, depth + 1);
|
|
@@ -92,6 +103,117 @@ export function formatWpTree(tree) {
|
|
|
92
103
|
render(node, 0);
|
|
93
104
|
return lines.join('\n') + (lines.length > 0 ? '\n' : '');
|
|
94
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Sum the forest's leaves ONCE: every non-WP leaf is attached to exactly one node (`directLeaves`
|
|
108
|
+
* stops at sub-WP boundaries), so a flat walk over `node.leaves` is the true global total — never the
|
|
109
|
+
* roots' rolled-up counts (which would double-count nested sub-WP leaves).
|
|
110
|
+
*/
|
|
111
|
+
export function wpTotals(tree) {
|
|
112
|
+
let done = 0;
|
|
113
|
+
let active = 0;
|
|
114
|
+
let dropped = 0;
|
|
115
|
+
const walk = (node) => {
|
|
116
|
+
for (const l of node.leaves) {
|
|
117
|
+
if (l.bucket === 'DONE') {
|
|
118
|
+
done++;
|
|
119
|
+
active++;
|
|
120
|
+
}
|
|
121
|
+
else if (l.bucket === 'AWAITED' || l.bucket === 'TO-DO') {
|
|
122
|
+
active++;
|
|
123
|
+
}
|
|
124
|
+
else
|
|
125
|
+
dropped++;
|
|
126
|
+
}
|
|
127
|
+
for (const c of node.children)
|
|
128
|
+
walk(c);
|
|
129
|
+
};
|
|
130
|
+
for (const node of tree)
|
|
131
|
+
walk(node);
|
|
132
|
+
return { done, active, dropped, pct: active === 0 ? 'n/a' : Math.round((done / active) * 100) };
|
|
133
|
+
}
|
|
134
|
+
/** Open (non-DONE, non-DROPPED) leaves under a node — what À-FAIRE lists as `◦ <title>`. */
|
|
135
|
+
function openLeaves(node) {
|
|
136
|
+
const out = [];
|
|
137
|
+
const walk = (n) => {
|
|
138
|
+
for (const l of n.leaves)
|
|
139
|
+
if (l.bucket === 'TO-DO' || l.bucket === 'AWAITED')
|
|
140
|
+
out.push(l);
|
|
141
|
+
for (const c of n.children)
|
|
142
|
+
walk(c);
|
|
143
|
+
};
|
|
144
|
+
walk(node);
|
|
145
|
+
return out;
|
|
146
|
+
}
|
|
147
|
+
/** DROPPED leaves under a node — shown aside in À-FAIRE, excluded from %. */
|
|
148
|
+
function droppedLeaves(node) {
|
|
149
|
+
const out = [];
|
|
150
|
+
const walk = (n) => {
|
|
151
|
+
for (const l of n.leaves)
|
|
152
|
+
if (l.bucket === 'DROPPED')
|
|
153
|
+
out.push(l);
|
|
154
|
+
for (const c of n.children)
|
|
155
|
+
walk(c);
|
|
156
|
+
};
|
|
157
|
+
walk(node);
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Report-revamp — the 3-table CONDUCTOR view over the WP forest (the owner reports THROUGH this):
|
|
162
|
+
* FAIT — WPs at 100% + a global done/total, pct%.
|
|
163
|
+
* À-FAIRE (%·WP) — one row per non-100% WP `WPn · title — done/active pct%`, then its OPEN leaves
|
|
164
|
+
* (`◦ <title>`); DROPPED shown aside.
|
|
165
|
+
* ATTENDUS — AWAITED (blocked) leaves carrying a derived disposition tag
|
|
166
|
+
* (`décision: owner` when AWAITED-on-a-decision or carrying an open engagementRef,
|
|
167
|
+
* else `action: agent`).
|
|
168
|
+
* `format` gates escaping (md escapes; text is clean). The forest's leaves drive every section.
|
|
169
|
+
*/
|
|
170
|
+
export function formatWpConductor(tree, format) {
|
|
171
|
+
const lines = [];
|
|
172
|
+
const h = (label) => (format === 'md' ? `## ${label}` : label);
|
|
173
|
+
const wpLabel = (n) => `${n.label} · ${title(stripWpPrefix(n.title), format)}`;
|
|
174
|
+
// Flatten the forest to a label-bearing list so À-FAIRE/FAIT can iterate every (sub-)WP once.
|
|
175
|
+
const flat = [];
|
|
176
|
+
const collect = (n) => {
|
|
177
|
+
flat.push(n);
|
|
178
|
+
for (const c of n.children)
|
|
179
|
+
collect(c);
|
|
180
|
+
};
|
|
181
|
+
for (const n of tree)
|
|
182
|
+
collect(n);
|
|
183
|
+
const totals = wpTotals(tree);
|
|
184
|
+
// ---- FAIT — WPs at 100% + the global progress line ----
|
|
185
|
+
lines.push(h('FAIT'));
|
|
186
|
+
lines.push(`global: ${totals.done}/${totals.active}, ${pctStr(totals.pct)}`);
|
|
187
|
+
const fait = tree.filter((n) => n.pct === 100);
|
|
188
|
+
for (const n of fait)
|
|
189
|
+
lines.push(`- ${wpLabel(n)} (${n.done}/${n.active}, 100%)`);
|
|
190
|
+
lines.push('');
|
|
191
|
+
// ---- À-FAIRE (% par WP) — one row per non-100% top-level WP, its open leaves, dropped aside ----
|
|
192
|
+
lines.push(h('À-FAIRE (% par WP)'));
|
|
193
|
+
for (const n of tree) {
|
|
194
|
+
if (n.pct === 100)
|
|
195
|
+
continue;
|
|
196
|
+
lines.push(`- ${wpLabel(n)} — ${n.done}/${n.active} ${pctStr(n.pct)}`);
|
|
197
|
+
for (const l of openLeaves(n))
|
|
198
|
+
lines.push(` ◦ ${title(l.title, format)}`);
|
|
199
|
+
const dropped = droppedLeaves(n);
|
|
200
|
+
if (dropped.length > 0) {
|
|
201
|
+
lines.push(` (dropped: ${dropped.map((l) => title(l.title, format)).join(', ')})`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
lines.push('');
|
|
205
|
+
// ---- ATTENDUS (décision) — AWAITED leaves, with a derived disposition tag ----
|
|
206
|
+
lines.push(h('ATTENDUS (décision)'));
|
|
207
|
+
const attendus = flat.flatMap((n) => n.leaves
|
|
208
|
+
.filter((l) => l.bucket === 'AWAITED' || (l.engagementRef !== undefined && l.bucket !== 'DONE' && l.bucket !== 'DROPPED'))
|
|
209
|
+
.map((l) => ({ wp: n, leaf: l })));
|
|
210
|
+
for (const { wp, leaf } of attendus) {
|
|
211
|
+
const owner = leaf.awaitedOnDecision === true || leaf.engagementRef !== undefined;
|
|
212
|
+
const tag = owner ? 'décision: owner' : 'action: agent';
|
|
213
|
+
lines.push(`- ${title(leaf.title, format)} [${wp.label}] — ${tag}`);
|
|
214
|
+
}
|
|
215
|
+
return lines.join('\n').trimEnd() + '\n';
|
|
216
|
+
}
|
|
95
217
|
export function formatRows(rows, format) {
|
|
96
218
|
if (format === 'json')
|
|
97
219
|
return JSON.stringify(rows, null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/report/format.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/report/format.ts"],"names":[],"mappings":"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"}
|
package/dist/report/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { BUCKETS, bucketOf, type Bucket, type ReportConfig } from './buckets.js';
|
|
2
2
|
export { buildReport, query, type DecisionRow, type QueryFilter, type Report, type ReportOptions, type ReportRow, } from './build.js';
|
|
3
|
-
export { formatReport, formatRows, formatWpTree, type Format } from './format.js';
|
|
3
|
+
export { formatReport, formatRows, formatWpConductor, formatWpTree, wpTotals, type Format, type WpTotals, } from './format.js';
|
|
4
4
|
export { computeWpTree, type WpLeaf, type WpNode } from './rollup.js';
|
|
5
5
|
export { effectiveBlockerOpen, effectiveOpenBlockersForItem } from './blocker-status.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EACL,WAAW,EACX,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EACL,WAAW,EACX,KAAK,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,SAAS,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,KAAK,MAAM,EACX,KAAK,QAAQ,GACd,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,aAAa,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAErE,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/report/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// report + query: bucket engine with SPEC §7 precedence (AWAITED > DROPPED > DONE > TO-DO).
|
|
2
2
|
export { BUCKETS, bucketOf } from './buckets.js';
|
|
3
3
|
export { buildReport, query, } from './build.js';
|
|
4
|
-
export { formatReport, formatRows, formatWpTree } from './format.js';
|
|
4
|
+
export { formatReport, formatRows, formatWpConductor, formatWpTree, wpTotals, } from './format.js';
|
|
5
5
|
// Workpackages §2 — the %-by-WP rollup forest (pure).
|
|
6
6
|
export { computeWpTree } from './rollup.js';
|
|
7
7
|
// Commit-relative blocker openness (v2.2a hybrid-A) — `linked-accepted` derived at projection time.
|
package/dist/report/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAkC,MAAM,cAAc,CAAA;AAChF,OAAO,EACL,WAAW,EACX,KAAK,GAMN,MAAM,YAAY,CAAA;AACnB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/report/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAkC,MAAM,cAAc,CAAA;AAChF,OAAO,EACL,WAAW,EACX,KAAK,GAMN,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,QAAQ,GAGT,MAAM,aAAa,CAAA;AACpB,sDAAsD;AACtD,OAAO,EAAE,aAAa,EAA4B,MAAM,aAAa,CAAA;AACrE,oGAAoG;AACpG,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/report/rollup.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ItemId } from '../model/item.js';
|
|
1
|
+
import type { ItemId, ItemKind } from '../model/item.js';
|
|
2
2
|
import type { State } from '../state/fold.js';
|
|
3
3
|
import { type Bucket, type ReportConfig } from './buckets.js';
|
|
4
4
|
/** A rolled-up leaf under a WP — its bucket drives both the % counts and the `[x]/[ ]` checkbox. */
|
|
@@ -6,6 +6,11 @@ export interface WpLeaf {
|
|
|
6
6
|
id: ItemId;
|
|
7
7
|
title: string;
|
|
8
8
|
bucket: Bucket;
|
|
9
|
+
kind: ItemKind;
|
|
10
|
+
/** Present ⇒ an h2a ENGAGEMENT backs this leaf (report-revamp: ATTENDUS disposition signal). */
|
|
11
|
+
engagementRef?: string;
|
|
12
|
+
/** An open blocker on this leaf is `kind:'decision'` ⇒ an owner decision is pending (ATTENDUS). */
|
|
13
|
+
awaitedOnDecision?: boolean;
|
|
9
14
|
}
|
|
10
15
|
/** A node in the rolled-up WP forest. `id`/`title` are identity; `label` is the derived dotted code. */
|
|
11
16
|
export interface WpNode {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/report/rollup.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/report/rollup.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAa,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAY,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAGvE,oGAAoG;AACpG,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,QAAQ,CAAA;IACd,gGAAgG;IAChG,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,wGAAwG;AACxG,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IACd,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;IACnB,8GAA8G;IAC9G,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAuG1E"}
|
package/dist/report/rollup.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
// Parent counts are the SUM of descendant leaves, NEVER the mean of child percentages (Simpson trap).
|
|
9
9
|
// Each node's dotted display label (`WP1`, `WP1.1`) is DERIVED from tree position, never stored.
|
|
10
10
|
import { bucketOf } from './buckets.js';
|
|
11
|
+
import { effectiveOpenBlockersForItem } from './blocker-status.js';
|
|
11
12
|
/** A non-WP leaf reachable from a WP (a non-WP item with no non-WP… actually: any non-WP item). */
|
|
12
13
|
function isWp(item) {
|
|
13
14
|
return item.role === 'workpackage';
|
|
@@ -56,8 +57,20 @@ export function computeWpTree(state, config) {
|
|
|
56
57
|
if (isWp(child))
|
|
57
58
|
continue; // a sub-WP boundary — its leaves count under IT, not here
|
|
58
59
|
const grandkids = childrenOf.get(child.id) ?? [];
|
|
59
|
-
if (grandkids.length === 0)
|
|
60
|
-
|
|
60
|
+
if (grandkids.length === 0) {
|
|
61
|
+
const bucket = bucketOf(state, child, config);
|
|
62
|
+
// An open `kind:'decision'` blocker ⇒ an OWNER decision is pending (report-revamp ATTENDUS).
|
|
63
|
+
const awaitedOnDecision = bucket === 'AWAITED' &&
|
|
64
|
+
effectiveOpenBlockersForItem(state, child.id, config.baselineCommit).some((b) => b.kind === 'decision');
|
|
65
|
+
out.push({
|
|
66
|
+
id: child.id,
|
|
67
|
+
title: child.title,
|
|
68
|
+
bucket,
|
|
69
|
+
kind: child.kind,
|
|
70
|
+
...(child.engagementRef !== undefined ? { engagementRef: child.engagementRef } : {}),
|
|
71
|
+
...(awaitedOnDecision ? { awaitedOnDecision: true } : {}),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
61
74
|
else
|
|
62
75
|
walk(child.id); // non-WP container — descend
|
|
63
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.js","sourceRoot":"","sources":["../../src/report/rollup.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,oGAAoG;AACpG,cAAc;AACd,0BAA0B;AAC1B,uEAAuE;AACvE,+EAA+E;AAC/E,wEAAwE;AACxE,sGAAsG;AACtG,iGAAiG;AAIjG,OAAO,EAAE,QAAQ,EAAkC,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"rollup.js","sourceRoot":"","sources":["../../src/report/rollup.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,oGAAoG;AACpG,cAAc;AACd,0BAA0B;AAC1B,uEAAuE;AACvE,+EAA+E;AAC/E,wEAAwE;AACxE,sGAAsG;AACtG,iGAAiG;AAIjG,OAAO,EAAE,QAAQ,EAAkC,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAiClE,mGAAmG;AACnG,SAAS,IAAI,CAAC,IAAe;IAC3B,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAA;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,MAAoB;IAC9D,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IACvC,gGAAgG;IAChG,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmC,CAAA;IAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAA;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACf,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC3B,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAErF,MAAM,KAAK,GAAG,CAAC,MAAyB,EAAqD,EAAE;QAC7F,IAAI,IAAI,GAAG,CAAC,CAAA;QACZ,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACxB,IAAI,EAAE,CAAA;gBACN,MAAM,EAAE,CAAA;YACV,CAAC;iBAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1D,MAAM,EAAE,CAAA;YACV,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAA,CAAC,mCAAmC;YAC/C,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;IAClC,CAAC,CAAA;IAED,qGAAqG;IACrG,yGAAyG;IACzG,oFAAoF;IACpF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAY,EAAE;QAC9C,MAAM,GAAG,GAAa,EAAE,CAAA;QACxB,MAAM,IAAI,GAAG,CAAC,QAAgB,EAAQ,EAAE;YACtC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnD,IAAI,IAAI,CAAC,KAAK,CAAC;oBAAE,SAAQ,CAAC,0DAA0D;gBACpF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;gBAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;oBAC7C,6FAA6F;oBAC7F,MAAM,iBAAiB,GACrB,MAAM,KAAK,SAAS;wBACpB,4BAA4B,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CACvE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAC7B,CAAA;oBACH,GAAG,CAAC,IAAI,CAAC;wBACP,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM;wBACN,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,GAAG,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpF,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC1D,CAAC,CAAA;gBACJ,CAAC;;oBAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,6BAA6B;YACrD,CAAC;QACH,CAAC,CAAA;QACD,IAAI,CAAC,IAAI,CAAC,CAAA;QACV,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IAED,4GAA4G;IAC5G,MAAM,KAAK,GAAG,CAAC,EAAa,EAAE,KAAa,EAAU,EAAE;QACrD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAClC,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,sGAAsG;QACtG,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAQ,EAAE;YAC/C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnD,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChB,SAAS,EAAE,CAAA;oBACX,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC,CAAA;gBACtD,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA,CAAC,iEAAiE;gBAC3F,CAAC;YACH,CAAC;QACH,CAAC,CAAA;QACD,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAEpB,4EAA4E;QAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAE1E,OAAO;YACL,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,KAAK;YACL,IAAI;YACJ,MAAM;YACN,OAAO;YACP,GAAG,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;YAC7D,MAAM;YACN,QAAQ;SACT,CAAA;IACH,CAAC,CAAA;IAED,sGAAsG;IACtG,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AAC1D,CAAC"}
|
package/dist/state/fold.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../src/state/fold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAwB,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,KAAK,EAEV,aAAa,
|
|
1
|
+
{"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../src/state/fold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEd,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAwB,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAC7E,OAAO,KAAK,EAEV,aAAa,EAId,MAAM,sBAAsB,CAAA;AAG7B,OAAO,KAAK,EACV,SAAS,EAIT,MAAM,EACN,SAAS,EAGV,MAAM,kBAAkB,CAAA;AAEzB;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC7B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACrC,QAAQ,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACtC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACrC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACrC;AAYD,wBAAgB,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,KAAK,CAS7D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,EAAE,CAEzD;AAED,qGAAqG;AACrG,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAEhF"}
|
package/dist/state/fold.js
CHANGED
|
@@ -131,6 +131,19 @@ function applyEvent(state, event) {
|
|
|
131
131
|
decision.dossier = event.payload.dossier;
|
|
132
132
|
break;
|
|
133
133
|
}
|
|
134
|
+
case 'decision.artifact-added': {
|
|
135
|
+
// M5 — append ONE artifact to the decision's dossier.artifacts[] (the existing dossier is left
|
|
136
|
+
// intact; no whole-dossier rewrite). Legality (union shape) is checked at append.
|
|
137
|
+
const decision = state.decisions.get(event.aggregateId);
|
|
138
|
+
if (decision) {
|
|
139
|
+
const artifact = event.payload.artifact;
|
|
140
|
+
decision.dossier = {
|
|
141
|
+
...decision.dossier,
|
|
142
|
+
artifacts: [...(decision.dossier.artifacts ?? []), artifact],
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
134
147
|
case 'acceptance.criterion.added': {
|
|
135
148
|
const payload = event.payload;
|
|
136
149
|
state.criteria.set(payload.criterionId, {
|
package/dist/state/fold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fold.js","sourceRoot":"","sources":["../../src/state/fold.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fold.js","sourceRoot":"","sources":["../../src/state/fold.ts"],"names":[],"mappings":"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"}
|
package/dist/track.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { type QueryFilter, type Report, type ReportOptions, type ReportRow } fro
|
|
|
5
5
|
import type { EvidenceKind, RunResult } from './model/acceptance.js';
|
|
6
6
|
import { type PriorityAssessment, type WsjfInputs } from './model/priority.js';
|
|
7
7
|
import { type BlockerKind, type BlockerScope, type ResolutionRule } from './model/blocker.js';
|
|
8
|
-
import { type DecisionCreatedPayload, type Dossier, type Outcome } from './model/decision.js';
|
|
8
|
+
import { type DecisionCreatedPayload, type DossierArtifact, type Dossier, type Outcome } from './model/decision.js';
|
|
9
9
|
import { type BlockerId, type Disposition, type Gate, type ItemCreatedPayload, type ItemId, type Realization, type SpecStatus } from './model/item.js';
|
|
10
10
|
import { type State } from './state/fold.js';
|
|
11
11
|
export interface ImportResult {
|
|
@@ -93,6 +93,17 @@ export declare class Track {
|
|
|
93
93
|
*/
|
|
94
94
|
setOutcome(decisionId: ItemId, to: Outcome): void;
|
|
95
95
|
reviseDossier(decisionId: ItemId, dossier: Dossier): void;
|
|
96
|
+
/**
|
|
97
|
+
* Append ONE record-only `DossierArtifact` to a decision's `dossier.artifacts[]` (M5 §3.2) — a
|
|
98
|
+
* pointer to an h2a decision dossier / rendered view / mockup. APPEND-ONLY: emits
|
|
99
|
+
* `decision.artifact-added` on the EXISTING decision aggregate (next seq, no whole-dossier rewrite,
|
|
100
|
+
* existing hashes untouched), avoiding the lost-update hazard of a `reviseDossier` read-modify-write.
|
|
101
|
+
* The union is fail-closed (`assertDossierArtifact`). Track RECORDS the artifact (incl. any named
|
|
102
|
+
* `ComprehensionEvidence`) but NEVER verifies an attestation — the attester (`evidence.subject`) is
|
|
103
|
+
* in the PAYLOAD, distinct from the channel `prov.principal` (the bridge/relayer). Binding-gated +
|
|
104
|
+
* workspace-contained at the ingest seam; `clientToken` idempotency via `withClientToken`.
|
|
105
|
+
*/
|
|
106
|
+
addDecisionArtifact(decisionId: ItemId, artifact: DossierArtifact, clientToken?: string): void;
|
|
96
107
|
/**
|
|
97
108
|
* Set a gate disposition explicitly (SPEC §2.10). `completed` is NOT settable here — it is set
|
|
98
109
|
* automatically when a Decision of that gate targeting the item settles.
|
package/dist/track.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAsC,UAAU,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACtG,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAIzE,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"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"}
|
package/dist/track.js
CHANGED
|
@@ -7,7 +7,7 @@ import { computeHash } from './events/canonical.js';
|
|
|
7
7
|
import { buildReport, query as runQuery, } from './report/build.js';
|
|
8
8
|
import { WSJF_SCHEME_VERSION, wsjfScore, } from './model/priority.js';
|
|
9
9
|
import { assertManualResolve, } from './model/blocker.js';
|
|
10
|
-
import { assertOutcomeTransition, } from './model/decision.js';
|
|
10
|
+
import { assertDossierArtifact, assertOutcomeTransition, } from './model/decision.js';
|
|
11
11
|
import { assertRealizationTransition, assertSpecTransition, DomainError, } from './model/item.js';
|
|
12
12
|
import { fold } from './state/fold.js';
|
|
13
13
|
/**
|
|
@@ -212,6 +212,30 @@ export class Track {
|
|
|
212
212
|
}
|
|
213
213
|
this.emit('decision', decisionId, 'dossier.revised', { dossier });
|
|
214
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Append ONE record-only `DossierArtifact` to a decision's `dossier.artifacts[]` (M5 §3.2) — a
|
|
217
|
+
* pointer to an h2a decision dossier / rendered view / mockup. APPEND-ONLY: emits
|
|
218
|
+
* `decision.artifact-added` on the EXISTING decision aggregate (next seq, no whole-dossier rewrite,
|
|
219
|
+
* existing hashes untouched), avoiding the lost-update hazard of a `reviseDossier` read-modify-write.
|
|
220
|
+
* The union is fail-closed (`assertDossierArtifact`). Track RECORDS the artifact (incl. any named
|
|
221
|
+
* `ComprehensionEvidence`) but NEVER verifies an attestation — the attester (`evidence.subject`) is
|
|
222
|
+
* in the PAYLOAD, distinct from the channel `prov.principal` (the bridge/relayer). Binding-gated +
|
|
223
|
+
* workspace-contained at the ingest seam; `clientToken` idempotency via `withClientToken`.
|
|
224
|
+
*/
|
|
225
|
+
addDecisionArtifact(decisionId, artifact, clientToken) {
|
|
226
|
+
if (!this.state().decisions.has(decisionId)) {
|
|
227
|
+
throw new DomainError(`unknown decision ${decisionId}`);
|
|
228
|
+
}
|
|
229
|
+
const validated = assertDossierArtifact(artifact);
|
|
230
|
+
const emit = () => this.emit('decision', decisionId, 'decision.artifact-added', { artifact: validated });
|
|
231
|
+
// Stamp a CALLER-supplied token (the facade path). When called via the ingest seam the token is
|
|
232
|
+
// already in scope (withClientToken), so a `clientToken` arg is omitted and we must NOT clobber it
|
|
233
|
+
// with `withClientToken(undefined, …)`.
|
|
234
|
+
if (clientToken !== undefined)
|
|
235
|
+
this.withClientToken(clientToken, emit);
|
|
236
|
+
else
|
|
237
|
+
emit();
|
|
238
|
+
}
|
|
215
239
|
/**
|
|
216
240
|
* Set a gate disposition explicitly (SPEC §2.10). `completed` is NOT settable here — it is set
|
|
217
241
|
* automatically when a Decision of that gate targeting the item settles.
|