@sentropic/track 0.87.0 → 0.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/cli/index.d.ts.map +1 -1
  2. package/dist/cli/index.js +209 -20
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/events/types.d.ts +1 -1
  5. package/dist/events/types.d.ts.map +1 -1
  6. package/dist/events/types.js +16 -0
  7. package/dist/events/types.js.map +1 -1
  8. package/dist/events/validate.d.ts +10 -0
  9. package/dist/events/validate.d.ts.map +1 -1
  10. package/dist/events/validate.js +81 -0
  11. package/dist/events/validate.js.map +1 -1
  12. package/dist/ingest/contract.d.ts +3 -2
  13. package/dist/ingest/contract.d.ts.map +1 -1
  14. package/dist/ingest/contract.js +33 -1
  15. package/dist/ingest/contract.js.map +1 -1
  16. package/dist/ingest/index.d.ts.map +1 -1
  17. package/dist/ingest/index.js +6 -5
  18. package/dist/ingest/index.js.map +1 -1
  19. package/dist/ingest/ingest.d.ts.map +1 -1
  20. package/dist/ingest/ingest.js +17 -0
  21. package/dist/ingest/ingest.js.map +1 -1
  22. package/dist/ingest/map.d.ts.map +1 -1
  23. package/dist/ingest/map.js +11 -0
  24. package/dist/ingest/map.js.map +1 -1
  25. package/dist/model/index.d.ts +1 -1
  26. package/dist/model/index.d.ts.map +1 -1
  27. package/dist/model/index.js +1 -1
  28. package/dist/model/index.js.map +1 -1
  29. package/dist/model/item.d.ts +65 -0
  30. package/dist/model/item.d.ts.map +1 -1
  31. package/dist/model/item.js +49 -0
  32. package/dist/model/item.js.map +1 -1
  33. package/dist/read/commands.d.ts +24 -18
  34. package/dist/read/commands.d.ts.map +1 -1
  35. package/dist/read/commands.js +167 -26
  36. package/dist/read/commands.js.map +1 -1
  37. package/dist/read/contract.d.ts +32 -3
  38. package/dist/read/contract.d.ts.map +1 -1
  39. package/dist/read/contract.js +42 -2
  40. package/dist/read/contract.js.map +1 -1
  41. package/dist/report/blocker-status.d.ts.map +1 -1
  42. package/dist/report/blocker-status.js +11 -0
  43. package/dist/report/blocker-status.js.map +1 -1
  44. package/dist/report/build.d.ts +6 -0
  45. package/dist/report/build.d.ts.map +1 -1
  46. package/dist/report/build.js +2 -31
  47. package/dist/report/build.js.map +1 -1
  48. package/dist/report/format.d.ts +227 -8
  49. package/dist/report/format.d.ts.map +1 -1
  50. package/dist/report/format.js +946 -106
  51. package/dist/report/format.js.map +1 -1
  52. package/dist/report/index.d.ts +1 -1
  53. package/dist/report/index.d.ts.map +1 -1
  54. package/dist/report/index.js +1 -1
  55. package/dist/report/index.js.map +1 -1
  56. package/dist/report/rollup.d.ts +14 -0
  57. package/dist/report/rollup.d.ts.map +1 -1
  58. package/dist/report/rollup.js +32 -0
  59. package/dist/report/rollup.js.map +1 -1
  60. package/dist/report/snapshot.d.ts +20 -1
  61. package/dist/report/snapshot.d.ts.map +1 -1
  62. package/dist/report/snapshot.js +9 -2
  63. package/dist/report/snapshot.js.map +1 -1
  64. package/dist/state/fold.d.ts.map +1 -1
  65. package/dist/state/fold.js +48 -0
  66. package/dist/state/fold.js.map +1 -1
  67. package/dist/track.d.ts +34 -1
  68. package/dist/track.d.ts.map +1 -1
  69. package/dist/track.js +95 -2
  70. package/dist/track.js.map +1 -1
  71. package/package.json +1 -1
  72. package/skills/track-operation/SKILL.md +16 -4
  73. package/dist/report/html.d.ts +0 -9
  74. package/dist/report/html.d.ts.map +0 -1
  75. package/dist/report/html.js +0 -76
  76. package/dist/report/html.js.map +0 -1
  77. package/dist/report/present.d.ts +0 -28
  78. package/dist/report/present.d.ts.map +0 -1
  79. package/dist/report/present.js +0 -32
  80. package/dist/report/present.js.map +0 -1
