@dzhechkov/harness-core 0.8.45 → 0.8.47

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 (159) hide show
  1. package/.dz-manifest.json +206 -174
  2. package/README.md +136 -8
  3. package/dist/agentdb-index.d.ts.map +1 -1
  4. package/dist/agentdb-index.js +32 -2
  5. package/dist/agentdb-index.js.map +1 -1
  6. package/dist/agentdb-snapshot.d.ts +14 -1
  7. package/dist/agentdb-snapshot.d.ts.map +1 -1
  8. package/dist/agentdb-snapshot.js +100 -4
  9. package/dist/agentdb-snapshot.js.map +1 -1
  10. package/dist/apply-leg.d.ts +9 -1
  11. package/dist/apply-leg.d.ts.map +1 -1
  12. package/dist/apply-leg.js +47 -10
  13. package/dist/apply-leg.js.map +1 -1
  14. package/dist/architecture.d.ts +0 -5
  15. package/dist/architecture.d.ts.map +1 -1
  16. package/dist/architecture.js +25 -2
  17. package/dist/architecture.js.map +1 -1
  18. package/dist/codex-rollouts.d.ts +35 -7
  19. package/dist/codex-rollouts.d.ts.map +1 -1
  20. package/dist/codex-rollouts.js +201 -113
  21. package/dist/codex-rollouts.js.map +1 -1
  22. package/dist/cost-ledger.d.ts +42 -3
  23. package/dist/cost-ledger.d.ts.map +1 -1
  24. package/dist/cost-ledger.js +478 -15
  25. package/dist/cost-ledger.js.map +1 -1
  26. package/dist/feature-adr-routing.d.ts +16 -0
  27. package/dist/feature-adr-routing.d.ts.map +1 -1
  28. package/dist/feature-adr-routing.js +21 -0
  29. package/dist/feature-adr-routing.js.map +1 -1
  30. package/dist/guard.d.ts +7 -0
  31. package/dist/guard.d.ts.map +1 -1
  32. package/dist/guard.js +48 -0
  33. package/dist/guard.js.map +1 -1
  34. package/dist/index.d.ts +13 -6
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +13 -3
  37. package/dist/index.js.map +1 -1
  38. package/dist/loop-plan.d.ts +4 -0
  39. package/dist/loop-plan.d.ts.map +1 -1
  40. package/dist/loop-plan.js +4 -0
  41. package/dist/loop-plan.js.map +1 -1
  42. package/dist/mutation-gate.d.ts +36 -1
  43. package/dist/mutation-gate.d.ts.map +1 -1
  44. package/dist/mutation-gate.js +109 -19
  45. package/dist/mutation-gate.js.map +1 -1
  46. package/dist/npm-homepage.d.ts +64 -0
  47. package/dist/npm-homepage.d.ts.map +1 -0
  48. package/dist/npm-homepage.js +109 -0
  49. package/dist/npm-homepage.js.map +1 -0
  50. package/dist/operations.d.ts +6 -0
  51. package/dist/operations.d.ts.map +1 -1
  52. package/dist/operations.js +150 -24
  53. package/dist/operations.js.map +1 -1
  54. package/dist/pack-inventory.d.ts +13 -0
  55. package/dist/pack-inventory.d.ts.map +1 -1
  56. package/dist/pack-inventory.js +28 -2
  57. package/dist/pack-inventory.js.map +1 -1
  58. package/dist/parity.d.ts.map +1 -1
  59. package/dist/parity.js +4 -1
  60. package/dist/parity.js.map +1 -1
  61. package/dist/publish-sibling-drift.d.ts +43 -1
  62. package/dist/publish-sibling-drift.d.ts.map +1 -1
  63. package/dist/publish-sibling-drift.js +269 -13
  64. package/dist/publish-sibling-drift.js.map +1 -1
  65. package/dist/publish.d.ts +5 -1
  66. package/dist/publish.d.ts.map +1 -1
  67. package/dist/publish.js +18 -1
  68. package/dist/publish.js.map +1 -1
  69. package/dist/qe-bridge.d.ts +63 -1
  70. package/dist/qe-bridge.d.ts.map +1 -1
  71. package/dist/qe-bridge.js +82 -0
  72. package/dist/qe-bridge.js.map +1 -1
  73. package/dist/release-package-audit.d.ts +86 -0
  74. package/dist/release-package-audit.d.ts.map +1 -0
  75. package/dist/release-package-audit.js +272 -0
  76. package/dist/release-package-audit.js.map +1 -0
  77. package/dist/release.d.ts +8 -1
  78. package/dist/release.d.ts.map +1 -1
  79. package/dist/release.js +58 -32
  80. package/dist/release.js.map +1 -1
  81. package/dist/round-exec-claim.d.ts +36 -0
  82. package/dist/round-exec-claim.d.ts.map +1 -0
  83. package/dist/round-exec-claim.js +17 -0
  84. package/dist/round-exec-claim.js.map +1 -0
  85. package/dist/round.d.ts +10 -1
  86. package/dist/round.d.ts.map +1 -1
  87. package/dist/round.js +5 -1
  88. package/dist/round.js.map +1 -1
  89. package/dist/run-records.d.ts +11 -0
  90. package/dist/run-records.d.ts.map +1 -1
  91. package/dist/run-records.js +124 -20
  92. package/dist/run-records.js.map +1 -1
  93. package/dist/session-retro.d.ts +33 -0
  94. package/dist/session-retro.d.ts.map +1 -1
  95. package/dist/session-retro.js +170 -34
  96. package/dist/session-retro.js.map +1 -1
  97. package/dist/sign.d.ts +44 -0
  98. package/dist/sign.d.ts.map +1 -1
  99. package/dist/sign.js +126 -1
  100. package/dist/sign.js.map +1 -1
  101. package/dist/stage-usage.d.ts +148 -0
  102. package/dist/stage-usage.d.ts.map +1 -0
  103. package/dist/stage-usage.js +261 -0
  104. package/dist/stage-usage.js.map +1 -0
  105. package/dist/statusline.d.ts +23 -0
  106. package/dist/statusline.d.ts.map +1 -1
  107. package/dist/statusline.js +167 -1
  108. package/dist/statusline.js.map +1 -1
  109. package/dist/workflow-run-dispatch.d.ts +21 -19
  110. package/dist/workflow-run-dispatch.d.ts.map +1 -1
  111. package/dist/workflow-run-dispatch.js +206 -95
  112. package/dist/workflow-run-dispatch.js.map +1 -1
  113. package/dist/workflow-run.d.ts +12 -3
  114. package/dist/workflow-run.d.ts.map +1 -1
  115. package/dist/workflow-run.js +29 -2
  116. package/dist/workflow-run.js.map +1 -1
  117. package/package.json +4 -4
  118. package/sbom.json +309 -229
  119. package/src/agentdb-index.ts +31 -2
  120. package/src/agentdb-snapshot.ts +105 -4
  121. package/src/apply-leg.ts +47 -10
  122. package/src/architecture.ts +15 -2
  123. package/src/codex-rollouts.ts +155 -147
  124. package/src/cost-ledger.ts +308 -19
  125. package/src/feature-adr-routing.ts +22 -0
  126. package/src/guard.ts +52 -0
  127. package/src/index.ts +19 -3
  128. package/src/loop-plan.ts +8 -0
  129. package/src/mutation-gate.ts +153 -19
  130. package/src/npm-homepage.ts +142 -0
  131. package/src/operations.ts +177 -22
  132. package/src/pack-inventory.ts +27 -2
  133. package/src/parity.ts +4 -1
  134. package/src/publish-sibling-drift.ts +214 -11
  135. package/src/publish.ts +20 -1
  136. package/src/qe-bridge.ts +86 -1
  137. package/src/release-package-audit.ts +264 -0
  138. package/src/release.ts +55 -22
  139. package/src/round-exec-claim.ts +43 -0
  140. package/src/round.ts +8 -0
  141. package/src/run-records.ts +101 -22
  142. package/src/session-retro.ts +153 -31
  143. package/src/sign.ts +136 -1
  144. package/src/stage-usage.ts +191 -0
  145. package/src/statusline.ts +149 -1
  146. package/src/workflow-run-dispatch.ts +148 -89
  147. package/src/workflow-run.ts +40 -4
  148. package/dist/ledger-cost-fill.d.ts +0 -58
  149. package/dist/ledger-cost-fill.d.ts.map +0 -1
  150. package/dist/ledger-cost-fill.js +0 -78
  151. package/dist/ledger-cost-fill.js.map +0 -1
  152. package/dist/retro.d.ts +0 -131
  153. package/dist/retro.d.ts.map +0 -1
  154. package/dist/retro.js +0 -207
  155. package/dist/retro.js.map +0 -1
  156. package/dist/sbom.d.ts +0 -42
  157. package/dist/sbom.d.ts.map +0 -1
  158. package/dist/sbom.js +0 -120
  159. package/dist/sbom.js.map +0 -1
