@sentropic/track 0.85.10 → 0.85.13

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.
@@ -2,7 +2,88 @@ import { acceptanceStatus } from '../accept/status.js';
2
2
  import { isRoleContainer } from '../model/item.js';
3
3
  import { BUCKETS, bucketOf } from './buckets.js';
4
4
  import { computeWpTree } from './rollup.js';
5
- function toRow(state, item, config) {
5
+ // focus-wp-enrichment — FR gloss of every acceptance/recette state (the report locale). A Record over the
6
+ // full `AcceptanceStatus` union so a new enum value is a compile error here (never a silent `undefined`).
7
+ const ACCEPTANCE_FR = {
8
+ pass: 'recette OK',
9
+ fail: 'recette en échec',
10
+ stale: 'recette obsolète (à rejouer)',
11
+ waived: 'recette dérogée',
12
+ unknown: 'recette non évaluée',
13
+ 'n/a': 'sans recette',
14
+ };
15
+ const BODY_EXCERPT_MAX = 200;
16
+ /**
17
+ * focus-wp-enrichment — a cleaned, one-line, capped excerpt of an item body: collapse every control char /
18
+ * whitespace run to a single space, trim, then cap at `BODY_EXCERPT_MAX` with a trailing ellipsis. Returns
19
+ * `undefined` for an absent/blank body (drop-when-absent on `detail.summary`). Local (no render-layer import).
20
+ */
21
+ function bodyExcerpt(body) {
22
+ if (body === undefined)
23
+ return undefined;
24
+ let out = '';
25
+ let prevSpace = false;
26
+ for (const ch of body) {
27
+ const code = ch.codePointAt(0) ?? 0;
28
+ const isSpace = code < 0x20 || code === 0x7f || code === 0x2028 || code === 0x2029 || ch === ' ';
29
+ if (isSpace) {
30
+ if (!prevSpace) {
31
+ out += ' ';
32
+ prevSpace = true;
33
+ }
34
+ }
35
+ else {
36
+ out += ch;
37
+ prevSpace = false;
38
+ }
39
+ }
40
+ const trimmed = out.trim();
41
+ if (trimmed.length === 0)
42
+ return undefined;
43
+ return trimmed.length <= BODY_EXCERPT_MAX ? trimmed : `${trimmed.slice(0, BODY_EXCERPT_MAX - 1)}…`;
44
+ }
45
+ /**
46
+ * focus-wp-enrichment — the container-id → derived-label map READ from a computed WP forest. Every
47
+ * role-container (root OR nested sub-node) is a `WpNode`, so this covers the whole forest. Reusing the
48
+ * tree's labels (never re-deriving) keeps a row's `wpLabel` byte-identical to the directive/tree label.
49
+ */
50
+ function containerLabels(tree) {
51
+ const map = new Map();
52
+ const walk = (n) => {
53
+ map.set(n.id, n.label);
54
+ for (const c of n.children)
55
+ walk(c);
56
+ };
57
+ for (const n of tree)
58
+ walk(n);
59
+ return map;
60
+ }
61
+ /**
62
+ * focus-wp-enrichment — the item's OWNING workpackage: the NEAREST role-container ancestor id, walking
63
+ * `parentId` (the row's item is never itself a container — `buildReport` excludes those). This is exactly
64
+ * the node `directLeaves`/`buildDirectives` attach the leaf to, so `wpId` matches the directive `scope.wpId`.
65
+ * Available for EVERY item (any bucket) since it reads the item's own ancestry. O(depth), cycle-guarded.
66
+ * Returns `undefined` for an item with no role-container ancestor (outside any WP forest).
67
+ */
68
+ function owningWpId(items, itemId) {
69
+ const seen = new Set();
70
+ let cursor = items.get(itemId)?.parentId;
71
+ while (cursor !== undefined && !seen.has(cursor)) {
72
+ seen.add(cursor);
73
+ const it = items.get(cursor);
74
+ if (it === undefined)
75
+ break;
76
+ if (isRoleContainer(it))
77
+ return cursor;
78
+ cursor = it.parentId;
79
+ }
80
+ return undefined;
81
+ }
82
+ function toRow(state, item, config, labels) {
83
+ const acceptance = acceptanceStatus(state, item.id, config.baselineCommit);
84
+ const wpId = owningWpId(state.items, item.id);
85
+ const wpLabel = wpId !== undefined ? labels.get(wpId) : undefined;
86
+ const summary = bodyExcerpt(item.body);
6
87
  return {
7
88
  id: item.id,
8
89
  title: item.title,
@@ -10,11 +91,18 @@ function toRow(state, item, config) {
10
91
  workspace: item.workspace,
11
92
  bucket: bucketOf(state, item, config),
12
93
  realization: item.realization,
13
- acceptance: acceptanceStatus(state, item.id, config.baselineCommit),
94
+ acceptance,
14
95
  ...(item.priority !== undefined ? { priority: item.priority.score } : {}),
15
96
  ...(item.accountable !== undefined ? { accountable: item.accountable } : {}),
16
97
  ...(item.engagementRef !== undefined ? { engagementRef: item.engagementRef } : {}),
17
98
  ...(item.role !== undefined ? { role: item.role } : {}),
99
+ // focus-wp-enrichment (additive) — WP attribution for EVERY bucket + a render-ready detail block.
100
+ ...(wpId !== undefined ? { wpId } : {}),
101
+ ...(wpLabel !== undefined ? { wpLabel } : {}),
102
+ detail: {
103
+ ...(summary !== undefined ? { summary } : {}),
104
+ acceptanceLabel: ACCEPTANCE_FR[acceptance],
105
+ },
18
106
  };
19
107
  }
20
108
  // Active prioritization scheme: higher score first; un-prioritized items after; stable by id.
@@ -34,6 +122,12 @@ export function buildReport(state, options) {
34
122
  baselineCommit: options.baselineCommit,
35
123
  requireAccepted: options.requireAccepted ?? false,
36
124
  };
125
+ // focus-wp-enrichment — compute the WP forest ONCE: it supplies both the additive per-row WP labels
126
+ // (via `toRow` below) and the optional `report.wpTree`. The derived labels (positional `WP<n>`/dotted/
127
+ // codes/streams) live ONLY in `computeWpTree`, so reading them here keeps a row's `wpLabel` byte-identical
128
+ // to the directive's `scope.wpLabel` and the rendered tree — no second, drift-prone derivation.
129
+ const tree = computeWpTree(state, config);
130
+ const labels = containerLabels(tree);
37
131
  const buckets = { AWAITED: [], DROPPED: [], DONE: [], 'TO-DO': [] };
38
132
  for (const item of state.items.values()) {
39
133
  // Workpackages §2 / Scope §B(a) — a WP or spec-phase is a container, not a leaf: keep it out of the
@@ -41,14 +135,14 @@ export function buildReport(state, options) {
41
135
  // warns about). The container forest is surfaced separately on `report.wpTree`.
42
136
  if (isRoleContainer(item))
43
137
  continue;
44
- const row = toRow(state, item, config);
138
+ const row = toRow(state, item, config, labels);
45
139
  buckets[row.bucket].push(row);
46
140
  }
47
141
  for (const bucket of BUCKETS)
48
142
  buckets[bucket].sort(byPriority);
49
143
  const report = { buckets };
50
144
  if (options.wpTree)
51
- report.wpTree = computeWpTree(state, config);
145
+ report.wpTree = tree;
52
146
  if (options.decisions) {
53
147
  report.decisions = [...state.decisions.values()].map((d) => ({
54
148
  id: d.id,
@@ -78,9 +172,13 @@ export function query(state, filter, options) {
78
172
  baselineCommit: options.baselineCommit,
79
173
  requireAccepted: options.requireAccepted ?? false,
80
174
  };
175
+ // focus-wp-enrichment — a container row is enriched via its OWN owning ancestor (its parent WP), so it
176
+ // needs the same forest label map. Computed here for the (rare) role-filter branch; the bucket rows above
177
+ // already came enriched from `buildReport`.
178
+ const labels = containerLabels(computeWpTree(state, config));
81
179
  const wpRows = [...state.items.values()]
82
180
  .filter((i) => i.role !== undefined)
83
- .map((i) => toRow(state, i, config))
181
+ .map((i) => toRow(state, i, config, labels))
84
182
  .sort(byPriority);
85
183
  rows = [...rows, ...wpRows];
86
184
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/report/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/report/build.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,15 @@ import type { AcceptanceStatus } from '../model/acceptance.js';
6
6
  import type { ItemId, Realization, SpecStatus } from '../model/item.js';
7
7
  import type { WorkEventKind } from '../ingest/contract.js';
8
8
  export type DirectiveMode = 'human-decision' | 'h2a-engagement' | 'subagent' | 'local';
9
+ /**
10
+ * ADDITIVE (report-revamp §A2) — the NATURE of the advice, ORTHOGONAL to `mode` (which is the
11
+ * ROUTAGE/exécuteur). `mode` must NOT grow a 5th value to carry this axis: `adviceKind` is its own
12
+ * governed enum. `judgment-required` = a genuine owner decision (a `human-decision` gate); every other
13
+ * directive is a `derivable-next-step` (the next legal move is mechanically derivable from state — fix
14
+ * acceptance, finish the increment, prioritize, …). NEVER a naked "à toi de juger": even the residual
15
+ * `inspect-fallback` carries a concrete legal move, so it stays `derivable-next-step`.
16
+ */
17
+ export type DirectiveAdviceKind = 'derivable-next-step' | 'judgment-required';
9
18
  export type DirectiveGateCode = 'decision-pending' | 'engagement-pending' | 'external-dependency' | 'linked-dependency' | 'manual-blocker' | 'spec-not-ready' | 'acceptance-failed' | 'acceptance-stale' | 'priority-missing';
10
19
  export type DirectiveStepCode = 'focus-decision' | 'settle-decision' | 'resume-engagement' | 'resolve-external-blocker' | 'amend-spec' | 'fix-acceptance' | 'rerun-acceptance' | 'finish-increment' | 'start-increment' | 'prioritize-backlog' | 'inspect-fallback';
11
20
  export type DirectiveRank = 'P1_GATE' | 'P2_ACCEPTANCE' | 'P3_IN_PROGRESS' | 'P4_TODO_WSJF' | 'P5_FALLBACK';
@@ -23,6 +32,15 @@ export interface DirectiveGate {
23
32
  code: DirectiveGateCode;
24
33
  /** ref = decisionId / engagementRef / blockerId — what makes the gate DELEGABLE (not just a boolean). */
25
34
  ref?: string;
35
+ /**
36
+ * ADDITIVE (report-revamp §A1) — the id of the ITEM-CIBLE that blocks this gate, NAMED separately from
37
+ * `ref` (the actionable handle). For a dependency gate `ref` is the `blockerId` (the handle for
38
+ * `blocker.resolve`) while `blockedBy` is the depended-on item's id — the two are DISTINCT, so a renderer
39
+ * can say "bloqué par X" WITHOUT mutating the still-actionable `ref`. Drop-when-absent.
40
+ */
41
+ blockedBy?: string;
42
+ /** ADDITIVE — the human title of `blockedBy` when resolvable (render-ready; ESCAPED at render, §A4). */
43
+ blockedByTitle?: string;
26
44
  }
27
45
  export interface DirectiveStep {
28
46
  code: DirectiveStepCode;
@@ -35,6 +53,12 @@ export interface DirectiveFacts {
35
53
  specStatus: SpecStatus | 'n/a';
36
54
  accountable?: ActorId;
37
55
  blockerRefs?: string[];
56
+ /**
57
+ * ADDITIVE (report-revamp §A5) — 1-hop fan-in: how many OTHER open items declare a direct dependency on
58
+ * THIS directive's target item. A pure, deterministic keystone signal ("cet item en bloque N autres");
59
+ * the report highlights the max-fan-in item (tie-break ULID). Drop-when-absent (0 ⇒ omitted).
60
+ */
61
+ fanIn?: number;
38
62
  }
39
63
  /**
40
64
  * One actionable, state-derived, delegable directive (DESIGN §3). NO phrase is stored — the human
@@ -46,6 +70,11 @@ export interface Directive {
46
70
  target: DirectiveTarget;
47
71
  scope: DirectiveScope;
48
72
  mode: DirectiveMode;
73
+ /**
74
+ * ADDITIVE (report-revamp §A2) — the advice NATURE, orthogonal to `mode`. DERIVED (never a 5th `mode`):
75
+ * `human-decision` ⇒ `judgment-required`, every other mode ⇒ `derivable-next-step`.
76
+ */
77
+ adviceKind: DirectiveAdviceKind;
49
78
  gate?: DirectiveGate;
50
79
  step: DirectiveStep;
51
80
  rank: DirectiveRank;
@@ -65,17 +94,14 @@ export declare function decisionNeedsFocus(d: {
65
94
  artifacts?: readonly unknown[];
66
95
  hasRecommendation?: boolean;
67
96
  }): boolean;
68
- /**
69
- * Build the DIRECTIVE set over the WP forest + the decision rows (DESIGN §2/§3). Two ORTHOGONAL axes:
70
- * ROUTAGE (mode, per leaf): open `decision` blocker ⇒ `human-decision` (ref=decisionId); an
71
- * `engagementRef` on a non-DONE leaf ⇒ `h2a-engagement`; else ⇒ `subagent`.
72
- * URGENCE (which leaf, on the delegable subset of each WP): the DESIGN §2.B ladder (`tierOf`).
73
- *
74
- * Each leaf is attributed to its OWNING node (`node.leaves` — `directLeaves` already stops at sub-WP
75
- * boundaries) so a directive maps 1:1 to a leaf with no parent/child double-count. One WORK directive per
76
- * WP node (its most-urgent delegable leaf), PLUS one directive per decision-wait / engagement-wait /
77
- * pending decision. The returned array is GLOBALLY sorted (deterministic).
78
- */
97
+ /** §A5 — the keystone item: the one that blocks the MOST others (max fan-in), tie-break ULID asc. Pure. */
98
+ export interface Keystone {
99
+ id: ItemId;
100
+ title: string;
101
+ /** How many OTHER open items directly depend on this item (its 1-hop fan-in). */
102
+ blocks: number;
103
+ }
104
+ export declare function keystoneOf(tree: readonly WpNode[]): Keystone | undefined;
79
105
  export declare function buildDirectives(tree: readonly WpNode[], decisions?: readonly DecisionRow[]): Directive[];
80
106
  /**
81
107
  * The flat, prioritized SUBAGENT dispatch queue (DESIGN §4): the directive ids that are delegable to a
@@ -1 +1 @@
1
- {"version":3,"file":"directive.d.ts","sourceRoot":"","sources":["../../src/report/directive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directive.d.ts","sourceRoot":"","sources":["../../src/report/directive.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAyB,MAAM,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAI1D,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,UAAU,GAAG,OAAO,CAAA;AAEtF;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,qBAAqB,GAAG,mBAAmB,CAAA;AAE7E,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,CAAA;AAEtB,MAAM,MAAM,iBAAiB,GACzB,gBAAgB,GAChB,iBAAiB,GACjB,mBAAmB,GACnB,0BAA0B,GAC1B,YAAY,GACZ,gBAAgB,GAChB,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,GACjB,oBAAoB,GACpB,kBAAkB,CAAA;AAEtB,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,gBAAgB,GAAG,cAAc,GAAG,aAAa,CAAA;AAE3G,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI,CAAA;IAC3D,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAA;IACvB,yGAAyG;IACzG,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wGAAwG;IACxG,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,iBAAiB,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,EAAE,gBAAgB,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,UAAU,GAAG,KAAK,CAAA;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,cAAc,CAAA;IACrB,IAAI,EAAE,aAAa,CAAA;IACnB;;;OAGG;IACH,UAAU,EAAE,mBAAmB,CAAA;IAC/B,IAAI,CAAC,EAAE,aAAa,CAAA;IACpB,IAAI,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,aAAa,CAAA;IACnB,KAAK,EAAE,cAAc,CAAA;IACrB,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AASD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAKpE;AAkBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,GAAG,OAAO,CAOV;AAgKD,2GAA2G;AAC3G,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,GAAG,SAAS,CAMxE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,GAAE,SAAS,WAAW,EAAO,GAAG,SAAS,EAAE,CA6J5G;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,EAAE,CAE1E"}
@@ -57,7 +57,7 @@ function tierOf(l) {
57
57
  const blockerRefs = l.openBlockers.map((b) => b.blockerId);
58
58
  // 1. real blocking gate (dependency/manual blocker open) on a NON-in-progress leaf — P1_GATE.
59
59
  if (depBlocker !== undefined && l.realization !== 'in-progress') {
60
- return { order: 10, rank: 'P1_GATE', step: 'resolve-external-blocker', gateCode: gateCodeOfDep(depBlocker), gateRef: depBlocker.blockerId, blockerRefs };
60
+ return { order: 10, rank: 'P1_GATE', step: 'resolve-external-blocker', gateCode: gateCodeOfDep(depBlocker), gateRef: depBlocker.blockerId, ...(depBlocker.ref !== undefined ? { blockedBy: depBlocker.ref } : {}), blockerRefs };
61
61
  }
62
62
  // 2. acceptance == 'fail' — P2_ACCEPTANCE (fail sub-rank, primes in-progress).
63
63
  if (l.acceptance === 'fail') {
@@ -65,7 +65,7 @@ function tierOf(l) {
65
65
  }
66
66
  // 3. in-progress + open dependency blocker (WIP coincé) — P3_IN_PROGRESS.
67
67
  if (depBlocker !== undefined && l.realization === 'in-progress') {
68
- return { order: 30, rank: 'P3_IN_PROGRESS', step: 'finish-increment', gateCode: gateCodeOfDep(depBlocker), gateRef: depBlocker.blockerId, blockerRefs };
68
+ return { order: 30, rank: 'P3_IN_PROGRESS', step: 'finish-increment', gateCode: gateCodeOfDep(depBlocker), gateRef: depBlocker.blockerId, ...(depBlocker.ref !== undefined ? { blockedBy: depBlocker.ref } : {}), blockerRefs };
69
69
  }
70
70
  // 4. in-progress (flux — finish before starting new).
71
71
  if (l.realization === 'in-progress') {
@@ -86,7 +86,7 @@ function tierOf(l) {
86
86
  // 8. fallback — NEVER id-only (the facts always carry bucket/realization/acceptance/specStatus).
87
87
  return { order: 90, rank: 'P5_FALLBACK', step: 'inspect-fallback', blockerRefs: [] };
88
88
  }
89
- function factsOf(l, blockerRefs) {
89
+ function factsOf(l, blockerRefs, fanIn = 0) {
90
90
  return {
91
91
  bucket: l.bucket,
92
92
  realization: l.realization,
@@ -95,6 +95,7 @@ function factsOf(l, blockerRefs) {
95
95
  ...(l.priority !== undefined ? { wsjf: l.priority } : {}),
96
96
  ...(l.accountable !== undefined ? { accountable: l.accountable } : {}),
97
97
  ...(blockerRefs.length > 0 ? { blockerRefs } : {}),
98
+ ...(fanIn > 0 ? { fanIn } : {}),
98
99
  };
99
100
  }
100
101
  /** Stable directive id (deterministic — no flicker): each (kind,target) yields at most one directive. */
@@ -105,6 +106,9 @@ function makeDirective(d) {
105
106
  assertSafeCommandHint(d.commandHint);
106
107
  return {
107
108
  id: directiveId(d.target),
109
+ // §A2 — adviceKind is DERIVED from mode (never a 5th mode value): a human-decision gate needs judgment,
110
+ // everything else is a derivable next step.
111
+ adviceKind: d.mode === 'human-decision' ? 'judgment-required' : 'derivable-next-step',
108
112
  affordances: d.affordances ?? AFFORDANCES[d.step.code],
109
113
  ...d,
110
114
  };
@@ -163,6 +167,37 @@ function inDelegableScope(l) {
163
167
  * WP node (its most-urgent delegable leaf), PLUS one directive per decision-wait / engagement-wait /
164
168
  * pending decision. The returned array is GLOBALLY sorted (deterministic).
165
169
  */
170
+ /**
171
+ * §A5 — the pure 1-hop fan-in index over the whole forest. Every non-WP leaf is attached to exactly ONE
172
+ * node (`directLeaves` stops at sub-WP boundaries), so a flat walk over `node.leaves` never double-counts.
173
+ * `fanIn.get(x)` = the number of open items that declare a direct `dependency` blocker on item `x`.
174
+ */
175
+ function fanInIndex(nodes) {
176
+ const leafById = new Map();
177
+ const fanIn = new Map();
178
+ const walk = (n) => {
179
+ for (const l of n.leaves) {
180
+ leafById.set(l.id, l);
181
+ for (const b of l.openBlockers) {
182
+ if (b.kind === 'dependency' && b.ref !== undefined)
183
+ fanIn.set(b.ref, (fanIn.get(b.ref) ?? 0) + 1);
184
+ }
185
+ }
186
+ for (const c of n.children)
187
+ walk(c);
188
+ };
189
+ for (const n of nodes)
190
+ walk(n);
191
+ return { leafById, fanIn };
192
+ }
193
+ export function keystoneOf(tree) {
194
+ const { leafById, fanIn } = fanInIndex(tree);
195
+ const ranked = [...fanIn.entries()].sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]));
196
+ const top = ranked[0];
197
+ if (top === undefined || top[1] === 0)
198
+ return undefined;
199
+ return { id: top[0], title: leafById.get(top[0])?.title ?? top[0], blocks: top[1] };
200
+ }
166
201
  export function buildDirectives(tree, decisions = []) {
167
202
  const decisionById = new Map(decisions.map((d) => [d.id, d]));
168
203
  const flat = [];
@@ -173,6 +208,11 @@ export function buildDirectives(tree, decisions = []) {
173
208
  };
174
209
  for (const n of tree)
175
210
  collect(n);
211
+ // §A1/§A5 — the pure 1-hop index (shared with `keystoneOf`): `leafById` resolves a `blockedBy` target's
212
+ // human title, `fanIn` counts how many OTHER open items declare a direct `dependency` on a given item.
213
+ const { leafById, fanIn } = fanInIndex(tree);
214
+ const titleOf = (id) => leafById.get(id)?.title;
215
+ const fanInOf = (id) => fanIn.get(id) ?? 0;
176
216
  const entries = [];
177
217
  const seenDecisionRef = new Set(); // decisionIds already surfaced via a decision-wait leaf
178
218
  for (const node of flat) {
@@ -193,10 +233,12 @@ export function buildDirectives(tree, decisions = []) {
193
233
  target: { kind: 'item', id: l.id, title: l.title, workspace: l.workspace },
194
234
  scope,
195
235
  mode: 'human-decision',
196
- ...(decisionId !== '' ? { gate: { code: 'decision-pending', ref: decisionId } } : { gate: { code: 'decision-pending' } }),
236
+ ...(decisionId !== ''
237
+ ? { gate: { code: 'decision-pending', ref: decisionId, blockedBy: decisionId, ...(d?.title !== undefined ? { blockedByTitle: d.title } : {}) } }
238
+ : { gate: { code: 'decision-pending' } }),
197
239
  step: { code: focus ? 'focus-decision' : 'settle-decision' },
198
240
  rank: 'P1_GATE',
199
- facts: factsOf(l, decisionId !== '' ? [decisionId] : []),
241
+ facts: factsOf(l, decisionId !== '' ? [decisionId] : [], fanInOf(l.id)),
200
242
  ...(decisionId !== '' ? { commandHint: `track focus ${decisionId}` } : {}),
201
243
  }),
202
244
  });
@@ -213,10 +255,10 @@ export function buildDirectives(tree, decisions = []) {
213
255
  target: { kind: 'engagement', id: engRef, title: l.title, workspace: l.workspace },
214
256
  scope,
215
257
  mode: 'h2a-engagement',
216
- gate: { code: 'engagement-pending', ref: engRef },
258
+ gate: { code: 'engagement-pending', ref: engRef, blockedBy: engRef },
217
259
  step: { code: 'resume-engagement' },
218
260
  rank: 'P1_GATE',
219
- facts: factsOf(l, extraEng !== undefined ? [extraEng.blockerId] : []),
261
+ facts: factsOf(l, extraEng !== undefined ? [extraEng.blockerId] : [], fanInOf(l.id)),
220
262
  }),
221
263
  });
222
264
  continue;
@@ -244,7 +286,7 @@ export function buildDirectives(tree, decisions = []) {
244
286
  gate: { code: 'priority-missing' },
245
287
  step: { code: 'prioritize-backlog' },
246
288
  rank: 'P4_TODO_WSJF',
247
- facts: factsOf(rep, []),
289
+ facts: factsOf(rep, [], fanInOf(rep.id)),
248
290
  commandHint: `track priority assess ${rep.id}`,
249
291
  }),
250
292
  });