@@ -1,32 +1,38 @@
1
- import { type Format, type InlineOptions } from '../report/format.js';
2
- import type { QueryFilter, ReportOptions } from '../report/build.js';
1
+ import { type Format, type InlineOptions, type ReportScopeProjection } from '../report/format.js';
2
+ import type { QueryFilter, Report, ReportOptions } from '../report/build.js';
3
3
  import type { StatusLevel } from '../report/status-by-level.js';
4
4
  import type { TrackReader } from './contract.js';
5
+ /** A CLI-resolved selector. Dates are already absolute instants; refs are full commit ids when applicable. */
6
+ export interface ReportPeriodSelection {
7
+ requested: string;
8
+ from?: string;
9
+ to?: string;
10
+ fromRef: string | null;
11
+ toRef: string | null;
12
+ }
13
+ export interface ScopedReportProjection {
14
+ report: Report;
15
+ scope: ReportScopeProjection;
16
+ }
5
17
  /**
6
- * `report` rendered exactly as the CLI renders it (SPEC §7).
7
- *
8
- * Default for text/md (0.19.1): a directive action report WP/table conductor when a WP forest exists,
9
- * deterministic action/decision fallback otherwise. Use `--flat` to force the deprecated legacy bucket dump.
10
- * JSON stays the flat structured contract unless `--wp` is explicit.
11
- *
12
- * The CONDUCTOR view is the 3-table FAIT / À-FAIRE(%·WP) / DÉCISIONS-ACTIONS rendered for `text`/`md`.
13
- * For `json` the contract is UNCHANGED from 0.19.0: the additive `{...report, wpTotals}` flat structure
14
- * (so existing machine consumers keep working), PLUS an OPTIONAL `view` field carrying the conductor view
15
- * model (for presentation skills). If no WP forest exists, text/md falls back to the deterministic action view.
18
+ * Read-only `report --scope` projection. A selector is exact and may name a container id, assigned
19
+ * code, or derived label; a match against more than one container fails rather than drifting after a
20
+ * positional-label renumbering. The selected root carries its complete nested subtree.
16
21
  */
17
- export declare function reportText(reader: TrackReader, options: ReportOptions, format: Format): string;
22
+ export declare function projectReportScope(report: Report, selector: string): ScopedReportProjection;
23
+ export declare function reportText(reader: TrackReader, options: ReportOptions, format: Format, now?: string, subWp?: boolean, scopeSelector?: string, periodSelection?: ReportPeriodSelection): string;
18
24
  /**
19
25
  * report-revamp §B — the INLINE (compact, one-screen) conductor render. Same read path + directive set as
20
26
  * `reportText`; only the presentation differs (cohort-collapse + width truncation live in the renderer). A
21
27
  * WP-less repo falls back to the concise action report (never a flat dump).
22
28
  */
23
- export declare function reportInline(reader: TrackReader, options: ReportOptions, inline?: InlineOptions): string;
29
+ export declare function reportInline(reader: TrackReader, options: ReportOptions, inline?: InlineOptions, now?: string, periodSelection?: ReportPeriodSelection): string;
24
30
  /**
25
- * report-revamp §Cthe DS-compatible HTML FRAGMENT render (`--format html`). Reuses the SHARED presenter
26
- * contract (the same path focus's `renderHtml` uses) over the SAME `ReportView` the JSON path exposes. A
27
- * WP-less repo still yields a valid (empty-state) fragment via the same presenter.
31
+ * Criterion 10bTHE one command that resolves a short handle (`8.1`, `H.2`, `D3`) back to its item or
32
+ * dossier. Without it a report the owner can read is a report they cannot act on; with it, no ULID has to
33
+ * appear in a column to keep a row dispatchable.
28
34
  */