@@ -31,11 +31,12 @@
31
31
  * @packageDocumentation
32
32
  */
33
33
  export interface CodexRolloutTotals {
34
- readonly input: number;
35
- readonly cachedInput: number;
36
- readonly output: number;
37
- readonly reasoning: number;
38
- readonly total: number;
34
+ readonly cachedWrite?: number | null;
35
+ readonly input: number | null;
36
+ readonly cachedInput: number | null;
37
+ readonly output: number | null;
38
+ readonly reasoning: number | null;
39
+ readonly total: number | null;
39
40
  }
40
41
  /**
41
42
  * measurement-integrity fix-round-1/F5 (Codex r1 HIGH #5): one TURN of a session — the span between
@@ -45,6 +46,7 @@ export interface CodexRolloutTotals {
45
46
  * such record fell inside this turn's interval (nothing to attribute to it).
46
47
  */
47
48
  export interface CodexRolloutTurn {
49
+ readonly turnId?: string | null;
48
50
  readonly model: string | null;
49
51
  readonly cwd: string | null;
50
52
  readonly startedAt: string | null;
@@ -52,6 +54,30 @@ export interface CodexRolloutTurn {
52
54
  readonly totals: CodexRolloutTotals | null;
53
55
  }
54
56
  export interface CodexRollout {
57
+ readonly sourcePath?: string;
58
+ readonly turnId?: string | null;
59
+ readonly diagnostics?: readonly string[];
60
+ readonly cumulativeWitness?: CodexRolloutTotals | null;
61
+ /** Fresh validation of an observed cumulative prefix; compact association avoids copying key sets. */
62
+ readonly scopeDiagnostics?: readonly {
63
+ sourceRecord: number;
64
+ receiptCount: number;
65
+ timestamp: string | null;
66
+ diagnostics: readonly string[];
67
+ witness?: CodexRolloutTotals;
68
+ }[];
69
+ readonly receipts?: readonly {
70
+ key: string;
71
+ responseId: string | null;
72
+ turnId: string | null;
73
+ turnIndex?: number | null;
74
+ timestamp: string | null;
75
+ totals: CodexRolloutTotals;
76
+ payloadDigest: string;
77
+ source: string;
78
+ sourceRecord?: number;
79
+ diagnostics?: readonly string[];
80
+ }[];
55
81
  readonly id: string;
56
82
  readonly cwd: string | null;
57
83
  readonly model: string | null;
@@ -94,13 +120,15 @@ export type CodexRolloutMatch = {
94
120
  };
95
121
  export interface CodexRolloutMatchWindow {
96
122
  /** ISO instant — the window's lower bound. */
97
- readonly from: string;
123
+ readonly from?: string;
98
124
  /** ISO instant — the window's upper bound. */
99
- readonly to: string;
125
+ readonly to?: string;
100
126
  /** Exact match against {@link CodexRollout.cwd}, when given. */
101
127
  readonly cwd?: string;
102
128
  /** Exact match against {@link CodexRollout.model}, when given. */
103
129
  readonly model?: string;
130
+ readonly rolloutId?: string;
131
+ readonly turnId?: string;
104
132
  }
105
133
  /**
106
134
  * Which candidate VIEWS (session-level, or — per {@link candidateViewsOf} — turn-level whenever the
@@ -1 +1 @@
1
- {"version":3,"file":"codex-rollouts.d.ts","sourceRoot":"","sources":["../src/codex-rollouts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAyCH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC;;;;;iCAK6B;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,yFAAyF;IACzF,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAcD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,sBAAsB,CAyIxG;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,CAAC;AAEnF,MAAM,WAAW,uBAAuB;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAyCD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,MAAM,EAAE,uBAAuB,GAC9B,iBAAiB,CAwBnB"}
1
+ {"version":3,"file":"codex-rollouts.d.ts","sourceRoot":"","sources":["../src/codex-rollouts.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@
30
30
  *
31
31
  * @packageDocumentation
32
32
  */
33
+ import { fnv1a64 } from './feature-adr-checkpoints.js';
33
34
  function isRecord(v) {
34
35
  return typeof v === 'object' && v !== null && !Array.isArray(v);
35
36
  }
@@ -37,7 +38,7 @@ function nonEmptyString(v) {
37
38
  return typeof v === 'string' && v.length > 0 ? v : null;
38
39
  }
39
40
  function finiteNonNegative(v) {
40
- return typeof v === 'number' && Number.isFinite(v) && v >= 0 ? v : 0;
41
+ return typeof v === 'number' && Number.isSafeInteger(v) && v >= 0 ? v : null;
41
42
  }
42
43
  /** Epoch ms from a record's own `timestamp` (current schema) or `ts` (legacy/defensive), or `null`. */
43
44
  function recordTimeMs(rec) {
@@ -64,6 +65,7 @@ function isoOrNull(ms) {
64
65
  * (both schemas use these five field names) out of a usage-bearing sub-object. */
65
66
  function totalsFrom(usage) {
66
67
  return {
68
+ cachedWrite: finiteNonNegative(usage['cache_write_input_tokens']),
67
69
  input: finiteNonNegative(usage['input_tokens']),
68
70
  cachedInput: finiteNonNegative(usage['cached_input_tokens']),
69
71
  output: finiteNonNegative(usage['output_tokens']),
@@ -80,136 +82,195 @@ function totalsFrom(usage) {
80
82
  * content.
81
83
  */
82
84
  export function parseCodexRollout(text, fileName) {
83
- if (typeof text !== 'string' || text.trim().length === 0) {
85
+ if (typeof text !== 'string' || !text.trim())
84
86
  return { error: 'empty rollout text' };
85
- }
87
+ const diagnostics = [];
86
88
  let id = null;
87
89
  let cwd = null;
88
- let sessionMetaModel = null;
89
- let turnContextModel = null;
90
+ let model = null;
91
+ let sessionCwd = null;
90
92
  let firstMs = null;
91
93
  let lastMs = null;
92
- let lastTotals = null;
93
- let sawAnyRecord = false;
94
- const closedTurns = [];
95
- let open = null;
96
- let unmatchableTurns = 0;
97
- const closeOpenTurn = (endMs) => {
98
- if (open === null)
99
- return;
100
- if (open.startedMs === null || endMs === null)
101
- unmatchableTurns += 1;
102
- closedTurns.push({
103
- model: open.model,
104
- cwd: open.cwd,
105
- startedAt: open.startedMs === null ? null : isoOrNull(open.startedMs),
106
- endedAt: endMs === null ? null : isoOrNull(endMs),
107
- totals: open.totals,
108
- });
109
- };
110
- const deltaTotals = (now, base) => {
111
- if (base === null)
112
- return now;
113
- const d = (a, b) => (a - b >= 0 ? a - b : a); // a counter that went DOWN is per-record, not cumulative
114
- return { input: d(now.input, base.input), cachedInput: d(now.cachedInput, base.cachedInput), output: d(now.output, base.output), reasoning: d(now.reasoning, base.reasoning), total: d(now.total, base.total) };
94
+ let cumulative = null;
95
+ let witnessMs = null;
96
+ let sawTurnModel = false;
97
+ const modern = new Map();
98
+ const conflicted = new Set();
99
+ const legacy = [];
100
+ const scopeDiagnostics = [];
101
+ const turns = [];
102
+ let current;
103
+ const empty = () => ({ input: null, cachedInput: null, cachedWrite: null, output: null, reasoning: null, total: null });
104
+ const fields = ['input', 'cachedInput', 'cachedWrite', 'output', 'reasoning', 'total'];
105
+ const sum = (values) => Object.fromEntries(fields.map((field) => {
106
+ const counts = values.map((v) => v[field]);
107
+ const total = counts.reduce((n, v) => n + (v ?? 0), 0);
108
+ if (!Number.isSafeInteger(total))
109
+ diagnostics.push('aggregate-overflow:' + field);
110
+ return [field, counts.length > 0 && counts.every((v) => v != null) && Number.isSafeInteger(total) ? total : null];
111
+ }));
112
+ const readUsage = (usage, owned = []) => {
113
+ const t = totalsFrom(usage);
114
+ for (const [key, v] of Object.entries(usage))
115
+ if (key.endsWith('_tokens') && v != null && finiteNonNegative(v) === null)
116
+ owned.push('invalid-counter:' + key);
117
+ if (t.input != null && ((t.cachedInput != null && t.cachedInput > t.input) || (t.cachedInput != null && t.cachedWrite != null && t.cachedInput + t.cachedWrite > t.input)))
118
+ owned.push('cache-exceeds-input');
119
+ if (t.output != null && t.reasoning != null && t.reasoning > t.output)
120
+ owned.push('reasoning-exceeds-output');
121
+ if (t.input != null && t.output != null && t.total != null && t.input + t.output !== t.total)
122
+ owned.push('total-split-mismatch');
123
+ diagnostics.push(...owned);
124
+ return t;
115
125
  };
116
- for (const line of text.split('\n')) {
117
- if (line.length === 0)
126
+ const signature = (r) => JSON.stringify([r.turnId, r.totals.input, r.totals.cachedInput, r.totals.output, r.totals.reasoning, r.totals.total]);
127
+ for (const [sourceRecord, line] of text.split('\n').entries()) {
128
+ if (!line.trim())
118
129
  continue;
119
- let rec;
130
+ let raw;
120
131
  try {
121
- rec = JSON.parse(line);
132
+ raw = JSON.parse(line);
122
133
  }
123
134
  catch {
124
- continue; // corrupt line — skip, never throw
135
+ diagnostics.push('malformed-record');
136
+ continue;
125
137
  }
126
- if (!isRecord(rec))
138
+ if (!isRecord(raw))
127
139
  continue;
128
- sawAnyRecord = true;
129
- const ms = recordTimeMs(rec);
140
+ const ms = recordTimeMs(raw);
130
141
  if (ms !== null) {
131
142
  firstMs = firstMs === null ? ms : Math.min(firstMs, ms);
132
143
  lastMs = lastMs === null ? ms : Math.max(lastMs, ms);
133
144
  }
134
- const type = rec['type'];
135
- const payload = isRecord(rec['payload']) ? rec['payload'] : null;
136
- if (payload === null)
145
+ const payload = isRecord(raw['payload']) ? raw['payload'] : null;
146
+ if (!payload)
137
147
  continue;
138
- if (type === 'session_meta') {
139
- if (id === null)
140
- id = nonEmptyString(payload['session_id']) ?? nonEmptyString(payload['id']);
141
- if (cwd === null)
142
- cwd = nonEmptyString(payload['cwd']);
143
- // Step 0's documented (legacy, not observed live on this machine) shape put `model` directly on
144
- // `session_meta` — accepted here too, but `turnContextModel` always wins at the end (below)
145
- // since that is what the measured current schema actually carries.
146
- if (sessionMetaModel === null)
147
- sessionMetaModel = nonEmptyString(payload['model']);
148
+ if (raw['type'] === 'session_meta') {
149
+ id ??= nonEmptyString(payload['session_id']) ?? nonEmptyString(payload['id']);
150
+ cwd ??= nonEmptyString(payload['cwd']);
151
+ sessionCwd ??= nonEmptyString(payload['cwd']);
152
+ model ??= nonEmptyString(payload['model']);
153
+ }
154
+ if (raw['type'] === 'turn_context') {
155
+ if (current)
156
+ current.endedAt = isoOrNull(ms);
157
+ current = { model: nonEmptyString(payload['model']), cwd: nonEmptyString(payload['cwd']) ?? sessionCwd,
158
+ turnId: nonEmptyString(payload['turn_id']), startedAt: isoOrNull(ms), endedAt: null, totals: null, baseline: cumulative };
159
+ turns.push(current);
160
+ if (!sawTurnModel && current.model !== null) {
161
+ model = current.model;
162
+ sawTurnModel = true;
163
+ }
164
+ cwd ??= current.cwd;
148
165
  }
149
- else if (type === 'turn_context') {
150
- if (turnContextModel === null)
151
- turnContextModel = nonEmptyString(payload['model']);
152
- if (cwd === null)
153
- cwd = nonEmptyString(payload['cwd']);
154
- // Close the previous open turn AT this boundary (even when the boundary has no timestamp —
155
- // the previous turn must stop absorbing usage), then open the new one.
156
- closeOpenTurn(ms);
157
- open = { model: nonEmptyString(payload['model']), cwd: nonEmptyString(payload['cwd']) ?? cwd, startedMs: ms, baseline: lastTotals, totals: null };
166
+ const modernUsage = raw['type'] === 'token_usage_record' && isRecord(payload['usage']) ? payload['usage'] : null;
167
+ const info = isRecord(payload['info']) ? payload['info'] : null;
168
+ const countEvent = raw['type'] === 'token_count' || (raw['type'] === 'event_msg' && payload['type'] === 'token_count');
169
+ const recordDiagnostics = [];
170
+ let recordWitness;
171
+ const witness = modernUsage ? payload['thread_token_usage'] : countEvent ? info?.['total_token_usage'] : null;
172
+ if (isRecord(witness) && (witnessMs === null || ms === null || ms >= witnessMs)) {
173
+ const next = readUsage(witness, recordDiagnostics);
174
+ recordWitness = next;
175
+ if (cumulative?.total != null && next.total != null && next.total < cumulative.total) {
176
+ diagnostics.push('cumulative-reset');
177
+ recordDiagnostics.push('cumulative-reset');
178
+ }
179
+ cumulative = next;
180
+ witnessMs = ms;
158
181
  }
159
- // Legacy shape (Step 0's documented one, not observed live on this machine 2026-09-16):
160
- // `type: "token_count"`, `payload.info.total_token_usage`.
161
- if (type === 'token_count') {
162
- const info = isRecord(payload['info']) ? payload['info'] : null;
163
- const usage = info !== null && isRecord(info['total_token_usage']) ? info['total_token_usage'] : null;
164
- if (usage !== null) {
165
- const t = totalsFrom(usage);
166
- if (open !== null)
167
- open.totals = deltaTotals(t, open.baseline);
168
- lastTotals = t;
182
+ if (modernUsage) {
183
+ const owned = [];
184
+ const totals = readUsage(modernUsage, owned);
185
+ const responseId = nonEmptyString(payload['response_id']);
186
+ const turnId = nonEmptyString(payload['turn_id']) ?? current?.turnId ?? null;
187
+ const key = responseId ? 'response:' + responseId : 'record:' + fnv1a64(JSON.stringify([id, turnId, isoOrNull(ms), totals]));
188
+ if (!responseId)
189
+ diagnostics.push('response-id-unavailable');
190
+ if (payload['session_id'] != null && id != null && payload['session_id'] !== id) {
191
+ diagnostics.push('foreign-session');
192
+ owned.push('foreign-session');
193
+ }
194
+ const receipt = { key, responseId, turnId, turnIndex: current ? turns.indexOf(current) : null, timestamp: isoOrNull(ms), totals, sourceRecord, diagnostics: owned,
195
+ payloadDigest: fnv1a64(JSON.stringify([payload['session_id'] ?? id, payload['thread_id'] ?? id, turnId, current?.model ?? model, current?.cwd ?? cwd, totals])), source: 'modern-response' };
196
+ if (current?.turnId != null && turnId !== current.turnId) {
197
+ diagnostics.push('turn-association-conflict');
198
+ owned.push('turn-association-conflict');
199
+ }
200
+ const previous = modern.get(key);
201
+ if (previous && previous.payloadDigest !== receipt.payloadDigest) {
202
+ conflicted.add(key);
203
+ diagnostics.push('conflicting-response:' + key);
169
204
  }
205
+ else
206
+ modern.set(key, previous ? { ...previous, diagnostics: [...new Set([...(previous.diagnostics ?? []), ...owned])] } : receipt);
170
207
  }
171
- // Current shape (measured live, cli_version 0.154.0): `type: "token_usage_record"`,
172
- // `payload.usage`.
173
- if (type === 'token_usage_record') {
174
- const usage = isRecord(payload['usage']) ? payload['usage'] : null;
175
- if (usage !== null) {
176
- const t = totalsFrom(usage);
177
- if (open !== null)
178
- open.totals = deltaTotals(t, open.baseline);
179
- lastTotals = t;
208
+ else if (countEvent && info && isRecord(info['last_token_usage'])) {
209
+ const owned = [];
210
+ const totals = readUsage(info['last_token_usage'], owned);
211
+ recordDiagnostics.push(...owned);
212
+ legacy.push({ key: 'legacy:' + fnv1a64(JSON.stringify([id, current?.turnId, isoOrNull(ms), witness, totals])), responseId: null,
213
+ turnId: current?.turnId ?? null, turnIndex: current ? turns.indexOf(current) : null, timestamp: isoOrNull(ms), totals, sourceRecord, diagnostics: owned, payloadDigest: fnv1a64(JSON.stringify([current?.turnId, totals])), source: 'legacy-last' });
214
+ }
215
+ else if (countEvent && cumulative && current) {
216
+ const baseline = current.baseline;
217
+ current.totals = baseline === null ? cumulative : Object.fromEntries(fields.map((field) => {
218
+ const now = cumulative?.[field];
219
+ const base = baseline[field];
220
+ const delta = now != null && base != null ? now - base : null;
221
+ if (delta != null && delta < 0)
222
+ diagnostics.push('cumulative-reset:' + field);
223
+ return [field, delta != null && delta >= 0 ? delta : null];
224
+ }));
225
+ }
226
+ if (recordWitness !== undefined || recordDiagnostics.length > 0) {
227
+ let receiptCount = modern.size - conflicted.size;
228
+ if (legacy.length) {
229
+ const modernReceipts = [...modern.values()].filter((r) => !conflicted.has(r.key));
230
+ const legacyKeys = new Set(legacy.filter((r) => !modernReceipts.some((m) => signature(m) === signature(r) && m.timestamp != null && r.timestamp != null && Math.abs(Date.parse(m.timestamp) - Date.parse(r.timestamp)) <= 5000)).map((r) => r.key));
231
+ receiptCount += legacyKeys.size;
180
232
  }
233
+ scopeDiagnostics.push({ sourceRecord, receiptCount, timestamp: isoOrNull(ms), diagnostics: recordDiagnostics,
234
+ ...(recordWitness !== undefined ? { witness: recordWitness } : {}) });
181
235
  }
182
236
  }
183
- if (open !== null && lastMs !== null)
184
- closeOpenTurn(lastMs);
185
- if (!sawAnyRecord)
186
- return { error: 'no parseable JSON lines in rollout text' };
187
- if (id === null) {
188
- // Last resort: the uuid embedded in `rollout-<ts>-<uuid>.jsonl` — never invented, only read back.
189
- // A plain "greedy dash" regex would stop at the uuid's OWN internal dashes (its 8-4-4-4-12 hex
190
- // groups), so this matches the canonical uuid shape explicitly rather than "everything after the
191
- // last dash".
192
- const m = typeof fileName === 'string'
193
- ? /([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})\.jsonl$/.exec(fileName)
194
- : null;
195
- id = m !== null ? (m[1] ?? null) : null;
196
- }
237
+ if (current)
238
+ current.endedAt = isoOrNull(lastMs);
239
+ if (id === null && fileName)
240
+ id = /([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})\.jsonl$/.exec(fileName)?.[1] ?? null;
197
241
  if (id === null)
198
242
  return { error: 'no session_meta record and no id in fileName — cannot identify this rollout' };
199
- if (lastTotals === null) {
243
+ const seenTurnIds = new Set();
244
+ for (const turn of turns)
245
+ if (turn.turnId !== null) {
246
+ if (seenTurnIds.has(turn.turnId))
247
+ diagnostics.push('turn-association-conflict');
248
+ seenTurnIds.add(turn.turnId);
249
+ }
250
+ const responses = [...modern.values()].filter((r) => !conflicted.has(r.key));
251
+ const seenLegacy = new Set();
252
+ for (const receipt of legacy) {
253
+ const mirror = responses.some((r) => signature(r) === signature(receipt) && r.timestamp != null && receipt.timestamp != null
254
+ && Math.abs(Date.parse(r.timestamp) - Date.parse(receipt.timestamp)) <= 5000);
255
+ if (!mirror && !seenLegacy.has(receipt.key)) {
256
+ responses.push(receipt);
257
+ seenLegacy.add(receipt.key);
258
+ }
259
+ }
260
+ if (responses.length === 0 && cumulative === null && conflicted.size === 0)
200
261
  return { error: 'no token_count or token_usage_record entry — nothing to attribute' };
262
+ for (const turn of turns) {
263
+ const selected = responses.filter((r) => r.turnIndex === turns.indexOf(turn));
264
+ if (selected.length > 0)
265
+ turn.totals = sum(selected.map((r) => r.totals));
201
266
  }
202
- return {
203
- id,
204
- cwd,
205
- model: turnContextModel ?? sessionMetaModel,
206
- startedAt: isoOrNull(firstMs),
207
- endedAt: isoOrNull(lastMs),
208
- totals: lastTotals,
209
- granularity: closedTurns.length > 0 ? 'turn' : 'session',
210
- unmatchableTurns,
211
- turns: closedTurns,
212
- };
267
+ const totals = conflicted.size > 0 ? empty() : responses.length > 0 ? sum(responses.map((r) => r.totals)) : cumulative;
268
+ if (responses.length > 0 && cumulative?.total != null && totals.total !== cumulative.total)
269
+ diagnostics.push('cumulative-witness-mismatch');
270
+ return { id, cwd, model, startedAt: isoOrNull(firstMs), endedAt: isoOrNull(lastMs), totals,
271
+ granularity: turns.length ? 'turn' : 'session', unmatchableTurns: turns.filter((t) => t.startedAt === null || t.endedAt === null).length,
272
+ turns: turns.map(({ baseline: _baseline, ...turn }) => turn), receipts: responses, diagnostics: [...new Set(diagnostics)],
273
+ cumulativeWitness: cumulative, scopeDiagnostics, ...(fileName ? { sourcePath: fileName } : {}) };
213
274
  }
214
275
  /**
215
276
  * measurement-integrity fix-round-1/F5 (Codex r1 HIGH #5): every candidate window `matchCodexRollouts`
@@ -232,13 +293,34 @@ export function parseCodexRollout(text, fileName) {
232
293
  */
233
294
  function candidateViewsOf(r) {
234
295
  if (r.granularity === 'session')
235
- return [r];
296
+ return r.turns.length === 0 ? [r] : [];
236
297
  const out = [];
237
- for (const turn of r.turns) {
298
+ const turnIdCounts = new Map();
299
+ for (const turn of r.turns)
300
+ if (turn.turnId != null)
301
+ turnIdCounts.set(turn.turnId, (turnIdCounts.get(turn.turnId) ?? 0) + 1);
302
+ for (const [turnIndex, turn] of r.turns.entries()) {
303
+ if (turn.turnId != null && turnIdCounts.get(turn.turnId) !== 1)
304
+ continue;
238
305
  if (turn.totals === null)
239
306
  continue; // nothing was ever attributed to this turn — not a candidate
307
+ // Original turn position owns membership, even when adjacent boundaries share a timestamp.
308
+ const receipts = r.receipts?.filter((receipt) => {
309
+ if (receipt.turnIndex != null) {
310
+ if (!Number.isSafeInteger(receipt.turnIndex) || receipt.turnIndex < 0 || receipt.turnIndex >= r.turns.length || receipt.turnIndex !== turnIndex)
311
+ return false;
312
+ return receipt.turnId === null || turn.turnId == null || receipt.turnId === turn.turnId;
313
+ }
314
+ return receipt.turnId !== null && turn.turnId === receipt.turnId && turnIdCounts.get(receipt.turnId) === 1;
315
+ });
316
+ const contradicts = r.receipts?.some((receipt) => receipt.turnIndex === turnIndex && receipt.turnId !== null && turn.turnId != null && receipt.turnId !== turn.turnId);
317
+ if (contradicts || (r.receipts && r.receipts.length > 0 && receipts?.length === 0))
318
+ continue;
240
319
  out.push({
320
+ ...r,
241
321
  id: r.id,
322
+ turnId: turn.turnId ?? null,
323
+ receipts: receipts ?? [],
242
324
  unmatchableTurns: r.unmatchableTurns,
243
325
  cwd: turn.cwd,
244
326
  model: turn.model,
@@ -264,22 +346,28 @@ function candidateViewsOf(r) {
264
346
  * disagreement can never resolve to a lone `'one'`, it always surfaces as `'ambiguous'`.
265
347
  */
266
348
  export function matchCodexRollouts(rollouts, window) {
267
- const fromMs = Date.parse(window.from);
268
- const toMs = Date.parse(window.to);
269
- if (!Number.isFinite(fromMs) || !Number.isFinite(toMs) || fromMs > toMs)
349
+ const fromMs = Date.parse(window.from ?? '');
350
+ const toMs = Date.parse(window.to ?? '');
351
+ const hasWindow = window.from !== undefined || window.to !== undefined;
352
+ const exact = window.rolloutId !== undefined || window.turnId !== undefined;
353
+ if ((hasWindow && (!Number.isFinite(fromMs) || !Number.isFinite(toMs) || fromMs > toMs)) || (!hasWindow && !exact))
270
354
  return { status: 'none' };
271
355
  const candidates = [];
272
356
  for (const r of rollouts) {
273
357
  for (const view of candidateViewsOf(r)) {
274
- if (view.startedAt === null || view.endedAt === null)
358
+ if (window.rolloutId !== undefined && view.id !== window.rolloutId)
359
+ continue;
360
+ if (window.turnId !== undefined && view.turnId !== window.turnId)
361
+ continue;
362
+ if (hasWindow && (view.startedAt === null || view.endedAt === null))
275
363
  continue;
276
- const startMs = Date.parse(view.startedAt);
277
- const endMs = Date.parse(view.endedAt);
278
- if (!Number.isFinite(startMs) || !Number.isFinite(endMs))
364
+ const startMs = Date.parse(view.startedAt ?? '');
365
+ const endMs = Date.parse(view.endedAt ?? '');
366
+ if (hasWindow && (!Number.isFinite(startMs) || !Number.isFinite(endMs)))
279
367
  continue;
280
368
  // Lead delta after Codex r2 (#5): the turn must START inside the window — a turn that merely
281
369
  // brushes the window's edge (any-overlap) is exactly how a neighbouring dispatch's turn leaks in.
282
- if (startMs < fromMs || startMs > toMs)
370
+ if (hasWindow && (startMs < fromMs || startMs > toMs))
283
371
  continue;
284
372
  if (window.cwd !== undefined && view.cwd !== window.cwd)
285
373
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"codex-rollouts.js","sourceRoot":"","sources":["../src/codex-rollouts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-rollouts.js","sourceRoot":"","sources":["../src/codex-rollouts.ts"],"names":[],"mappings":"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"}