@@ -261,11 +303,19 @@ export function buildDirectives(tree, decisions = []) {
261
303
  scope,
262
304
  mode: 'subagent',
263
305
  ...(top.gateCode !== undefined
264
- ? { gate: { code: top.gateCode, ...(top.gateRef !== undefined ? { ref: top.gateRef } : {}) } }
306
+ ? {
307
+ gate: {
308
+ code: top.gateCode,
309
+ ...(top.gateRef !== undefined ? { ref: top.gateRef } : {}),
310
+ ...(top.blockedBy !== undefined
311
+ ? { blockedBy: top.blockedBy, ...(titleOf(top.blockedBy) !== undefined ? { blockedByTitle: titleOf(top.blockedBy) } : {}) }
312
+ : {}),
313
+ },
314
+ }
265
315
  : {}),
266
316
  step: { code: top.step },
267
317
  rank: top.rank,
268
- facts: factsOf(top.l, top.blockerRefs),
318
+ facts: factsOf(top.l, top.blockerRefs, fanInOf(top.l.id)),
269
319
  }),
270
320
  });
271
321
  }
@@ -283,7 +333,7 @@ export function buildDirectives(tree, decisions = []) {
283
333
  target: { kind: 'decision', id: d.id, title: d.title, workspace: d.workspace },
284
334
  scope: {},
285
335
  mode: 'human-decision',
286
- gate: { code: 'decision-pending', ref: d.id },
336
+ gate: { code: 'decision-pending', ref: d.id, blockedBy: d.id, blockedByTitle: d.title },
287
337
  step: { code: focus ? 'focus-decision' : 'settle-decision' },
288
338
  rank: 'P1_GATE',
289
339
  facts: {
@@ -1 +1 @@
1
- {"version":3,"file":"directive.js","sourceRoot":"","sources":["../../src/report/directive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directive.js","sourceRoot":"","sources":["../../src/report/directive.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { DecisionRow, Report, ReportRow } from './build.js';
2
- import type { WpNode } from './rollup.js';
3
- import { type Directive } from './directive.js';
2
+ import type { WpLeaf, WpNode } from './rollup.js';
3
+ import { type Directive, type Keystone } from './directive.js';
4
4
  export type Format = 'json' | 'text' | 'md';
5
5
  export declare function formatReport(report: Report, format: Format): string;
6
6
  /**
@@ -32,6 +32,19 @@ export interface WpTotals {
32
32
  * roots' rolled-up counts (which would double-count nested sub-WP leaves).
33
33
  */
34
34
  export declare function wpTotals(tree: readonly WpNode[]): WpTotals;
35
+ export interface LeafCohort {
36
+ tag: string;
37
+ count: number;
38
+ /** Member leaf titles (CLEAN, deterministic by leaf id). */
39
+ titles: string[];
40
+ }
41
+ /**
42
+ * §A3 — cohort-collapse: fold a WP's open leaves into `{tag, count, titles}` groups by `leafStatusTag`.
43
+ * RENDER-ONLY and STRICTLY INTRA-WP (the caller passes ONE WP's leaves, so a cohort never spans WPs). The
44
+ * machine `directives[]` / `dispatchQueue` are NEVER collapsed — this is a pure presentation fold. Cohorts
45
+ * are ordered by first appearance in id-sorted leaf order (deterministic, no flicker).
46
+ */
47
+ export declare function collapseLeafCohorts(leaves: readonly WpLeaf[]): LeafCohort[];
35
48
  /**
36
49
  * Report-revamp — the 3-table CONDUCTOR view over the WP forest (the owner reports THROUGH this):
37
50
  * FAIT — WPs at 100% + a global done/total, pct%.
@@ -63,6 +76,11 @@ export interface ReportView {
63
76
  */
64
77
  directives: readonly Directive[];
65
78
  dispatchQueue: readonly string[];
79
+ /**
80
+ * ADDITIVE (report-revamp §A5) — the keystone item (max 1-hop fan-in, tie-break ULID): the single item
81
+ * whose completion unblocks the most others. Present iff ≥1 open dependency exists. Drop-when-absent.
82
+ */
83
+ keystone?: Keystone;
66
84
  }
67
85
  /**
68
86
  * Render ONE directive to a human FR phrase — RENDER-ONLY (no phrase is ever stored as data, DESIGN §3).
@@ -72,5 +90,12 @@ export interface ReportView {
72
90
  export declare function directivePhrase(d: Directive): string;
73
91
  export declare function buildWpConductorView(tree: readonly WpNode[], decisions?: readonly DecisionRow[]): ReportView;
74
92
  export declare function formatWpConductor(tree: readonly WpNode[], format: Format, decisions?: readonly DecisionRow[]): string;
93
+ export interface InlineOptions {
94
+ /** Target line width (terminal columns). Clamped to [48, 200]; defaults to 80. */
95
+ width?: number;
96
+ /** Max PRÉCO lines before an omission count is surfaced (never a silent cut). Defaults to 10. */
97
+ maxDirectives?: number;
98
+ }
99
+ export declare function formatWpConductorInline(tree: readonly WpNode[], decisions?: readonly DecisionRow[], opts?: InlineOptions): string;
75
100
  export declare function formatRows(rows: ReportRow[], format: Format): string;
76
101
  //# 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,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAIL,KAAK,SAAS,EAEf,MAAM,gBAAgB,CAAA;AAEvB,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAoD3C,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAwBnE;AAkFD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA6CzE;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,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACjD,IAAI,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,qBAAqB,CAAA;IAC3B,MAAM,EAAE,IAAI,CAAA;IACZ,MAAM,EAAE,SAAS,eAAe,EAAE,CAAA;IAClC,qBAAqB,EAAE,MAAM,CAAA;IAC7B;;;;OAIG;IACH,UAAU,EAAE,SAAS,SAAS,EAAE,CAAA;IAChC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAA;CACjC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CA2BpD;AAOD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,GAAE,SAAS,WAAW,EAAO,GAAG,UAAU,CAyDhH;AAoBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,WAAW,EAAO,GAAG,MAAM,CAEzH;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAYpE"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/report/format.ts"],"names":[],"mappings":"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"}