29
- export declare function reportHtml(reader: TrackReader, options: ReportOptions): string;
35
+ export declare function resolveHandle(reader: TrackReader, options: ReportOptions, handle: string, scopeSelector?: string): string;
30
36
  /**
31
37
  * `report --level <spec|plan|wp|lot|task>` rendered (Scope §A/§B). `json` carries the structured status
32
38
  * groups; `text`/`md` render a one-line-per-group `done/active (pct) STATUS label — title` table. Pure
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/read/commands.ts"],"names":[],"mappings":"AAKA,OAAO,EAA4H,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAE/L,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA0B9F;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,aAAkB,GAAG,MAAM,CAc5G;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAa9E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,GACb,MAAM,CAWR;AAED,mGAAmG;AACnG,wBAAgB,SAAS,CACvB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,GACb,MAAM,CAGR"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/read/commands.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmL,KAAK,MAAM,EAAE,KAAK,aAAa,EAA4B,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAE5S,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAE/D,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhE,8GAA8G;AAC9G,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAiGD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,qBAAqB,CAAA;CAC7B;AAYD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,sBAAsB,CA4C3F;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,OAAO,EACf,aAAa,CAAC,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,qBAAqB,GACtC,MAAM,CA4CR;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,GAAE,aAAkB,EAC1B,GAAG,CAAC,EAAE,MAAM,EACZ,eAAe,CAAC,EAAE,qBAAqB,GACtC,MAAM,CAkBR;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBzH;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,GACb,MAAM,CAWR;AAED,mGAAmG;AACnG,wBAAgB,SAAS,CACvB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,GACb,MAAM,CAGR"}
@@ -2,8 +2,51 @@
2
2
  // these pure functions: a `TrackReader` (no git/fs beyond the event log) + the SAME formatters, with
3
3
  // the adapter supplying `baselineCommit` (CLI from git HEAD, MCP from a tool argument). This is what
4
4
  // makes CLI≡MCP parity STRUCTURAL (one layer), not coincidental.
5
- import { buildWpConductorView, formatActionReport, formatReport, formatRows, formatWpConductor, formatWpConductorInline, wpTotals } from '../report/format.js';
6
- import { formatWpConductorHtml } from '../report/html.js';
5
+ import { assertReportFormat, buildWpConductorView, formatActionReport, formatReport, formatRows, formatWpConductor, formatWpConductorInline, reportPeriod, reportPeriodPayload, wpTotals } from '../report/format.js';
6
+ /**
7
+ * Project a requested time interval from the COMPLETE snapshot. The report's state was folded before this
8
+ * runs; filtering events here can therefore change FAIT but never make a container or open work disappear.
9
+ */
10
+ function periodProjection(snapshot, selection, now) {
11
+ const selected = selection !== undefined;
12
+ let from = selection?.from ?? snapshot.logWindow.from;
13
+ const to = selection?.to ?? (selected ? snapshot.logWindow.to : now ?? snapshot.logWindow.to);
14
+ let fromMs = from === undefined ? undefined : Date.parse(from);
15
+ const toMs = to === undefined ? undefined : Date.parse(to);
16
+ // Every resolved period is ordered at this one boundary. A caller-pinned clock before the journal makes
17
+ // an honest empty whole-log interval; an explicit reversed selector remains invalid.
18
+ if (fromMs !== undefined && toMs !== undefined && fromMs > toMs) {
19
+ if (selection === undefined && now !== undefined) {
20
+ from = to;
21
+ fromMs = toMs;
22
+ }
23
+ else if (selection?.from !== undefined && selection.to === undefined) {
24
+ throw new Error('--since must not be after the journal head');
25
+ }
26
+ else {
27
+ throw new Error('resolved report period must not end before it begins');
28
+ }
29
+ }
30
+ const events = snapshot.events.filter((event) => {
31
+ const at = Date.parse(event.at);
32
+ return (fromMs === undefined || at >= fromMs) && (toMs === undefined || at <= toMs);
33
+ });
34
+ const deliveredItemIds = new Set(events
35
+ .filter((event) => event.aggregate === 'item' && event.type === 'realization.transition' && event.payload['to'] === 'done')
36
+ .map((event) => event.aggregateId));
37
+ return {
38
+ payload: {
39
+ requested: selection?.requested ?? null,
40
+ ...(from !== undefined ? { from } : {}),
41
+ ...(to !== undefined ? { to } : {}),
42
+ fromRef: selection?.fromRef ?? null,
43
+ toRef: selection?.toRef ?? null,
44
+ eventsInWindow: events.length,
45
+ eventsTotal: snapshot.events.length,
46
+ },
47
+ deliveredItemIds,
48
+ };
49
+ }
7
50
  /**
8
51
  * `report` rendered exactly as the CLI renders it (SPEC §7).
9
52
  *
@@ -11,63 +54,161 @@ import { formatWpConductorHtml } from '../report/html.js';
11
54
  * deterministic action/decision fallback otherwise. Use `--flat` to force the deprecated legacy bucket dump.
12
55
  * JSON stays the flat structured contract unless `--wp` is explicit.
13
56
  *
14
- * The CONDUCTOR view is the 3-table FAIT / À-FAIRE(%·WP) / DÉCISIONS-ACTIONS rendered for `text`/`md`.
57
+ * The conductor renders deterministic FAIT / À-FAIRE / ACTIONS DÉRIVÉES tables for `text`/`md`.
15
58
  * For `json` the contract is UNCHANGED from 0.19.0: the additive `{...report, wpTotals}` flat structure
16
59
  * (so existing machine consumers keep working), PLUS an OPTIONAL `view` field carrying the conductor view
17
60
  * model (for presentation skills). If no WP forest exists, text/md falls back to the deterministic action view.
18
61
  */
19
- export function reportText(reader, options, format) {
20
- const report = reader.report(options);
62
+ /**
63
+ * Criterion 21 — the window bounds the LOG carries, plus the caller's clock when it injected one. This
64
+ * module is the boundary: the renderer stays clockless, so the same log and the same `now` always render
65
+ * the same bytes.
66
+ */
67
+ function conductorMeta(options, snapshot, now, subWp, scopeProjection, period, windowedDeliveries = false) {
68
+ const window = snapshot.logWindow;
69
+ const revision = snapshot.cursor;
70
+ return {
71
+ baselineCommit: options.baselineCommit,
72
+ ...(window.from !== undefined ? { logFrom: window.from } : {}),
73
+ ...(window.to !== undefined ? { logTo: window.to } : {}),
74
+ journalRevision: { events: revision.count, head: revision.head },
75
+ ...(now !== undefined ? { now } : {}),
76
+ ...(subWp === true ? { subWp } : {}),
77
+ ...(scopeProjection !== undefined ? { scopeProjection } : {}),
78
+ ...(period !== undefined ? { periodWindow: period.payload } : {}),
79
+ ...(windowedDeliveries ? { deliveredItemIds: period?.deliveredItemIds ?? new Set() } : {}),
80
+ };
81
+ }
82
+ function flattenWpTree(nodes) {
83
+ const flat = [];
84
+ const walk = (node) => {
85
+ flat.push(node);
86
+ for (const child of node.children)
87
+ walk(child);
88
+ };
89
+ for (const node of nodes)
90
+ walk(node);
91
+ return flat;
92
+ }
93
+ /**
94
+ * Read-only `report --scope` projection. A selector is exact and may name a container id, assigned
95
+ * code, or derived label; a match against more than one container fails rather than drifting after a
96
+ * positional-label renumbering. The selected root carries its complete nested subtree.
97
+ */
98
+ export function projectReportScope(report, selector) {
99
+ const tree = report.wpTree ?? [];
100
+ const allNodes = flattenWpTree(tree);
101
+ const needle = selector.trim();
102
+ const exactCodeMatches = allNodes.filter((node) => node.code === selector);
103
+ if (needle === '' && exactCodeMatches.length === 0)
104
+ throw new Error('scope selector must not be empty');
105
+ const matches = allNodes.filter((node) => node.id === needle || node.code === selector || node.label === needle);
106
+ if (matches.length === 0) {
107
+ throw new Error(`unknown scope selector: ${selector} (use an exact container id, assigned code, or derived label)`);
108
+ }
109
+ if (matches.length > 1) {
110
+ throw new Error(`ambiguous scope selector: ${selector} (${matches.map((node) => `${node.label} (${node.id})`).join(', ')})`);
111
+ }
112
+ const selected = matches[0];
113
+ const selectedNodes = flattenWpTree([selected]);
114
+ const leafIds = new Set(selectedNodes.flatMap((node) => node.leaves.map((leaf) => leaf.id)));
115
+ const decisionRefs = new Set(selectedNodes.flatMap((node) => node.leaves.flatMap((leaf) => leaf.openBlockers))
116
+ .filter((blocker) => blocker.kind === 'decision' && blocker.ref !== undefined)
117
+ .map((blocker) => blocker.ref));
118
+ const decisions = report.decisions?.filter((decision) => decisionRefs.has(decision.id));
119
+ const buckets = {
120
+ AWAITED: report.buckets.AWAITED.filter((row) => leafIds.has(row.id)),
121
+ DROPPED: report.buckets.DROPPED.filter((row) => leafIds.has(row.id)),
122
+ DONE: report.buckets.DONE.filter((row) => leafIds.has(row.id)),
123
+ 'TO-DO': report.buckets['TO-DO'].filter((row) => leafIds.has(row.id)),
124
+ };
125
+ const projectedRows = allNodes.length + (report.outsideRollup?.length ?? 0) + (report.decisions?.length ?? 0);
126
+ const scopedRows = selectedNodes.length + (decisions?.length ?? 0);
127
+ return {
128
+ report: {
129
+ buckets,
130
+ ...(decisions !== undefined ? { decisions } : {}),
131
+ wpTree: [selected],
132
+ },
133
+ scope: {
134
+ selector: exactCodeMatches.includes(selected) ? selector : needle,
135
+ id: selected.id,
136
+ label: selected.label,
137
+ includes: 'subtree',
138
+ excludedProjectionRows: projectedRows - scopedRows,
139
+ },
140
+ };
141
+ }
142
+ export function reportText(reader, options, format, now, subWp, scopeSelector, periodSelection) {
143
+ assertReportFormat(format);
144
+ const snapshot = reader.reportSnapshot(options);
145
+ const globalReport = snapshot.report;
146
+ const scoped = scopeSelector === undefined ? undefined : projectReportScope(globalReport, scopeSelector);
147
+ const report = scoped?.report ?? globalReport;
148
+ const projection = periodProjection(snapshot, periodSelection, now);
149
+ const meta = conductorMeta(options, snapshot, now, subWp, scoped?.scope, projection, periodSelection !== undefined);
150
+ const period = reportPeriod(meta);
151
+ const payload = reportPeriodPayload(meta);
21
152
  if (options.wpTree && report.wpTree !== undefined) {
22
153
  if (format === 'json') {
23
154
  // Machine contract preserved (0.19.0 shape) + additive optional `view` for skill rendering. WP-codes
24
155
  // A3: `--active-roster` is a HUMAN-render option only — JSON ALWAYS carries the full forest (every node
25
156
  // + its `terminal` flag) so a machine consumer filters terminal roots itself.
26
- const view = report.wpTree.length > 0 ? buildWpConductorView(report.wpTree, report.decisions ?? [], report.outsideRollup) : undefined;
27
- return `${JSON.stringify({ ...report, wpTotals: wpTotals(report.wpTree, report.outsideRollup), ...(view !== undefined ? { view } : {}) }, null, 2)}\n`;
157
+ const view = report.wpTree.length > 0
158
+ ? buildWpConductorView(report.wpTree, report.decisions ?? [], report.outsideRollup, scoped === undefined ? 'global' : `${scoped.scope.label} (sous-arbre)`, meta)
159
+ : undefined;
160
+ return `${JSON.stringify({ ...report, period: payload, wpTotals: wpTotals(report.wpTree, report.outsideRollup), ...(view !== undefined ? { view } : {}) }, null, 2)}\n`;
28
161
  }
29
162
  // text/md: the rendered conductor tables when there is an actual WP forest. WP-codes A3 (DESIGN §A3) —
30
163
  // `--active-roster` OMITS terminal (DROPPED) ROOTS from the rendered roster. The ordinals were assigned in
31
164
  // `computeWpTree` over ALL roots, so the survivors keep their `WP<n>`/code (a gap appears) — no re-pack.
32
165
  const roster = options.activeRoster === true ? report.wpTree.filter((n) => n.terminal !== true) : report.wpTree;
33
166
  if (roster.length > 0) {
34
- return formatWpConductor(roster, format, report.decisions, report.outsideRollup, options.activeRoster === true ? 'roster actif (terminal exclu)' : 'global');
167
+ return formatWpConductor(roster, format, report.decisions, report.outsideRollup, options.activeRoster === true ? 'roster actif (terminal exclu)' : scoped === undefined ? 'global' : `${scoped.scope.label} (sous-arbre)`, meta);
35
168
  }
36
169
  // No WP containers yet (or every root filtered out): keep the report action-oriented, not a flat dump.
37
- return formatActionReport(report, format);
170
+ return `${period.label}\n\n${formatActionReport(report, format)}\n`;
38
171
  }
39
- return formatReport(report, format);
172
+ if (format === 'json')
173
+ return `${JSON.stringify({ ...report, period: payload }, null, 2)}\n`;
174
+ return `${period.label}\n\n${formatReport(report, format)}`;
40
175
  }
41
176
  /**
42
177
  * report-revamp §B — the INLINE (compact, one-screen) conductor render. Same read path + directive set as
43
178
  * `reportText`; only the presentation differs (cohort-collapse + width truncation live in the renderer). A
44
179
  * WP-less repo falls back to the concise action report (never a flat dump).
45
180
  */
46
- export function reportInline(reader, options, inline = {}) {
47
- const report = reader.report(options);
181
+ export function reportInline(reader, options, inline = {}, now, periodSelection) {
182
+ const snapshot = reader.reportSnapshot(options);
183
+ const report = snapshot.report;
184
+ const projection = periodProjection(snapshot, periodSelection, now);
185
+ const meta = conductorMeta(options, snapshot, now, undefined, undefined, projection, periodSelection !== undefined);
48
186
  if (report.wpTree !== undefined && report.wpTree.length > 0) {
49
187
  const roster = options.activeRoster === true ? report.wpTree.filter((n) => n.terminal !== true) : report.wpTree;
50
188
  if (roster.length > 0) {
51
- return formatWpConductorInline(roster, report.decisions ?? [], { ...inline, ...(options.activeRoster === true ? { totalScope: 'roster actif (terminal exclu)' } : {}) }, report.outsideRollup);
189
+ return formatWpConductorInline(roster, report.decisions ?? [], { ...inline, ...(options.activeRoster === true ? { totalScope: 'roster actif (terminal exclu)' } : {}) }, report.outsideRollup, meta);
52
190
  }
53
191
  }
54
- return formatActionReport(report, 'text');
192
+ return `${reportPeriod(meta).label}\n\n${formatActionReport(report, 'text')}\n`;
55
193
  }
56
194
  /**
57
- * report-revamp §Cthe DS-compatible HTML FRAGMENT render (`--format html`). Reuses the SHARED presenter
58
- * contract (the same path focus's `renderHtml` uses) over the SAME `ReportView` the JSON path exposes. A
59
- * WP-less repo still yields a valid (empty-state) fragment via the same presenter.
195
+ * Criterion 10bTHE one command that resolves a short handle (`8.1`, `H.2`, `D3`) back to its item or
196
+ * dossier. Without it a report the owner can read is a report they cannot act on; with it, no ULID has to
197
+ * appear in a column to keep a row dispatchable.
60
198
  */
61
- export function reportHtml(reader, options) {
62
- const report = reader.report(options);
63
- const decisions = report.decisions ?? [];
64
- if (report.wpTree !== undefined && report.wpTree.length > 0) {
65
- const roster = options.activeRoster === true ? report.wpTree.filter((n) => n.terminal !== true) : report.wpTree;
66
- if (roster.length > 0) {
67
- return `${formatWpConductorHtml(roster, decisions, undefined, report.outsideRollup, options.activeRoster === true ? 'roster actif (terminal exclu)' : 'global')}\n`;
68
- }
199
+ export function resolveHandle(reader, options, handle, scopeSelector) {
200
+ const snapshot = reader.reportSnapshot({ ...options, decisions: true, wpTree: true });
201
+ const globalReport = snapshot.report;
202
+ const scoped = scopeSelector === undefined ? undefined : projectReportScope(globalReport, scopeSelector);
203
+ const report = scoped?.report ?? globalReport;
204
+ const view = buildWpConductorView(report.wpTree ?? [], report.decisions ?? [], report.outsideRollup, scoped === undefined ? 'global' : `${scoped.scope.label} (sous-arbre)`, conductorMeta(options, snapshot, undefined, undefined, scoped?.scope));
205
+ const wanted = handle.trim().replace(/^\[|\]$/gu, '').toUpperCase();
206
+ const hit = view.handles.find((h) => h.handle.toUpperCase() === wanted);
207
+ if (hit === undefined) {
208
+ const known = view.handles.map((h) => h.handle).join(' ');
209
+ return `handle introuvable: ${handle}\nhandles connus: ${known === '' ? '(aucun)' : known}\n`;
69
210
  }
70
- return `${formatWpConductorHtml([], decisions, undefined, report.outsideRollup)}\n`;
211
+ return `${hit.handle}\t${hit.kind}\t${hit.id}\t${hit.title}${hit.wpLabel === undefined ? '' : `\t${hit.wpLabel}`}\n`;
71
212
  }
72
213
  /**
73
214
  * `report --level <spec|plan|wp|lot|task>` rendered (Scope §A/§B). `json` carries the structured status
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/read/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/read/commands.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { AcceptanceStatus, CriterionStatus } from '../model/acceptance.js';
2
- import type { ActorId, EventType, Provenance, Sha256 } from '../events/types.js';
2
+ import type { ActorId, EventType, Provenance, Sha256, TrackEvent } from '../events/types.js';
3
3
  import { type IntegrityResult } from '../events/validate.js';
4
4
  import { type ItemId, type Realization } from '../model/item.js';
5
5
  import type { VerificationRun } from '../model/verification.js';
@@ -21,7 +21,7 @@ import { type SnapshotOptions, type SnapshotV1 } from '../report/snapshot.js';
21
21
  * shapes it returns may only GROW (new methods / new optional fields); nothing is removed or
22
22
  * repurposed without a major bump. Consumers gate on `reader.contractVersion`.
23
23
  */
24
- export declare const READ_CONTRACT_VERSION = "1.20.0";
24
+ export declare const READ_CONTRACT_VERSION = "1.24.0";
25
25
  /** Provenance of the last `branch.imported` for a locator (drawn from the raw event log). */
26
26
  export interface BranchProvenance {
27
27
  locator: string;
@@ -176,6 +176,18 @@ export interface CursorDelta {
176
176
  head: Sha256 | null;
177
177
  count: number;
178
178
  }
179
+ /** One report projection and every provenance fact rendered beside it, derived from the SAME event snapshot. */
180
+ export interface ReportSnapshot {
181
+ report: Report;
182
+ logWindow: {
183
+ from?: string;
184
+ to?: string;
185
+ events: number;
186
+ };
187
+ cursor: Cursor;
188
+ /** The complete immutable log used for `report`; period filters project this, never truncate the fold. */
189
+ events: readonly TrackEvent[];
190
+ }
179
191
  /** Origin of a write, DERIVED PURELY from `prov.proposed` (true ⇒ machine/LLM-proposed; false ⇒ human). */
180
192
  export type AmendmentOrigin = 'human' | 'machine';
181
193
  /** The prov fields projected onto an amendment-trace step (a read-only summary; never re-verified). */
@@ -370,12 +382,29 @@ export interface DemandsOptions {
370
382
  */
371
383
  export declare class TrackReader {
372
384
  private readonly eventsPath;
373
- readonly contractVersion = "1.20.0";
385
+ readonly contractVersion = "1.24.0";
374
386
  private readonly store;
375
387
  constructor(eventsPath: string);
376
388
  private events;
377
389
  /** Bucketed backlog report (SPEC §7). */
378
390
  report(options: ReportOptions): Report;
391
+ /**
392
+ * A reproducible report read: the rows, period bounds, and journal cursor are all derived from ONE
393
+ * `readAll()` result. A renderer must use this instead of composing `report()` with `logWindow()` or
394
+ * `cursor()`, which would let an intervening append attest a head the rendered rows never represented.
395
+ */
396
+ reportSnapshot(options: ReportOptions): ReportSnapshot;
397
+ /**
398
+ * The window the LOG ITSELF carries: first recorded event → last recorded event (criterion 21). Both
399
+ * bounds are in the log and need no selector — "the whole log" IS a window, and a report that says
400
+ * `aucune fenêtre` is describing the absence of a flag, not the absence of a period. PURE (no clock):
401
+ * a caller that wants `now` as the upper bound injects it at its own boundary.
402
+ */
403
+ logWindow(): {
404
+ from?: string;
405
+ to?: string;
406
+ events: number;
407
+ };
379
408
  /**
380
409
  * Every decision plus its stored dossier, derived from ONE folded state. This is deliberately separate
381
410
  * from `canevas`: callers listing an uncapped decision set must not replay the entire log once per row.
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/read/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/read/contract.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ import { buildSnapshot } from '../report/snapshot.js';
32
32
  * shapes it returns may only GROW (new methods / new optional fields); nothing is removed or
33
33
  * repurposed without a major bump. Consumers gate on `reader.contractVersion`.
34
34
  */
35
- export const READ_CONTRACT_VERSION = '1.20.0'; // +decisionDossiers: uncapped one-fold decision+dossier projection (additive)
35
+ export const READ_CONTRACT_VERSION = '1.24.0'; // +reportSnapshot.events: window projection shares the complete folded log
36
36
  /** Thrown by `requireFresh` when the sidecar is unsafe to consume (stale, absent, or tampered). */
37
37
  export class StaleSidecarError extends Error {
38
38
  detail;
@@ -175,6 +175,10 @@ const ITEM_LIFECYCLE_EVENT_TYPES = new Set([
175
175
  'spec.abandoned',
176
176
  'spec.transition',
177
177
  'realization.transition',
178
+ // Regression expression — a reopening is a lifecycle FACT (a closure was corrected, with its motive), so the
179
+ // trace that already carries the closure must carry its correction too; a trace that showed the `done` and
180
+ // hid the reopening would be exactly the assertion-wider-than-its-evidence the 2026-07-29 ruling attacks.
181
+ 'realization.reopened',
178
182
  ]);
179
183
  /**
180
184
  * The demand status a lifecycle STEP transitions TO (for demand-axis events only). raised⇒raised;
@@ -213,7 +217,43 @@ export class TrackReader {
213
217
  }
214
218
  /** Bucketed backlog report (SPEC §7). */
215
219
  report(options) {
216
- return buildReport(fold(this.events()), options);
220
+ return this.reportSnapshot(options).report;
221
+ }
222
+ /**
223
+ * A reproducible report read: the rows, period bounds, and journal cursor are all derived from ONE
224
+ * `readAll()` result. A renderer must use this instead of composing `report()` with `logWindow()` or
225
+ * `cursor()`, which would let an intervening append attest a head the rendered rows never represented.
226
+ */
227
+ reportSnapshot(options) {
228
+ const events = this.events();
229
+ const first = events[0]?.at;
230
+ const last = events.at(-1);
231
+ return {
232
+ report: buildReport(fold(events), options),
233
+ logWindow: {
234
+ ...(first !== undefined ? { from: first } : {}),
235
+ ...(last?.at !== undefined ? { to: last.at } : {}),
236
+ events: events.length,
237
+ },
238
+ cursor: { head: last?.contentHash ?? null, count: events.length },
239
+ events,
240
+ };
241
+ }
242
+ /**
243
+ * The window the LOG ITSELF carries: first recorded event → last recorded event (criterion 21). Both
244
+ * bounds are in the log and need no selector — "the whole log" IS a window, and a report that says
245
+ * `aucune fenêtre` is describing the absence of a flag, not the absence of a period. PURE (no clock):
246
+ * a caller that wants `now` as the upper bound injects it at its own boundary.
247
+ */
248
+ logWindow() {
249
+ const events = this.events();
250
+ const first = events[0]?.at;
251
+ const last = events[events.length - 1]?.at;
252
+ return {
253
+ ...(first !== undefined ? { from: first } : {}),
254
+ ...(last !== undefined ? { to: last } : {}),
255
+ events: events.length,
256
+ };
217
257
  }
218
258
  /**
219
259
  * Every decision plus its stored dossier, derived from ONE folded state. This is deliberately separate