claude-mem 13.26.0 → 13.27.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 (118) hide show
  1. package/.codex-plugin/plugin.json +1 -1
  2. package/README.md +1 -1
  3. package/dist/bug-report/index.js +1 -1
  4. package/dist/npx-cli/index.js +2 -2
  5. package/dist/opencode-plugin/index.js +10 -10
  6. package/openclaw/openclaw.plugin.json +1 -1
  7. package/openclaw/skills/agent-cost-report/CHECKSUMS.txt +47 -0
  8. package/openclaw/skills/agent-cost-report/SKILL.md +240 -0
  9. package/openclaw/skills/agent-cost-report/scripts/acr/__init__.py +1 -0
  10. package/openclaw/skills/agent-cost-report/scripts/acr/behavior.py +313 -0
  11. package/openclaw/skills/agent-cost-report/scripts/acr/classify.py +83 -0
  12. package/openclaw/skills/agent-cost-report/scripts/acr/costs.py +121 -0
  13. package/openclaw/skills/agent-cost-report/scripts/acr/devices.py +88 -0
  14. package/openclaw/skills/agent-cost-report/scripts/acr/evidence.py +165 -0
  15. package/openclaw/skills/agent-cost-report/scripts/acr/labels.py +112 -0
  16. package/openclaw/skills/agent-cost-report/scripts/acr/measure.py +89 -0
  17. package/openclaw/skills/agent-cost-report/scripts/acr/mistakes.py +321 -0
  18. package/openclaw/skills/agent-cost-report/scripts/acr/patterns.py +394 -0
  19. package/openclaw/skills/agent-cost-report/scripts/acr/period.py +101 -0
  20. package/openclaw/skills/agent-cost-report/scripts/acr/prices.py +102 -0
  21. package/openclaw/skills/agent-cost-report/scripts/acr/render.py +516 -0
  22. package/openclaw/skills/agent-cost-report/scripts/acr/rollup.py +364 -0
  23. package/openclaw/skills/agent-cost-report/scripts/acr/rules.json +26 -0
  24. package/openclaw/skills/agent-cost-report/scripts/acr/rules.py +78 -0
  25. package/openclaw/skills/agent-cost-report/scripts/acr/sample.py +45 -0
  26. package/openclaw/skills/agent-cost-report/scripts/acr/snapshot.py +55 -0
  27. package/openclaw/skills/agent-cost-report/scripts/acr/sync.py +78 -0
  28. package/openclaw/skills/agent-cost-report/scripts/acr/transcripts.py +130 -0
  29. package/openclaw/skills/agent-cost-report/scripts/acr/wins.py +286 -0
  30. package/openclaw/skills/agent-cost-report/scripts/acr.py +206 -0
  31. package/openclaw/skills/agent-cost-report/scripts/tests/_db.py +49 -0
  32. package/openclaw/skills/agent-cost-report/scripts/tests/_paths.py +9 -0
  33. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/codex/sessions/2026/09/18/rollout-codex-1.jsonl +4 -0
  34. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/make_report_fixtures.py +46 -0
  35. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/prices_sample.json +6 -0
  36. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/projects/-workspace-proj-a/sess-aaaa.jsonl +8 -0
  37. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/projects/-workspace-proj-b/sess-bbbb.jsonl +1 -0
  38. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/report-1day.json +823 -0
  39. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/report-30day.json +2213 -0
  40. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/report-7day.json +1252 -0
  41. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/report-empty.json +536 -0
  42. package/openclaw/skills/agent-cost-report/scripts/tests/fixtures/report-session.json +662 -0
  43. package/openclaw/skills/agent-cost-report/scripts/tests/test_behavior.py +275 -0
  44. package/openclaw/skills/agent-cost-report/scripts/tests/test_devices.py +99 -0
  45. package/openclaw/skills/agent-cost-report/scripts/tests/test_labels.py +70 -0
  46. package/openclaw/skills/agent-cost-report/scripts/tests/test_measure.py +118 -0
  47. package/openclaw/skills/agent-cost-report/scripts/tests/test_period.py +91 -0
  48. package/openclaw/skills/agent-cost-report/scripts/tests/test_prices.py +126 -0
  49. package/openclaw/skills/agent-cost-report/scripts/tests/test_render.py +114 -0
  50. package/openclaw/skills/agent-cost-report/scripts/tests/test_rollup.py +264 -0
  51. package/openclaw/skills/agent-cost-report/scripts/tests/test_snapshot.py +64 -0
  52. package/openclaw/skills/agent-cost-report/scripts/tests/test_sync.py +52 -0
  53. package/openclaw/skills/agent-cost-report/scripts/tests/test_transcripts.py +154 -0
  54. package/openclaw/skills/agent-cost-report/scripts/tests/test_wins.py +181 -0
  55. package/package.json +1 -1
  56. package/plugin/.claude-plugin/plugin.json +1 -1
  57. package/plugin/.codex-plugin/plugin.json +1 -1
  58. package/plugin/package.json +1 -1
  59. package/plugin/scripts/context-generator.cjs +32 -29
  60. package/plugin/scripts/context-generator.cjs.map +3 -3
  61. package/plugin/scripts/mcp-server.cjs +2 -2
  62. package/plugin/scripts/mcp-server.cjs.map +1 -1
  63. package/plugin/scripts/server-service.cjs +3 -3
  64. package/plugin/scripts/server-service.cjs.map +1 -1
  65. package/plugin/scripts/transcript-watcher.cjs +3 -3
  66. package/plugin/scripts/transcript-watcher.cjs.map +1 -1
  67. package/plugin/scripts/worker-service.cjs +343 -321
  68. package/plugin/scripts/worker-service.cjs.map +3 -3
  69. package/plugin/skills/agent-cost-report/CHECKSUMS.txt +47 -0
  70. package/plugin/skills/agent-cost-report/SKILL.md +240 -0
  71. package/plugin/skills/agent-cost-report/VERIFICATION.md +106 -0
  72. package/plugin/skills/agent-cost-report/scripts/acr/__init__.py +1 -0
  73. package/plugin/skills/agent-cost-report/scripts/acr/behavior.py +313 -0
  74. package/plugin/skills/agent-cost-report/scripts/acr/classify.py +83 -0
  75. package/plugin/skills/agent-cost-report/scripts/acr/costs.py +121 -0
  76. package/plugin/skills/agent-cost-report/scripts/acr/devices.py +88 -0
  77. package/plugin/skills/agent-cost-report/scripts/acr/evidence.py +165 -0
  78. package/plugin/skills/agent-cost-report/scripts/acr/labels.py +112 -0
  79. package/plugin/skills/agent-cost-report/scripts/acr/measure.py +89 -0
  80. package/plugin/skills/agent-cost-report/scripts/acr/mistakes.py +321 -0
  81. package/plugin/skills/agent-cost-report/scripts/acr/patterns.py +394 -0
  82. package/plugin/skills/agent-cost-report/scripts/acr/period.py +101 -0
  83. package/plugin/skills/agent-cost-report/scripts/acr/prices.py +102 -0
  84. package/plugin/skills/agent-cost-report/scripts/acr/render.py +516 -0
  85. package/plugin/skills/agent-cost-report/scripts/acr/rollup.py +364 -0
  86. package/plugin/skills/agent-cost-report/scripts/acr/rules.json +26 -0
  87. package/plugin/skills/agent-cost-report/scripts/acr/rules.py +78 -0
  88. package/plugin/skills/agent-cost-report/scripts/acr/sample.py +45 -0
  89. package/plugin/skills/agent-cost-report/scripts/acr/snapshot.py +55 -0
  90. package/plugin/skills/agent-cost-report/scripts/acr/sync.py +78 -0
  91. package/plugin/skills/agent-cost-report/scripts/acr/transcripts.py +130 -0
  92. package/plugin/skills/agent-cost-report/scripts/acr/wins.py +286 -0
  93. package/plugin/skills/agent-cost-report/scripts/acr.py +206 -0
  94. package/plugin/skills/agent-cost-report/scripts/tests/_db.py +49 -0
  95. package/plugin/skills/agent-cost-report/scripts/tests/_paths.py +9 -0
  96. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/codex/sessions/2026/09/18/rollout-codex-1.jsonl +4 -0
  97. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/make_report_fixtures.py +46 -0
  98. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/prices_sample.json +6 -0
  99. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/projects/-workspace-proj-a/sess-aaaa.jsonl +8 -0
  100. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/projects/-workspace-proj-b/sess-bbbb.jsonl +1 -0
  101. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/report-1day.json +823 -0
  102. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/report-30day.json +2213 -0
  103. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/report-7day.json +1252 -0
  104. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/report-empty.json +536 -0
  105. package/plugin/skills/agent-cost-report/scripts/tests/fixtures/report-session.json +662 -0
  106. package/plugin/skills/agent-cost-report/scripts/tests/test_behavior.py +275 -0
  107. package/plugin/skills/agent-cost-report/scripts/tests/test_devices.py +99 -0
  108. package/plugin/skills/agent-cost-report/scripts/tests/test_labels.py +70 -0
  109. package/plugin/skills/agent-cost-report/scripts/tests/test_measure.py +118 -0
  110. package/plugin/skills/agent-cost-report/scripts/tests/test_period.py +91 -0
  111. package/plugin/skills/agent-cost-report/scripts/tests/test_prices.py +126 -0
  112. package/plugin/skills/agent-cost-report/scripts/tests/test_render.py +114 -0
  113. package/plugin/skills/agent-cost-report/scripts/tests/test_rollup.py +264 -0
  114. package/plugin/skills/agent-cost-report/scripts/tests/test_snapshot.py +64 -0
  115. package/plugin/skills/agent-cost-report/scripts/tests/test_sync.py +52 -0
  116. package/plugin/skills/agent-cost-report/scripts/tests/test_transcripts.py +154 -0
  117. package/plugin/skills/agent-cost-report/scripts/tests/test_wins.py +181 -0
  118. package/plugin/skills/agent-cost-report/verification/precision-2026-09-26.json +7 -0
@@ -0,0 +1,2213 @@
1
+ {
2
+ "attention": [],
3
+ "behavior": {
4
+ "author_tags": {
5
+ "bot": 0,
6
+ "human": 2,
7
+ "unknown": 0
8
+ },
9
+ "classifier": {
10
+ "cap_usd": 2.0,
11
+ "model": null,
12
+ "note": "off by default (G8); enable with --classify",
13
+ "ran": false,
14
+ "sampled_n": 0,
15
+ "spend_usd": null
16
+ },
17
+ "coverage": {
18
+ "box": "measured",
19
+ "grok_bot": "unavailable",
20
+ "mac": "unavailable (no Phase 5 export)"
21
+ },
22
+ "default_model": "anthropic/claude-sonnet-5",
23
+ "episodes": [],
24
+ "episodes_status": "measured",
25
+ "high_turns_n": 0,
26
+ "human_message_counts": "computed from human-tagged turns",
27
+ "label_sources": {},
28
+ "mistake_clusters": [],
29
+ "not_in_mistakes_line": "session-level keyword failure signals with no turn span stay in Details (2B.9)",
30
+ "outbound": {
31
+ "alex_minutes": null,
32
+ "incidents": 0,
33
+ "recipients": 0
34
+ },
35
+ "patterns": [
36
+ {
37
+ "agent_minutes": null,
38
+ "alex_minutes": 0,
39
+ "confidence": "medium",
40
+ "count": 0,
41
+ "count_basis": "heuristic",
42
+ "detection": "H",
43
+ "examples": [],
44
+ "failure_type": "Unnecessary escalation",
45
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
46
+ "high_usd": 0.0,
47
+ "key": "P1_invented_gates",
48
+ "low_usd": 0.0,
49
+ "name": "Invented human gates / asking instead of doing",
50
+ "never_answered_n": 0,
51
+ "overlaps": true,
52
+ "placement": "tile",
53
+ "source_ref": "metrics-ideas.md:16",
54
+ "unconfirmed_n": 0,
55
+ "unmeasured_n": 0,
56
+ "waiting_minutes": 0
57
+ },
58
+ {
59
+ "agent_minutes": null,
60
+ "alex_minutes": 0,
61
+ "confidence": "medium",
62
+ "count": 0,
63
+ "count_basis": "heuristic",
64
+ "detection": "H",
65
+ "examples": [],
66
+ "failure_type": "Regression",
67
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
68
+ "high_usd": 0.0,
69
+ "key": "P2_broke_things",
70
+ "low_usd": 0.0,
71
+ "name": "Broke working things",
72
+ "overlaps": true,
73
+ "placement": "tile",
74
+ "source_ref": "metrics-ideas.md:17",
75
+ "unmeasured_n": 0,
76
+ "waiting_minutes": null
77
+ },
78
+ {
79
+ "agent_minutes": null,
80
+ "alex_minutes": 0,
81
+ "confidence": "high",
82
+ "count": 0,
83
+ "count_basis": "heuristic",
84
+ "default_model": "anthropic/claude-sonnet-5",
85
+ "delta_usd": 0.0,
86
+ "detection": "H",
87
+ "examples": [],
88
+ "failure_type": "Model thrash",
89
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
90
+ "high_usd": 0.0,
91
+ "key": "P3_wrong_model",
92
+ "low_usd": 0.0,
93
+ "model_not_logged": 0,
94
+ "name": "Wrong or expensive model",
95
+ "overlaps": true,
96
+ "placement": "tile",
97
+ "source_ref": "metrics-ideas.md:18",
98
+ "unmeasured_n": 0,
99
+ "waiting_minutes": null
100
+ },
101
+ {
102
+ "agent_minutes": null,
103
+ "alex_minutes": 0,
104
+ "confidence": "medium",
105
+ "count": 0,
106
+ "count_basis": "heuristic",
107
+ "detection": "H",
108
+ "examples": [],
109
+ "failure_type": "Suboptimal path",
110
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
111
+ "high_usd": 0.0,
112
+ "key": "P4_over_engineering",
113
+ "low_usd": 0.0,
114
+ "name": "Over-engineering / overthinking",
115
+ "overlaps": true,
116
+ "placement": "details",
117
+ "source_ref": "metrics-ideas.md:19",
118
+ "unmeasured_n": 0,
119
+ "waiting_minutes": null
120
+ },
121
+ {
122
+ "agent_minutes": null,
123
+ "alex_minutes": 0,
124
+ "confidence": "medium",
125
+ "count": 0,
126
+ "count_basis": "heuristic",
127
+ "detection": "H",
128
+ "examples": [],
129
+ "failure_type": "Missed requirement",
130
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
131
+ "high_usd": 0.0,
132
+ "key": "P5_not_asked",
133
+ "low_usd": 0.0,
134
+ "name": "Did something not asked",
135
+ "overlaps": true,
136
+ "placement": "details",
137
+ "source_ref": "metrics-ideas.md:20",
138
+ "unmeasured_n": 0,
139
+ "waiting_minutes": null
140
+ },
141
+ {
142
+ "agent_minutes": null,
143
+ "alex_minutes": 0,
144
+ "confidence": "medium",
145
+ "count": 0,
146
+ "count_basis": "heuristic",
147
+ "detection": "H",
148
+ "examples": [],
149
+ "failure_type": "Premature completion",
150
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
151
+ "high_usd": 0.0,
152
+ "key": "P6_fake_output",
153
+ "low_usd": 0.0,
154
+ "name": "Fake or invented output",
155
+ "overlaps": true,
156
+ "placement": "tile",
157
+ "source_ref": "metrics-ideas.md:21",
158
+ "unmeasured_n": 0,
159
+ "waiting_minutes": null
160
+ },
161
+ {
162
+ "agent_minutes": null,
163
+ "alex_minutes": 0,
164
+ "confidence": "medium",
165
+ "count": 0,
166
+ "count_basis": "heuristic",
167
+ "detection": "H",
168
+ "examples": [],
169
+ "failure_type": "Premature completion",
170
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
171
+ "high_usd": 0.0,
172
+ "key": "P7_false_done",
173
+ "low_usd": 0.0,
174
+ "name": "Skipped steps / false done",
175
+ "overlaps": true,
176
+ "placement": "tile",
177
+ "source_ref": "metrics-ideas.md:22",
178
+ "unmeasured_n": 0,
179
+ "waiting_minutes": null
180
+ },
181
+ {
182
+ "agent_minutes": null,
183
+ "alex_minutes": 0,
184
+ "confidence": "medium",
185
+ "count": 0,
186
+ "count_basis": "heuristic",
187
+ "detection": "H",
188
+ "examples": [],
189
+ "failure_type": "Suboptimal path",
190
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
191
+ "high_usd": 0.0,
192
+ "key": "P8_wrong_tool",
193
+ "low_usd": 0.0,
194
+ "name": "Wrong tool, account, or contact",
195
+ "overlaps": true,
196
+ "placement": "details",
197
+ "source_ref": "metrics-ideas.md:23",
198
+ "unmeasured_n": 0,
199
+ "waiting_minutes": null
200
+ },
201
+ {
202
+ "agent_minutes": null,
203
+ "alex_minutes": 0,
204
+ "confidence": "high",
205
+ "cost_note": "incidents \u00d7 recipients, never dollars",
206
+ "count": 0,
207
+ "count_basis": "heuristic",
208
+ "detection": "H",
209
+ "examples": [],
210
+ "failure_type": "Unauthorized action",
211
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
212
+ "high_usd": null,
213
+ "incidents": 0,
214
+ "key": "P9_bad_outbound",
215
+ "low_usd": null,
216
+ "name": "Bad outbound",
217
+ "overlaps": true,
218
+ "placement": "details",
219
+ "recipients": 0,
220
+ "source_ref": "metrics-ideas.md:24",
221
+ "unmeasured_n": 0,
222
+ "waiting_minutes": null
223
+ },
224
+ {
225
+ "agent_minutes": null,
226
+ "alex_minutes": 0,
227
+ "confidence": "medium",
228
+ "count": 0,
229
+ "count_basis": "heuristic",
230
+ "detection": "H",
231
+ "examples": [],
232
+ "failure_type": "",
233
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
234
+ "high_usd": 0.0,
235
+ "key": "P10_memory_loss",
236
+ "low_usd": 0.0,
237
+ "name": "Memory or rule loss",
238
+ "overlaps": true,
239
+ "placement": "details",
240
+ "source_ref": "metrics-ideas.md:25",
241
+ "unmeasured_n": 0,
242
+ "waiting_minutes": null
243
+ },
244
+ {
245
+ "agent_minutes": null,
246
+ "alex_minutes": 0,
247
+ "confidence": "medium",
248
+ "cost_note": "Alex-minutes = words \u00f7 200; dollars only for a clarification round trip",
249
+ "count": 0,
250
+ "count_basis": "heuristic",
251
+ "detection": "H",
252
+ "examples": [],
253
+ "failure_type": "",
254
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
255
+ "high_usd": 0.0,
256
+ "key": "P11_jargon",
257
+ "low_usd": 0.0,
258
+ "name": "Jargon / walls of text",
259
+ "overlaps": true,
260
+ "placement": "details",
261
+ "source_ref": "metrics-ideas.md:26",
262
+ "unmeasured_n": 0,
263
+ "waiting_minutes": null
264
+ },
265
+ {
266
+ "agent_minutes": null,
267
+ "alex_minutes": 0,
268
+ "confidence": "medium",
269
+ "count": 0,
270
+ "count_basis": "heuristic",
271
+ "detection": "base detector; M attributes when it can",
272
+ "examples": [],
273
+ "failure_type": "",
274
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
275
+ "high_usd": 0.0,
276
+ "key": "P12_unclear",
277
+ "low_usd": 0.0,
278
+ "name": "Unclear cause",
279
+ "overlaps": true,
280
+ "placement": "details",
281
+ "source_ref": "metrics-ideas.md:27",
282
+ "unmeasured_n": 0,
283
+ "waiting_minutes": null
284
+ },
285
+ {
286
+ "agent_minutes": null,
287
+ "alex_minutes": 0,
288
+ "confidence": "high",
289
+ "count": 0,
290
+ "count_basis": "heuristic",
291
+ "detection": "H",
292
+ "error_chains": 0,
293
+ "examples": [],
294
+ "failure_type": "Recovery after miss",
295
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
296
+ "high_usd": 0.0,
297
+ "key": "S1_tool_errors",
298
+ "loops": 0,
299
+ "low_usd": 0.0,
300
+ "name": "Tool errors and retries",
301
+ "overlaps": true,
302
+ "placement": "details",
303
+ "recovered_usd": 0.0,
304
+ "source_ref": "plan 2B.3 supporting metric",
305
+ "unmeasured_n": 0,
306
+ "waiting_minutes": null
307
+ },
308
+ {
309
+ "agent_minutes": null,
310
+ "alex_minutes": 0,
311
+ "availability_unknown_n": 0,
312
+ "confidence": "medium",
313
+ "cost_note": "text only, not priced",
314
+ "count": 0,
315
+ "count_basis": "heuristic",
316
+ "detection": "H",
317
+ "examples": [],
318
+ "failure_type": "Hedging",
319
+ "high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
320
+ "high_usd": 0.0,
321
+ "key": "S2_hedging",
322
+ "low_usd": 0.0,
323
+ "name": "Hedging",
324
+ "overlaps": true,
325
+ "placement": "details",
326
+ "source_ref": "plan 2B.3 supporting metric",
327
+ "unmeasured_n": 0,
328
+ "waiting_minutes": null
329
+ }
330
+ ],
331
+ "permission_denials": {
332
+ "count": 0,
333
+ "examples": [],
334
+ "note": "blocked by a rule; not priced as agent waste"
335
+ },
336
+ "prompt_rows_n": 2,
337
+ "rule_effectiveness": [
338
+ {
339
+ "after": {
340
+ "episodes": 0,
341
+ "human_prompts": 0,
342
+ "per_100": null
343
+ },
344
+ "before": {
345
+ "episodes": 0,
346
+ "human_prompts": 0,
347
+ "per_100": null
348
+ },
349
+ "card": false,
350
+ "episode_ids_after": [],
351
+ "landed_pt": "2026-09-04",
352
+ "n_days": 7,
353
+ "name": "CS email always as Barb on Alex's behalf, never as Alex",
354
+ "pattern": "P8_wrong_tool",
355
+ "rule_key": "cs_email_as_barb",
356
+ "source": "rules.json",
357
+ "verdict": "not_enough_data"
358
+ },
359
+ {
360
+ "after": {
361
+ "episodes": 0,
362
+ "human_prompts": 0,
363
+ "per_100": null
364
+ },
365
+ "before": {
366
+ "episodes": 0,
367
+ "human_prompts": 0,
368
+ "per_100": null
369
+ },
370
+ "card": false,
371
+ "episode_ids_after": [],
372
+ "landed_pt": "2026-09-07",
373
+ "n_days": 7,
374
+ "name": "Never act while Alex is cursing; wait, then confirm",
375
+ "pattern": "P5_not_asked",
376
+ "rule_key": "never_act_while_cursing",
377
+ "source": "rules.json",
378
+ "verdict": "not_enough_data"
379
+ },
380
+ {
381
+ "after": {
382
+ "episodes": 0,
383
+ "human_prompts": 0,
384
+ "per_100": null
385
+ },
386
+ "before": {
387
+ "episodes": 0,
388
+ "human_prompts": 0,
389
+ "per_100": null
390
+ },
391
+ "card": false,
392
+ "episode_ids_after": [],
393
+ "landed_pt": "2026-09-08",
394
+ "n_days": 7,
395
+ "name": "Never use/suggest Zapier",
396
+ "pattern": "P8_wrong_tool",
397
+ "rule_key": "never_zapier",
398
+ "source": "rules.json",
399
+ "verdict": "not_enough_data"
400
+ },
401
+ {
402
+ "after": {
403
+ "episodes": 0,
404
+ "human_prompts": 0,
405
+ "per_100": null
406
+ },
407
+ "before": {
408
+ "episodes": 0,
409
+ "human_prompts": 0,
410
+ "per_100": null
411
+ },
412
+ "card": false,
413
+ "episode_ids_after": [],
414
+ "landed_pt": "2026-09-08",
415
+ "n_days": 7,
416
+ "name": "Delegate to subagents before doing work on Grok (budget overspent)",
417
+ "pattern": "P3_wrong_model",
418
+ "rule_key": "delegate_before_grok",
419
+ "source": "rules.json",
420
+ "verdict": "not_enough_data"
421
+ },
422
+ {
423
+ "after": {
424
+ "episodes": 0,
425
+ "human_prompts": 0,
426
+ "per_100": null
427
+ },
428
+ "before": {
429
+ "episodes": 0,
430
+ "human_prompts": 0,
431
+ "per_100": null
432
+ },
433
+ "card": false,
434
+ "episode_ids_after": [],
435
+ "landed_pt": "2026-09-08",
436
+ "n_days": 7,
437
+ "name": "Never give Alex a file path, only a Notion link",
438
+ "pattern": "P11_jargon",
439
+ "rule_key": "notion_link_not_path",
440
+ "source": "rules.json",
441
+ "verdict": "not_enough_data"
442
+ },
443
+ {
444
+ "after": {
445
+ "episodes": 0,
446
+ "human_prompts": 0,
447
+ "per_100": null
448
+ },
449
+ "before": {
450
+ "episodes": 0,
451
+ "human_prompts": 0,
452
+ "per_100": null
453
+ },
454
+ "card": false,
455
+ "episode_ids_after": [],
456
+ "landed_pt": "2026-09-09",
457
+ "n_days": 7,
458
+ "name": "Cursing protocol: STOP, THINK, write what he wants, ask yes/no/modify",
459
+ "pattern": "P5_not_asked",
460
+ "rule_key": "cursing_protocol",
461
+ "source": "rules.json",
462
+ "verdict": "not_enough_data"
463
+ },
464
+ {
465
+ "after": {
466
+ "episodes": 0,
467
+ "human_prompts": 0,
468
+ "per_100": null
469
+ },
470
+ "before": {
471
+ "episodes": 0,
472
+ "human_prompts": 0,
473
+ "per_100": null
474
+ },
475
+ "card": false,
476
+ "episode_ids_after": [],
477
+ "landed_pt": "2026-09-09",
478
+ "n_days": 7,
479
+ "name": "No computer/browser for money digs (Barb)",
480
+ "pattern": "P8_wrong_tool",
481
+ "rule_key": "no_browser_money_digs",
482
+ "source": "rules.json",
483
+ "verdict": "not_enough_data"
484
+ },
485
+ {
486
+ "after": {
487
+ "episodes": 0,
488
+ "human_prompts": 0,
489
+ "per_100": null
490
+ },
491
+ "before": {
492
+ "episodes": 0,
493
+ "human_prompts": 0,
494
+ "per_100": null
495
+ },
496
+ "card": false,
497
+ "episode_ids_after": [],
498
+ "landed_pt": "2026-09-10",
499
+ "n_days": 7,
500
+ "name": "No plan-theater / invented Blocked-on-Alex or initials gates",
501
+ "pattern": "P1_invented_gates",
502
+ "rule_key": "no_invented_gates",
503
+ "source": "rules.json",
504
+ "verdict": "not_enough_data"
505
+ },
506
+ {
507
+ "after": {
508
+ "episodes": 0,
509
+ "human_prompts": 0,
510
+ "per_100": null
511
+ },
512
+ "before": {
513
+ "episodes": 0,
514
+ "human_prompts": 0,
515
+ "per_100": null
516
+ },
517
+ "card": false,
518
+ "episode_ids_after": [],
519
+ "landed_pt": "2026-09-10",
520
+ "n_days": 7,
521
+ "name": "Prioritizer may npm publish (no human handoff)",
522
+ "pattern": "P1_invented_gates",
523
+ "rule_key": "prioritizer_may_publish",
524
+ "source": "rules.json",
525
+ "verdict": "not_enough_data"
526
+ },
527
+ {
528
+ "after": {
529
+ "episodes": 0,
530
+ "human_prompts": 0,
531
+ "per_100": null
532
+ },
533
+ "before": {
534
+ "episodes": 0,
535
+ "human_prompts": 0,
536
+ "per_100": null
537
+ },
538
+ "card": false,
539
+ "episode_ids_after": [],
540
+ "landed_pt": "2026-09-10",
541
+ "n_days": 7,
542
+ "name": "Never impersonate Alex to humans",
543
+ "pattern": "P9_bad_outbound",
544
+ "rule_key": "never_impersonate_alex",
545
+ "source": "rules.json",
546
+ "verdict": "not_enough_data"
547
+ },
548
+ {
549
+ "after": {
550
+ "episodes": 0,
551
+ "human_prompts": 0,
552
+ "per_100": null
553
+ },
554
+ "before": {
555
+ "episodes": 0,
556
+ "human_prompts": 0,
557
+ "per_100": null
558
+ },
559
+ "card": false,
560
+ "episode_ids_after": [],
561
+ "landed_pt": "2026-09-10",
562
+ "n_days": 7,
563
+ "name": "Investor outbound frozen after thin blast",
564
+ "pattern": "P9_bad_outbound",
565
+ "rule_key": "investor_outbound_frozen",
566
+ "source": "rules.json",
567
+ "verdict": "not_enough_data"
568
+ },
569
+ {
570
+ "after": {
571
+ "episodes": 0,
572
+ "human_prompts": 0,
573
+ "per_100": null
574
+ },
575
+ "before": {
576
+ "episodes": 0,
577
+ "human_prompts": 0,
578
+ "per_100": null
579
+ },
580
+ "card": false,
581
+ "episode_ids_after": [],
582
+ "landed_pt": "2026-09-10",
583
+ "n_days": 7,
584
+ "name": "Real AJ contact is aj@aicollective.com",
585
+ "pattern": "P8_wrong_tool",
586
+ "rule_key": "real_aj_contact",
587
+ "source": "rules.json",
588
+ "verdict": "not_enough_data"
589
+ },
590
+ {
591
+ "after": {
592
+ "episodes": 0,
593
+ "human_prompts": 0,
594
+ "per_100": null
595
+ },
596
+ "before": {
597
+ "episodes": 0,
598
+ "human_prompts": 0,
599
+ "per_100": null
600
+ },
601
+ "card": false,
602
+ "episode_ids_after": [],
603
+ "landed_pt": "2026-09-10",
604
+ "n_days": 7,
605
+ "name": "All reports in plain English",
606
+ "pattern": "P11_jargon",
607
+ "rule_key": "plain_english_reports",
608
+ "source": "rules.json",
609
+ "verdict": "not_enough_data"
610
+ },
611
+ {
612
+ "after": {
613
+ "episodes": 0,
614
+ "human_prompts": 0,
615
+ "per_100": null
616
+ },
617
+ "before": {
618
+ "episodes": 0,
619
+ "human_prompts": 0,
620
+ "per_100": null
621
+ },
622
+ "card": false,
623
+ "episode_ids_after": [],
624
+ "landed_pt": "2026-09-10",
625
+ "n_days": 7,
626
+ "name": "Bug-fix make-plan uses Codex gpt-6-astra; compare plans",
627
+ "pattern": "P3_wrong_model",
628
+ "rule_key": "bugfix_plan_codex",
629
+ "source": "rules.json",
630
+ "verdict": "not_enough_data"
631
+ },
632
+ {
633
+ "after": {
634
+ "episodes": 0,
635
+ "human_prompts": 1,
636
+ "per_100": null
637
+ },
638
+ "before": {
639
+ "episodes": 0,
640
+ "human_prompts": 0,
641
+ "per_100": null
642
+ },
643
+ "card": false,
644
+ "episode_ids_after": [],
645
+ "landed_pt": "2026-09-12",
646
+ "n_days": 7,
647
+ "name": "All house automations OFF (credit burn)",
648
+ "pattern": "P3_wrong_model",
649
+ "rule_key": "automations_off",
650
+ "source": "rules.json",
651
+ "verdict": "not_enough_data"
652
+ },
653
+ {
654
+ "after": {
655
+ "episodes": 0,
656
+ "human_prompts": 2,
657
+ "per_100": null
658
+ },
659
+ "before": {
660
+ "episodes": 0,
661
+ "human_prompts": 0,
662
+ "per_100": null
663
+ },
664
+ "card": false,
665
+ "episode_ids_after": [],
666
+ "landed_pt": "2026-09-14",
667
+ "n_days": 7,
668
+ "name": "Investor prep = person intel only, no lectures",
669
+ "pattern": "P11_jargon",
670
+ "rule_key": "investor_prep_person_intel",
671
+ "source": "rules.json",
672
+ "verdict": "not_enough_data"
673
+ },
674
+ {
675
+ "after": {
676
+ "episodes": 0,
677
+ "human_prompts": 2,
678
+ "per_100": null
679
+ },
680
+ "before": {
681
+ "episodes": 0,
682
+ "human_prompts": 0,
683
+ "per_100": null
684
+ },
685
+ "card": false,
686
+ "episode_ids_after": [],
687
+ "landed_pt": "2026-09-15",
688
+ "n_days": 7,
689
+ "name": "Seats escalate to Prioritizer only, never ping Alex",
690
+ "pattern": "P1_invented_gates",
691
+ "rule_key": "seats_escalate_prioritizer",
692
+ "source": "rules.json",
693
+ "verdict": "not_enough_data"
694
+ },
695
+ {
696
+ "after": {
697
+ "episodes": 0,
698
+ "human_prompts": 0,
699
+ "per_100": null
700
+ },
701
+ "before": {
702
+ "episodes": 0,
703
+ "human_prompts": 2,
704
+ "per_100": null
705
+ },
706
+ "card": false,
707
+ "episode_ids_after": [],
708
+ "landed_pt": "2026-09-22",
709
+ "n_days": 7,
710
+ "name": "Warm Google: click Continue with Google yourself",
711
+ "pattern": "P1_invented_gates",
712
+ "rule_key": "warm_google_click",
713
+ "source": "rules.json",
714
+ "verdict": "not_enough_data"
715
+ },
716
+ {
717
+ "after": {
718
+ "episodes": 0,
719
+ "human_prompts": 0,
720
+ "per_100": null
721
+ },
722
+ "before": {
723
+ "episodes": 0,
724
+ "human_prompts": 2,
725
+ "per_100": null
726
+ },
727
+ "card": false,
728
+ "episode_ids_after": [],
729
+ "landed_pt": "2026-09-23",
730
+ "n_days": 7,
731
+ "name": "Human gates + plain English + try-the-gate; deploys/version bumps are not Alex gates",
732
+ "pattern": "P1_invented_gates",
733
+ "rule_key": "human_gates_plain_english",
734
+ "source": "rules.json",
735
+ "verdict": "not_enough_data"
736
+ },
737
+ {
738
+ "after": {
739
+ "episodes": 0,
740
+ "human_prompts": 0,
741
+ "per_100": null
742
+ },
743
+ "before": {
744
+ "episodes": 0,
745
+ "human_prompts": 2,
746
+ "per_100": null
747
+ },
748
+ "card": false,
749
+ "episode_ids_after": [],
750
+ "landed_pt": "2026-09-23",
751
+ "n_days": 7,
752
+ "name": "Global ship gate: make-plan -> Alex greens -> do",
753
+ "pattern": "P7_false_done",
754
+ "rule_key": "global_ship_gate",
755
+ "source": "rules.json",
756
+ "verdict": "not_enough_data"
757
+ },
758
+ {
759
+ "after": {
760
+ "episodes": 0,
761
+ "human_prompts": 0,
762
+ "per_100": null
763
+ },
764
+ "before": {
765
+ "episodes": 0,
766
+ "human_prompts": 2,
767
+ "per_100": null
768
+ },
769
+ "card": false,
770
+ "episode_ids_after": [],
771
+ "landed_pt": "2026-09-23",
772
+ "n_days": 7,
773
+ "name": "Cloudflare account = info@copterlabs.com",
774
+ "pattern": "P8_wrong_tool",
775
+ "rule_key": "cloudflare_account",
776
+ "source": "rules.json",
777
+ "verdict": "not_enough_data"
778
+ }
779
+ ],
780
+ "scan": {
781
+ "files_seen": 0
782
+ },
783
+ "session_tags": {},
784
+ "tagger_ran": true,
785
+ "unconfirmed": {
786
+ "P1_candidates": []
787
+ },
788
+ "union_high_usd": 0.0,
789
+ "union_low_usd": 0.0,
790
+ "union_turns_n": 0
791
+ },
792
+ "by_category": [
793
+ {
794
+ "active_minutes": 6.0,
795
+ "agent_estimated_usd": 0.0,
796
+ "category": "Bug fix",
797
+ "extrapolated_usd": 2.44,
798
+ "finished": 1,
799
+ "recovery_usd": 0.0,
800
+ "sessions": 1,
801
+ "wasted_usd": 0.0
802
+ },
803
+ {
804
+ "active_minutes": 6.0,
805
+ "agent_estimated_usd": 1.5,
806
+ "category": "Investigation",
807
+ "extrapolated_usd": 0.0,
808
+ "finished": 0,
809
+ "recovery_usd": 0.0,
810
+ "sessions": 1,
811
+ "wasted_usd": 0.0
812
+ },
813
+ {
814
+ "active_minutes": 42.0,
815
+ "agent_estimated_usd": 0.09,
816
+ "category": "Feature",
817
+ "extrapolated_usd": 0.0,
818
+ "finished": 1,
819
+ "recovery_usd": 0.0,
820
+ "sessions": 1,
821
+ "wasted_usd": 0.0
822
+ }
823
+ ],
824
+ "by_day": [
825
+ {
826
+ "agent_calls": 0,
827
+ "agent_estimated_usd": 0.0,
828
+ "day_pt": "2026-09-01",
829
+ "events": 0,
830
+ "extrapolated_usd": 0.0,
831
+ "finished_outcomes": 0,
832
+ "no_agent_work": true,
833
+ "sessions_started": 0,
834
+ "ship_events": 0,
835
+ "tokens": 0
836
+ },
837
+ {
838
+ "agent_calls": 0,
839
+ "agent_estimated_usd": 0.0,
840
+ "day_pt": "2026-09-02",
841
+ "events": 0,
842
+ "extrapolated_usd": 0.0,
843
+ "finished_outcomes": 0,
844
+ "no_agent_work": true,
845
+ "sessions_started": 0,
846
+ "ship_events": 0,
847
+ "tokens": 0
848
+ },
849
+ {
850
+ "agent_calls": 0,
851
+ "agent_estimated_usd": 0.0,
852
+ "day_pt": "2026-09-03",
853
+ "events": 0,
854
+ "extrapolated_usd": 0.0,
855
+ "finished_outcomes": 0,
856
+ "no_agent_work": true,
857
+ "sessions_started": 0,
858
+ "ship_events": 0,
859
+ "tokens": 0
860
+ },
861
+ {
862
+ "agent_calls": 0,
863
+ "agent_estimated_usd": 0.0,
864
+ "day_pt": "2026-09-04",
865
+ "events": 0,
866
+ "extrapolated_usd": 0.0,
867
+ "finished_outcomes": 0,
868
+ "no_agent_work": true,
869
+ "sessions_started": 0,
870
+ "ship_events": 0,
871
+ "tokens": 0
872
+ },
873
+ {
874
+ "agent_calls": 0,
875
+ "agent_estimated_usd": 0.0,
876
+ "day_pt": "2026-09-05",
877
+ "events": 0,
878
+ "extrapolated_usd": 0.0,
879
+ "finished_outcomes": 0,
880
+ "no_agent_work": true,
881
+ "sessions_started": 0,
882
+ "ship_events": 0,
883
+ "tokens": 0
884
+ },
885
+ {
886
+ "agent_calls": 0,
887
+ "agent_estimated_usd": 0.0,
888
+ "day_pt": "2026-09-06",
889
+ "events": 0,
890
+ "extrapolated_usd": 0.0,
891
+ "finished_outcomes": 0,
892
+ "no_agent_work": true,
893
+ "sessions_started": 0,
894
+ "ship_events": 0,
895
+ "tokens": 0
896
+ },
897
+ {
898
+ "agent_calls": 0,
899
+ "agent_estimated_usd": 0.0,
900
+ "day_pt": "2026-09-07",
901
+ "events": 0,
902
+ "extrapolated_usd": 0.0,
903
+ "finished_outcomes": 0,
904
+ "no_agent_work": true,
905
+ "sessions_started": 0,
906
+ "ship_events": 0,
907
+ "tokens": 0
908
+ },
909
+ {
910
+ "agent_calls": 0,
911
+ "agent_estimated_usd": 0.0,
912
+ "day_pt": "2026-09-08",
913
+ "events": 0,
914
+ "extrapolated_usd": 0.0,
915
+ "finished_outcomes": 0,
916
+ "no_agent_work": true,
917
+ "sessions_started": 0,
918
+ "ship_events": 0,
919
+ "tokens": 0
920
+ },
921
+ {
922
+ "agent_calls": 0,
923
+ "agent_estimated_usd": 0.0,
924
+ "day_pt": "2026-09-09",
925
+ "events": 0,
926
+ "extrapolated_usd": 0.0,
927
+ "finished_outcomes": 0,
928
+ "no_agent_work": true,
929
+ "sessions_started": 0,
930
+ "ship_events": 0,
931
+ "tokens": 0
932
+ },
933
+ {
934
+ "agent_calls": 0,
935
+ "agent_estimated_usd": 0.0,
936
+ "day_pt": "2026-09-10",
937
+ "events": 0,
938
+ "extrapolated_usd": 0.0,
939
+ "finished_outcomes": 0,
940
+ "no_agent_work": true,
941
+ "sessions_started": 0,
942
+ "ship_events": 0,
943
+ "tokens": 0
944
+ },
945
+ {
946
+ "agent_calls": 0,
947
+ "agent_estimated_usd": 0.0,
948
+ "day_pt": "2026-09-11",
949
+ "events": 0,
950
+ "extrapolated_usd": 0.0,
951
+ "finished_outcomes": 0,
952
+ "no_agent_work": true,
953
+ "sessions_started": 0,
954
+ "ship_events": 0,
955
+ "tokens": 0
956
+ },
957
+ {
958
+ "agent_calls": 0,
959
+ "agent_estimated_usd": 0.0,
960
+ "day_pt": "2026-09-12",
961
+ "events": 0,
962
+ "extrapolated_usd": 0.0,
963
+ "finished_outcomes": 0,
964
+ "no_agent_work": true,
965
+ "sessions_started": 0,
966
+ "ship_events": 0,
967
+ "tokens": 0
968
+ },
969
+ {
970
+ "agent_calls": 0,
971
+ "agent_estimated_usd": 0.0,
972
+ "day_pt": "2026-09-13",
973
+ "events": 0,
974
+ "extrapolated_usd": 0.0,
975
+ "finished_outcomes": 0,
976
+ "no_agent_work": true,
977
+ "sessions_started": 0,
978
+ "ship_events": 0,
979
+ "tokens": 0
980
+ },
981
+ {
982
+ "agent_calls": 0,
983
+ "agent_estimated_usd": 0.0,
984
+ "day_pt": "2026-09-14",
985
+ "events": 0,
986
+ "extrapolated_usd": 0.0,
987
+ "finished_outcomes": 0,
988
+ "no_agent_work": true,
989
+ "sessions_started": 0,
990
+ "ship_events": 0,
991
+ "tokens": 0
992
+ },
993
+ {
994
+ "agent_calls": 0,
995
+ "agent_estimated_usd": 0.0,
996
+ "day_pt": "2026-09-15",
997
+ "events": 0,
998
+ "extrapolated_usd": 0.0,
999
+ "finished_outcomes": 0,
1000
+ "no_agent_work": true,
1001
+ "sessions_started": 0,
1002
+ "ship_events": 0,
1003
+ "tokens": 0
1004
+ },
1005
+ {
1006
+ "agent_calls": 0,
1007
+ "agent_estimated_usd": 0.0,
1008
+ "day_pt": "2026-09-16",
1009
+ "events": 0,
1010
+ "extrapolated_usd": 0.0,
1011
+ "finished_outcomes": 0,
1012
+ "no_agent_work": true,
1013
+ "sessions_started": 0,
1014
+ "ship_events": 0,
1015
+ "tokens": 0
1016
+ },
1017
+ {
1018
+ "agent_calls": 0,
1019
+ "agent_estimated_usd": 0.0,
1020
+ "day_pt": "2026-09-17",
1021
+ "events": 0,
1022
+ "extrapolated_usd": 0.0,
1023
+ "finished_outcomes": 0,
1024
+ "no_agent_work": true,
1025
+ "sessions_started": 0,
1026
+ "ship_events": 0,
1027
+ "tokens": 0
1028
+ },
1029
+ {
1030
+ "agent_calls": 2,
1031
+ "agent_estimated_usd": 0.09,
1032
+ "day_pt": "2026-09-18",
1033
+ "events": 13,
1034
+ "extrapolated_usd": 0.0,
1035
+ "finished_outcomes": 1,
1036
+ "no_agent_work": false,
1037
+ "sessions_started": 2,
1038
+ "ship_events": 1,
1039
+ "tokens": 55200
1040
+ },
1041
+ {
1042
+ "agent_calls": 1,
1043
+ "agent_estimated_usd": 1.5,
1044
+ "day_pt": "2026-09-19",
1045
+ "events": 9,
1046
+ "extrapolated_usd": 2.44,
1047
+ "finished_outcomes": 1,
1048
+ "no_agent_work": false,
1049
+ "sessions_started": 2,
1050
+ "ship_events": 0,
1051
+ "tokens": 110000
1052
+ },
1053
+ {
1054
+ "agent_calls": 1,
1055
+ "agent_estimated_usd": 0.0,
1056
+ "day_pt": "2026-09-20",
1057
+ "events": 0,
1058
+ "extrapolated_usd": 0.0,
1059
+ "finished_outcomes": 0,
1060
+ "no_agent_work": false,
1061
+ "sessions_started": 0,
1062
+ "ship_events": 0,
1063
+ "tokens": 110
1064
+ },
1065
+ {
1066
+ "agent_calls": 0,
1067
+ "agent_estimated_usd": 0.0,
1068
+ "day_pt": "2026-09-21",
1069
+ "events": 0,
1070
+ "extrapolated_usd": 0.0,
1071
+ "finished_outcomes": 0,
1072
+ "no_agent_work": true,
1073
+ "sessions_started": 0,
1074
+ "ship_events": 0,
1075
+ "tokens": 0
1076
+ },
1077
+ {
1078
+ "agent_calls": 0,
1079
+ "agent_estimated_usd": 0.0,
1080
+ "day_pt": "2026-09-22",
1081
+ "events": 0,
1082
+ "extrapolated_usd": 0.0,
1083
+ "finished_outcomes": 0,
1084
+ "no_agent_work": true,
1085
+ "sessions_started": 0,
1086
+ "ship_events": 0,
1087
+ "tokens": 0
1088
+ },
1089
+ {
1090
+ "agent_calls": 0,
1091
+ "agent_estimated_usd": 0.0,
1092
+ "day_pt": "2026-09-23",
1093
+ "events": 0,
1094
+ "extrapolated_usd": 0.0,
1095
+ "finished_outcomes": 0,
1096
+ "no_agent_work": true,
1097
+ "sessions_started": 0,
1098
+ "ship_events": 0,
1099
+ "tokens": 0
1100
+ },
1101
+ {
1102
+ "agent_calls": 0,
1103
+ "agent_estimated_usd": 0.0,
1104
+ "day_pt": "2026-09-24",
1105
+ "events": 0,
1106
+ "extrapolated_usd": 0.0,
1107
+ "finished_outcomes": 0,
1108
+ "no_agent_work": true,
1109
+ "sessions_started": 0,
1110
+ "ship_events": 0,
1111
+ "tokens": 0
1112
+ },
1113
+ {
1114
+ "agent_calls": 0,
1115
+ "agent_estimated_usd": 0.0,
1116
+ "day_pt": "2026-09-25",
1117
+ "events": 0,
1118
+ "extrapolated_usd": 0.0,
1119
+ "finished_outcomes": 0,
1120
+ "no_agent_work": true,
1121
+ "sessions_started": 0,
1122
+ "ship_events": 0,
1123
+ "tokens": 0
1124
+ },
1125
+ {
1126
+ "agent_calls": 0,
1127
+ "agent_estimated_usd": 0.0,
1128
+ "day_pt": "2026-09-26",
1129
+ "events": 0,
1130
+ "extrapolated_usd": 0.0,
1131
+ "finished_outcomes": 0,
1132
+ "no_agent_work": true,
1133
+ "sessions_started": 0,
1134
+ "ship_events": 0,
1135
+ "tokens": 0
1136
+ },
1137
+ {
1138
+ "agent_calls": 0,
1139
+ "agent_estimated_usd": 0.0,
1140
+ "day_pt": "2026-09-27",
1141
+ "events": 0,
1142
+ "extrapolated_usd": 0.0,
1143
+ "finished_outcomes": 0,
1144
+ "no_agent_work": true,
1145
+ "sessions_started": 0,
1146
+ "ship_events": 0,
1147
+ "tokens": 0
1148
+ },
1149
+ {
1150
+ "agent_calls": 0,
1151
+ "agent_estimated_usd": 0.0,
1152
+ "day_pt": "2026-09-28",
1153
+ "events": 0,
1154
+ "extrapolated_usd": 0.0,
1155
+ "finished_outcomes": 0,
1156
+ "no_agent_work": true,
1157
+ "sessions_started": 0,
1158
+ "ship_events": 0,
1159
+ "tokens": 0
1160
+ },
1161
+ {
1162
+ "agent_calls": 0,
1163
+ "agent_estimated_usd": 0.0,
1164
+ "day_pt": "2026-09-29",
1165
+ "events": 0,
1166
+ "extrapolated_usd": 0.0,
1167
+ "finished_outcomes": 0,
1168
+ "no_agent_work": true,
1169
+ "sessions_started": 0,
1170
+ "ship_events": 0,
1171
+ "tokens": 0
1172
+ },
1173
+ {
1174
+ "agent_calls": 0,
1175
+ "agent_estimated_usd": 0.0,
1176
+ "day_pt": "2026-09-30",
1177
+ "events": 0,
1178
+ "extrapolated_usd": 0.0,
1179
+ "finished_outcomes": 0,
1180
+ "no_agent_work": true,
1181
+ "sessions_started": 0,
1182
+ "ship_events": 0,
1183
+ "tokens": 0
1184
+ }
1185
+ ],
1186
+ "by_device": [
1187
+ {
1188
+ "agent_estimated_usd": 1.59,
1189
+ "device": "local",
1190
+ "extrapolated_usd": 0.0,
1191
+ "id_hash": "local",
1192
+ "sessions": 2
1193
+ },
1194
+ {
1195
+ "agent_estimated_usd": 0.0,
1196
+ "device": "remote-1",
1197
+ "extrapolated_usd": 2.44,
1198
+ "id_hash": "41cad633",
1199
+ "sessions": 1
1200
+ }
1201
+ ],
1202
+ "by_model": [
1203
+ {
1204
+ "agent_estimated_usd": 1.59,
1205
+ "cache_read": 50000,
1206
+ "cache_write_1h": 1000,
1207
+ "cache_write_5m": 2000,
1208
+ "calls": 4,
1209
+ "input": 102100,
1210
+ "model": "claude-fable-5-1",
1211
+ "output": 10210,
1212
+ "priced": true,
1213
+ "prices_usd_per_mtok": {
1214
+ "cache_read": 0.25,
1215
+ "cache_write": 12.5,
1216
+ "cache_write_1h": 20.0,
1217
+ "input": 10.0,
1218
+ "key": "anthropic/claude-fable-5.1",
1219
+ "output": 50.0,
1220
+ "price_source": {
1221
+ "cache_read": "listed",
1222
+ "cache_write": "listed",
1223
+ "cache_write_1h": "input*2"
1224
+ }
1225
+ },
1226
+ "source": "claude-code",
1227
+ "unpriced_calls": 0
1228
+ }
1229
+ ],
1230
+ "devices": [
1231
+ {
1232
+ "device": "local",
1233
+ "id_hash": "local"
1234
+ },
1235
+ {
1236
+ "device": "remote-1",
1237
+ "id_hash": "41cad633"
1238
+ }
1239
+ ],
1240
+ "failure_economics": [
1241
+ {
1242
+ "attributed_usd": 1.5,
1243
+ "failure_type": "Recovery after miss",
1244
+ "recovery_usd": 0.0,
1245
+ "sessions": 1,
1246
+ "wasted_usd": 0.0,
1247
+ "work_item_ids": [
1248
+ "WI-4"
1249
+ ]
1250
+ }
1251
+ ],
1252
+ "generated_at_pt": "2026-09-25 12:00 PT",
1253
+ "labels": {
1254
+ "reviewed": 0,
1255
+ "total": 4
1256
+ },
1257
+ "line_items": [
1258
+ {
1259
+ "active_minutes": 42.0,
1260
+ "agent_calls": 2,
1261
+ "agent_tokens": {
1262
+ "cache_read": 50000,
1263
+ "cache_write_1h": 1000,
1264
+ "cache_write_5m": 2000,
1265
+ "input": 2000,
1266
+ "output": 200
1267
+ },
1268
+ "attributed_usd": 0.09,
1269
+ "behavior_counts": {},
1270
+ "category": "Feature",
1271
+ "confidence": "high",
1272
+ "content_session_id": "cs1",
1273
+ "cost_basis": "estimated_usage",
1274
+ "cost_estimated": 0.09,
1275
+ "cost_extrapolated": null,
1276
+ "cost_measured": "unavailable",
1277
+ "cost_x1e6": 87500,
1278
+ "date_pt": "2026-09-18",
1279
+ "device": [
1280
+ "local"
1281
+ ],
1282
+ "evidence_ids": [
1283
+ 1,
1284
+ 2,
1285
+ 3,
1286
+ 4
1287
+ ],
1288
+ "extrapolated_x1e6": 0,
1289
+ "failure_signals": [],
1290
+ "failure_type": "",
1291
+ "has_transcript": true,
1292
+ "label_source": "keyword",
1293
+ "model": "claude-fable-5-1",
1294
+ "model_prices_usd_per_mtok": {
1295
+ "cache_read": 0.25,
1296
+ "cache_write": 12.5,
1297
+ "cache_write_1h": 20.0,
1298
+ "input": 10.0,
1299
+ "key": "anthropic/claude-fable-5.1",
1300
+ "output": 50.0,
1301
+ "price_source": {
1302
+ "cache_read": "listed",
1303
+ "cache_write": "listed",
1304
+ "cache_write_1h": "input*2"
1305
+ }
1306
+ },
1307
+ "notes": "shipped; 4 observations, 1 summaries, 1 prompts; tokens measured from the transcript on this box",
1308
+ "observations": 4,
1309
+ "observer_tokens": 12000,
1310
+ "platform": "claude",
1311
+ "productive_cost": 0.09,
1312
+ "project": "claude-mem",
1313
+ "recommended_action": "",
1314
+ "recovery_cost": 0.0,
1315
+ "risk_exposure": "none",
1316
+ "scope": "period",
1317
+ "session_ids": [
1318
+ "m1"
1319
+ ],
1320
+ "session_status": "completed",
1321
+ "ship_events": 1,
1322
+ "ship_titles": [
1323
+ "PR #4125 merged to main"
1324
+ ],
1325
+ "status": "shipped",
1326
+ "summaries": 1,
1327
+ "summary_ids": [
1328
+ 1
1329
+ ],
1330
+ "title": "implement the rollup",
1331
+ "trivial": false,
1332
+ "unpriced_calls": 0,
1333
+ "wasted_cost": 0.0,
1334
+ "work_category": "Feature",
1335
+ "work_item_id": "WI-1",
1336
+ "worktree": ""
1337
+ },
1338
+ {
1339
+ "active_minutes": 0,
1340
+ "agent_calls": 0,
1341
+ "agent_tokens": {
1342
+ "cache_read": 0,
1343
+ "cache_write_1h": 0,
1344
+ "cache_write_5m": 0,
1345
+ "input": 0,
1346
+ "output": 0
1347
+ },
1348
+ "attributed_usd": 0.0,
1349
+ "behavior_counts": {},
1350
+ "category": "Investigation",
1351
+ "confidence": "low",
1352
+ "content_session_id": "cs3",
1353
+ "cost_basis": "extrapolated",
1354
+ "cost_estimated": null,
1355
+ "cost_extrapolated": 0.0,
1356
+ "cost_measured": "unavailable",
1357
+ "cost_x1e6": 0,
1358
+ "date_pt": "2026-09-18",
1359
+ "device": [],
1360
+ "evidence_ids": [],
1361
+ "extrapolated_x1e6": 0,
1362
+ "failure_signals": [],
1363
+ "failure_type": "",
1364
+ "has_transcript": false,
1365
+ "label_source": "keyword",
1366
+ "model": null,
1367
+ "model_prices_usd_per_mtok": null,
1368
+ "notes": "abandoned; 0 observations, 0 summaries, 0 prompts; no transcript on this box (remote device)",
1369
+ "observations": 0,
1370
+ "observer_tokens": 0,
1371
+ "platform": "claude",
1372
+ "productive_cost": 0.0,
1373
+ "project": "helper",
1374
+ "recommended_action": "",
1375
+ "recovery_cost": 0.0,
1376
+ "risk_exposure": "none",
1377
+ "scope": "period",
1378
+ "session_ids": [
1379
+ "m3"
1380
+ ],
1381
+ "session_status": "completed",
1382
+ "ship_events": 0,
1383
+ "ship_titles": [],
1384
+ "status": "abandoned",
1385
+ "summaries": 0,
1386
+ "summary_ids": [],
1387
+ "title": "",
1388
+ "trivial": true,
1389
+ "unpriced_calls": 0,
1390
+ "wasted_cost": 0.0,
1391
+ "work_category": "Investigation",
1392
+ "work_item_id": "WI-2",
1393
+ "worktree": ""
1394
+ },
1395
+ {
1396
+ "active_minutes": 6.0,
1397
+ "agent_calls": 0,
1398
+ "agent_tokens": {
1399
+ "cache_read": 0,
1400
+ "cache_write_1h": 0,
1401
+ "cache_write_5m": 0,
1402
+ "input": 0,
1403
+ "output": 0
1404
+ },
1405
+ "attributed_usd": 2.44,
1406
+ "behavior_counts": {},
1407
+ "category": "Bug fix",
1408
+ "confidence": "low",
1409
+ "content_session_id": "cs2",
1410
+ "cost_basis": "extrapolated",
1411
+ "cost_estimated": null,
1412
+ "cost_extrapolated": 2.44,
1413
+ "cost_measured": "unavailable",
1414
+ "cost_x1e6": 0,
1415
+ "date_pt": "2026-09-19",
1416
+ "device": [
1417
+ "remote-1"
1418
+ ],
1419
+ "evidence_ids": [
1420
+ 5
1421
+ ],
1422
+ "extrapolated_x1e6": 2442308,
1423
+ "failure_signals": [],
1424
+ "failure_type": "",
1425
+ "has_transcript": false,
1426
+ "label_source": "keyword",
1427
+ "model": null,
1428
+ "model_prices_usd_per_mtok": null,
1429
+ "notes": "completed; 1 observations, 1 summaries, 0 prompts; no transcript on this box (remote device)",
1430
+ "observations": 1,
1431
+ "observer_tokens": 20000,
1432
+ "platform": "claude",
1433
+ "productive_cost": 2.44,
1434
+ "project": "claude-mem",
1435
+ "recommended_action": "",
1436
+ "recovery_cost": 0.0,
1437
+ "risk_exposure": "none",
1438
+ "scope": "period",
1439
+ "session_ids": [
1440
+ "m2"
1441
+ ],
1442
+ "session_status": "completed",
1443
+ "ship_events": 0,
1444
+ "ship_titles": [],
1445
+ "status": "completed",
1446
+ "summaries": 1,
1447
+ "summary_ids": [
1448
+ 2
1449
+ ],
1450
+ "title": "fix the bug",
1451
+ "trivial": false,
1452
+ "unpriced_calls": 0,
1453
+ "wasted_cost": 0.0,
1454
+ "work_category": "Bug fix",
1455
+ "work_item_id": "WI-3",
1456
+ "worktree": "wt"
1457
+ },
1458
+ {
1459
+ "active_minutes": 6.0,
1460
+ "agent_calls": 1,
1461
+ "agent_tokens": {
1462
+ "cache_read": 0,
1463
+ "cache_write_1h": 0,
1464
+ "cache_write_5m": 0,
1465
+ "input": 100000,
1466
+ "output": 10000
1467
+ },
1468
+ "attributed_usd": 1.5,
1469
+ "behavior_counts": {},
1470
+ "category": "Investigation",
1471
+ "confidence": "medium",
1472
+ "content_session_id": "cs4",
1473
+ "cost_basis": "estimated_usage",
1474
+ "cost_estimated": 1.5,
1475
+ "cost_extrapolated": null,
1476
+ "cost_measured": "unavailable",
1477
+ "cost_x1e6": 1500000,
1478
+ "date_pt": "2026-09-19",
1479
+ "device": [
1480
+ "local"
1481
+ ],
1482
+ "evidence_ids": [
1483
+ 6
1484
+ ],
1485
+ "extrapolated_x1e6": 0,
1486
+ "failure_signals": [
1487
+ "Recovery after miss"
1488
+ ],
1489
+ "failure_type": "Recovery after miss",
1490
+ "has_transcript": true,
1491
+ "label_source": "keyword",
1492
+ "model": "claude-fable-5-1",
1493
+ "model_prices_usd_per_mtok": {
1494
+ "cache_read": 0.25,
1495
+ "cache_write": 12.5,
1496
+ "cache_write_1h": 20.0,
1497
+ "input": 10.0,
1498
+ "key": "anthropic/claude-fable-5.1",
1499
+ "output": 50.0,
1500
+ "price_source": {
1501
+ "cache_read": "listed",
1502
+ "cache_write": "listed",
1503
+ "cache_write_1h": "input*2"
1504
+ }
1505
+ },
1506
+ "notes": "abandoned; 1 observations, 0 summaries, 1 prompts; tokens measured from the transcript on this box",
1507
+ "observations": 1,
1508
+ "observer_tokens": 1000,
1509
+ "platform": "claude",
1510
+ "productive_cost": 1.5,
1511
+ "project": "other",
1512
+ "recommended_action": "",
1513
+ "recovery_cost": 0.0,
1514
+ "risk_exposure": "none",
1515
+ "scope": "period",
1516
+ "session_ids": [
1517
+ "m4"
1518
+ ],
1519
+ "session_status": "completed",
1520
+ "ship_events": 0,
1521
+ "ship_titles": [],
1522
+ "status": "abandoned",
1523
+ "summaries": 0,
1524
+ "summary_ids": [],
1525
+ "title": "resume the dig after the usage-limit reset",
1526
+ "trivial": false,
1527
+ "unpriced_calls": 0,
1528
+ "wasted_cost": 0.0,
1529
+ "work_category": "Investigation",
1530
+ "work_item_id": "WI-4",
1531
+ "worktree": ""
1532
+ }
1533
+ ],
1534
+ "observer": {
1535
+ "basis": "ESTIMATED: observer model's own tokens (deduped per reply) x its input list price; kept separate from the agent figures above",
1536
+ "est_usd": 0.0,
1537
+ "models": [
1538
+ "gemini-2.5-flash-lite"
1539
+ ],
1540
+ "rows_in_scope": {
1541
+ "observations": 6,
1542
+ "prompts": 2,
1543
+ "summaries": 2,
1544
+ "tool_uses": 1
1545
+ },
1546
+ "tokens_dedup": 33000,
1547
+ "unpriced_tokens": {}
1548
+ },
1549
+ "pricing": {
1550
+ "fetched": "2026-09-25T17:00:00-07:00",
1551
+ "loaded_from": null,
1552
+ "models_listed": 7,
1553
+ "rule_1h": "explicit input_cache_write_1h when listed, else 2 x input (weekly_report.py:95)",
1554
+ "source": "https://openrouter.ai/api/v1/models"
1555
+ },
1556
+ "scope": {
1557
+ "kind": "period",
1558
+ "project": null,
1559
+ "session": null
1560
+ },
1561
+ "spend": {
1562
+ "agent_estimated_label": "ESTIMATED",
1563
+ "agent_estimated_usd": 1.59,
1564
+ "agent_measured_usd": null,
1565
+ "extrapolated_label": "EXTRAPOLATED (low confidence)",
1566
+ "extrapolated_unmeasured_usd": 2.44,
1567
+ "extrapolation_basis": "EXTRAPOLATED (low confidence): on this box, measured sessions cost $122.12 API-equivalent per 1M observer tokens; applied to 20,000 observer tokens from 2 sessions with no transcript here (remote devices). Assumes remote work looks like box work.",
1568
+ "grok_bot_usage": {
1569
+ "status": "unavailable"
1570
+ },
1571
+ "headline_label": "estimated at OpenRouter list prices from measured tokens",
1572
+ "headline_usd": 1.59,
1573
+ "measured_status": "unavailable",
1574
+ "mistakes_alex_minutes": 0,
1575
+ "mistakes_alex_minutes_known_n": 0,
1576
+ "mistakes_basis": "same-session wasted turns, each turn once",
1577
+ "mistakes_episodes_n": 0,
1578
+ "mistakes_estimated_usd": 0.0,
1579
+ "mistakes_high_label": "upper bound, likely 5\u201310\u00d7 too high (Frustration Arc)",
1580
+ "mistakes_high_usd": 0.0,
1581
+ "mistakes_label": "ESTIMATED",
1582
+ "mistakes_turns_n": 0,
1583
+ "mistakes_unmatched_usd": 0.0,
1584
+ "mistakes_unmeasured_n": 0,
1585
+ "observer_note_taker_est_usd": 0.0,
1586
+ "total_estimate_usd": 4.03
1587
+ },
1588
+ "timeline": {
1589
+ "mistakes_by_day": [
1590
+ {
1591
+ "alex_minutes": 0.0,
1592
+ "by_pattern": {},
1593
+ "day_pt": "2026-09-01",
1594
+ "high_usd": 0.0,
1595
+ "outbound_incidents": 0,
1596
+ "top_examples": [],
1597
+ "turns_n": 0,
1598
+ "unmeasured_n": 0,
1599
+ "usd": 0.0
1600
+ },
1601
+ {
1602
+ "alex_minutes": 0.0,
1603
+ "by_pattern": {},
1604
+ "day_pt": "2026-09-02",
1605
+ "high_usd": 0.0,
1606
+ "outbound_incidents": 0,
1607
+ "top_examples": [],
1608
+ "turns_n": 0,
1609
+ "unmeasured_n": 0,
1610
+ "usd": 0.0
1611
+ },
1612
+ {
1613
+ "alex_minutes": 0.0,
1614
+ "by_pattern": {},
1615
+ "day_pt": "2026-09-03",
1616
+ "high_usd": 0.0,
1617
+ "outbound_incidents": 0,
1618
+ "top_examples": [],
1619
+ "turns_n": 0,
1620
+ "unmeasured_n": 0,
1621
+ "usd": 0.0
1622
+ },
1623
+ {
1624
+ "alex_minutes": 0.0,
1625
+ "by_pattern": {},
1626
+ "day_pt": "2026-09-04",
1627
+ "high_usd": 0.0,
1628
+ "outbound_incidents": 0,
1629
+ "top_examples": [],
1630
+ "turns_n": 0,
1631
+ "unmeasured_n": 0,
1632
+ "usd": 0.0
1633
+ },
1634
+ {
1635
+ "alex_minutes": 0.0,
1636
+ "by_pattern": {},
1637
+ "day_pt": "2026-09-05",
1638
+ "high_usd": 0.0,
1639
+ "outbound_incidents": 0,
1640
+ "top_examples": [],
1641
+ "turns_n": 0,
1642
+ "unmeasured_n": 0,
1643
+ "usd": 0.0
1644
+ },
1645
+ {
1646
+ "alex_minutes": 0.0,
1647
+ "by_pattern": {},
1648
+ "day_pt": "2026-09-06",
1649
+ "high_usd": 0.0,
1650
+ "outbound_incidents": 0,
1651
+ "top_examples": [],
1652
+ "turns_n": 0,
1653
+ "unmeasured_n": 0,
1654
+ "usd": 0.0
1655
+ },
1656
+ {
1657
+ "alex_minutes": 0.0,
1658
+ "by_pattern": {},
1659
+ "day_pt": "2026-09-07",
1660
+ "high_usd": 0.0,
1661
+ "outbound_incidents": 0,
1662
+ "top_examples": [],
1663
+ "turns_n": 0,
1664
+ "unmeasured_n": 0,
1665
+ "usd": 0.0
1666
+ },
1667
+ {
1668
+ "alex_minutes": 0.0,
1669
+ "by_pattern": {},
1670
+ "day_pt": "2026-09-08",
1671
+ "high_usd": 0.0,
1672
+ "outbound_incidents": 0,
1673
+ "top_examples": [],
1674
+ "turns_n": 0,
1675
+ "unmeasured_n": 0,
1676
+ "usd": 0.0
1677
+ },
1678
+ {
1679
+ "alex_minutes": 0.0,
1680
+ "by_pattern": {},
1681
+ "day_pt": "2026-09-09",
1682
+ "high_usd": 0.0,
1683
+ "outbound_incidents": 0,
1684
+ "top_examples": [],
1685
+ "turns_n": 0,
1686
+ "unmeasured_n": 0,
1687
+ "usd": 0.0
1688
+ },
1689
+ {
1690
+ "alex_minutes": 0.0,
1691
+ "by_pattern": {},
1692
+ "day_pt": "2026-09-10",
1693
+ "high_usd": 0.0,
1694
+ "outbound_incidents": 0,
1695
+ "top_examples": [],
1696
+ "turns_n": 0,
1697
+ "unmeasured_n": 0,
1698
+ "usd": 0.0
1699
+ },
1700
+ {
1701
+ "alex_minutes": 0.0,
1702
+ "by_pattern": {},
1703
+ "day_pt": "2026-09-11",
1704
+ "high_usd": 0.0,
1705
+ "outbound_incidents": 0,
1706
+ "top_examples": [],
1707
+ "turns_n": 0,
1708
+ "unmeasured_n": 0,
1709
+ "usd": 0.0
1710
+ },
1711
+ {
1712
+ "alex_minutes": 0.0,
1713
+ "by_pattern": {},
1714
+ "day_pt": "2026-09-12",
1715
+ "high_usd": 0.0,
1716
+ "outbound_incidents": 0,
1717
+ "top_examples": [],
1718
+ "turns_n": 0,
1719
+ "unmeasured_n": 0,
1720
+ "usd": 0.0
1721
+ },
1722
+ {
1723
+ "alex_minutes": 0.0,
1724
+ "by_pattern": {},
1725
+ "day_pt": "2026-09-13",
1726
+ "high_usd": 0.0,
1727
+ "outbound_incidents": 0,
1728
+ "top_examples": [],
1729
+ "turns_n": 0,
1730
+ "unmeasured_n": 0,
1731
+ "usd": 0.0
1732
+ },
1733
+ {
1734
+ "alex_minutes": 0.0,
1735
+ "by_pattern": {},
1736
+ "day_pt": "2026-09-14",
1737
+ "high_usd": 0.0,
1738
+ "outbound_incidents": 0,
1739
+ "top_examples": [],
1740
+ "turns_n": 0,
1741
+ "unmeasured_n": 0,
1742
+ "usd": 0.0
1743
+ },
1744
+ {
1745
+ "alex_minutes": 0.0,
1746
+ "by_pattern": {},
1747
+ "day_pt": "2026-09-15",
1748
+ "high_usd": 0.0,
1749
+ "outbound_incidents": 0,
1750
+ "top_examples": [],
1751
+ "turns_n": 0,
1752
+ "unmeasured_n": 0,
1753
+ "usd": 0.0
1754
+ },
1755
+ {
1756
+ "alex_minutes": 0.0,
1757
+ "by_pattern": {},
1758
+ "day_pt": "2026-09-16",
1759
+ "high_usd": 0.0,
1760
+ "outbound_incidents": 0,
1761
+ "top_examples": [],
1762
+ "turns_n": 0,
1763
+ "unmeasured_n": 0,
1764
+ "usd": 0.0
1765
+ },
1766
+ {
1767
+ "alex_minutes": 0.0,
1768
+ "by_pattern": {},
1769
+ "day_pt": "2026-09-17",
1770
+ "high_usd": 0.0,
1771
+ "outbound_incidents": 0,
1772
+ "top_examples": [],
1773
+ "turns_n": 0,
1774
+ "unmeasured_n": 0,
1775
+ "usd": 0.0
1776
+ },
1777
+ {
1778
+ "alex_minutes": 0.0,
1779
+ "by_pattern": {},
1780
+ "day_pt": "2026-09-18",
1781
+ "high_usd": 0.0,
1782
+ "outbound_incidents": 0,
1783
+ "top_examples": [],
1784
+ "turns_n": 0,
1785
+ "unmeasured_n": 0,
1786
+ "usd": 0.0
1787
+ },
1788
+ {
1789
+ "alex_minutes": 0.0,
1790
+ "by_pattern": {},
1791
+ "day_pt": "2026-09-19",
1792
+ "high_usd": 0.0,
1793
+ "outbound_incidents": 0,
1794
+ "top_examples": [],
1795
+ "turns_n": 0,
1796
+ "unmeasured_n": 0,
1797
+ "usd": 0.0
1798
+ },
1799
+ {
1800
+ "alex_minutes": 0.0,
1801
+ "by_pattern": {},
1802
+ "day_pt": "2026-09-20",
1803
+ "high_usd": 0.0,
1804
+ "outbound_incidents": 0,
1805
+ "top_examples": [],
1806
+ "turns_n": 0,
1807
+ "unmeasured_n": 0,
1808
+ "usd": 0.0
1809
+ },
1810
+ {
1811
+ "alex_minutes": 0.0,
1812
+ "by_pattern": {},
1813
+ "day_pt": "2026-09-21",
1814
+ "high_usd": 0.0,
1815
+ "outbound_incidents": 0,
1816
+ "top_examples": [],
1817
+ "turns_n": 0,
1818
+ "unmeasured_n": 0,
1819
+ "usd": 0.0
1820
+ },
1821
+ {
1822
+ "alex_minutes": 0.0,
1823
+ "by_pattern": {},
1824
+ "day_pt": "2026-09-22",
1825
+ "high_usd": 0.0,
1826
+ "outbound_incidents": 0,
1827
+ "top_examples": [],
1828
+ "turns_n": 0,
1829
+ "unmeasured_n": 0,
1830
+ "usd": 0.0
1831
+ },
1832
+ {
1833
+ "alex_minutes": 0.0,
1834
+ "by_pattern": {},
1835
+ "day_pt": "2026-09-23",
1836
+ "high_usd": 0.0,
1837
+ "outbound_incidents": 0,
1838
+ "top_examples": [],
1839
+ "turns_n": 0,
1840
+ "unmeasured_n": 0,
1841
+ "usd": 0.0
1842
+ },
1843
+ {
1844
+ "alex_minutes": 0.0,
1845
+ "by_pattern": {},
1846
+ "day_pt": "2026-09-24",
1847
+ "high_usd": 0.0,
1848
+ "outbound_incidents": 0,
1849
+ "top_examples": [],
1850
+ "turns_n": 0,
1851
+ "unmeasured_n": 0,
1852
+ "usd": 0.0
1853
+ },
1854
+ {
1855
+ "alex_minutes": 0.0,
1856
+ "by_pattern": {},
1857
+ "day_pt": "2026-09-25",
1858
+ "high_usd": 0.0,
1859
+ "outbound_incidents": 0,
1860
+ "top_examples": [],
1861
+ "turns_n": 0,
1862
+ "unmeasured_n": 0,
1863
+ "usd": 0.0
1864
+ },
1865
+ {
1866
+ "alex_minutes": 0.0,
1867
+ "by_pattern": {},
1868
+ "day_pt": "2026-09-26",
1869
+ "high_usd": 0.0,
1870
+ "outbound_incidents": 0,
1871
+ "top_examples": [],
1872
+ "turns_n": 0,
1873
+ "unmeasured_n": 0,
1874
+ "usd": 0.0
1875
+ },
1876
+ {
1877
+ "alex_minutes": 0.0,
1878
+ "by_pattern": {},
1879
+ "day_pt": "2026-09-27",
1880
+ "high_usd": 0.0,
1881
+ "outbound_incidents": 0,
1882
+ "top_examples": [],
1883
+ "turns_n": 0,
1884
+ "unmeasured_n": 0,
1885
+ "usd": 0.0
1886
+ },
1887
+ {
1888
+ "alex_minutes": 0.0,
1889
+ "by_pattern": {},
1890
+ "day_pt": "2026-09-28",
1891
+ "high_usd": 0.0,
1892
+ "outbound_incidents": 0,
1893
+ "top_examples": [],
1894
+ "turns_n": 0,
1895
+ "unmeasured_n": 0,
1896
+ "usd": 0.0
1897
+ },
1898
+ {
1899
+ "alex_minutes": 0.0,
1900
+ "by_pattern": {},
1901
+ "day_pt": "2026-09-29",
1902
+ "high_usd": 0.0,
1903
+ "outbound_incidents": 0,
1904
+ "top_examples": [],
1905
+ "turns_n": 0,
1906
+ "unmeasured_n": 0,
1907
+ "usd": 0.0
1908
+ },
1909
+ {
1910
+ "alex_minutes": 0.0,
1911
+ "by_pattern": {},
1912
+ "day_pt": "2026-09-30",
1913
+ "high_usd": 0.0,
1914
+ "outbound_incidents": 0,
1915
+ "top_examples": [],
1916
+ "turns_n": 0,
1917
+ "unmeasured_n": 0,
1918
+ "usd": 0.0
1919
+ }
1920
+ ],
1921
+ "wins_by_day": [
1922
+ {
1923
+ "count": 0,
1924
+ "day_pt": "2026-09-01",
1925
+ "usd": null,
1926
+ "win_ids": []
1927
+ },
1928
+ {
1929
+ "count": 0,
1930
+ "day_pt": "2026-09-02",
1931
+ "usd": null,
1932
+ "win_ids": []
1933
+ },
1934
+ {
1935
+ "count": 0,
1936
+ "day_pt": "2026-09-03",
1937
+ "usd": null,
1938
+ "win_ids": []
1939
+ },
1940
+ {
1941
+ "count": 0,
1942
+ "day_pt": "2026-09-04",
1943
+ "usd": null,
1944
+ "win_ids": []
1945
+ },
1946
+ {
1947
+ "count": 0,
1948
+ "day_pt": "2026-09-05",
1949
+ "usd": null,
1950
+ "win_ids": []
1951
+ },
1952
+ {
1953
+ "count": 0,
1954
+ "day_pt": "2026-09-06",
1955
+ "usd": null,
1956
+ "win_ids": []
1957
+ },
1958
+ {
1959
+ "count": 0,
1960
+ "day_pt": "2026-09-07",
1961
+ "usd": null,
1962
+ "win_ids": []
1963
+ },
1964
+ {
1965
+ "count": 0,
1966
+ "day_pt": "2026-09-08",
1967
+ "usd": null,
1968
+ "win_ids": []
1969
+ },
1970
+ {
1971
+ "count": 0,
1972
+ "day_pt": "2026-09-09",
1973
+ "usd": null,
1974
+ "win_ids": []
1975
+ },
1976
+ {
1977
+ "count": 0,
1978
+ "day_pt": "2026-09-10",
1979
+ "usd": null,
1980
+ "win_ids": []
1981
+ },
1982
+ {
1983
+ "count": 0,
1984
+ "day_pt": "2026-09-11",
1985
+ "usd": null,
1986
+ "win_ids": []
1987
+ },
1988
+ {
1989
+ "count": 0,
1990
+ "day_pt": "2026-09-12",
1991
+ "usd": null,
1992
+ "win_ids": []
1993
+ },
1994
+ {
1995
+ "count": 0,
1996
+ "day_pt": "2026-09-13",
1997
+ "usd": null,
1998
+ "win_ids": []
1999
+ },
2000
+ {
2001
+ "count": 0,
2002
+ "day_pt": "2026-09-14",
2003
+ "usd": null,
2004
+ "win_ids": []
2005
+ },
2006
+ {
2007
+ "count": 0,
2008
+ "day_pt": "2026-09-15",
2009
+ "usd": null,
2010
+ "win_ids": []
2011
+ },
2012
+ {
2013
+ "count": 0,
2014
+ "day_pt": "2026-09-16",
2015
+ "usd": null,
2016
+ "win_ids": []
2017
+ },
2018
+ {
2019
+ "count": 0,
2020
+ "day_pt": "2026-09-17",
2021
+ "usd": null,
2022
+ "win_ids": []
2023
+ },
2024
+ {
2025
+ "count": 1,
2026
+ "day_pt": "2026-09-18",
2027
+ "usd": null,
2028
+ "win_ids": [
2029
+ "W-1"
2030
+ ]
2031
+ },
2032
+ {
2033
+ "count": 0,
2034
+ "day_pt": "2026-09-19",
2035
+ "usd": null,
2036
+ "win_ids": []
2037
+ },
2038
+ {
2039
+ "count": 0,
2040
+ "day_pt": "2026-09-20",
2041
+ "usd": null,
2042
+ "win_ids": []
2043
+ },
2044
+ {
2045
+ "count": 0,
2046
+ "day_pt": "2026-09-21",
2047
+ "usd": null,
2048
+ "win_ids": []
2049
+ },
2050
+ {
2051
+ "count": 0,
2052
+ "day_pt": "2026-09-22",
2053
+ "usd": null,
2054
+ "win_ids": []
2055
+ },
2056
+ {
2057
+ "count": 0,
2058
+ "day_pt": "2026-09-23",
2059
+ "usd": null,
2060
+ "win_ids": []
2061
+ },
2062
+ {
2063
+ "count": 0,
2064
+ "day_pt": "2026-09-24",
2065
+ "usd": null,
2066
+ "win_ids": []
2067
+ },
2068
+ {
2069
+ "count": 0,
2070
+ "day_pt": "2026-09-25",
2071
+ "usd": null,
2072
+ "win_ids": []
2073
+ },
2074
+ {
2075
+ "count": 0,
2076
+ "day_pt": "2026-09-26",
2077
+ "usd": null,
2078
+ "win_ids": []
2079
+ },
2080
+ {
2081
+ "count": 0,
2082
+ "day_pt": "2026-09-27",
2083
+ "usd": null,
2084
+ "win_ids": []
2085
+ },
2086
+ {
2087
+ "count": 0,
2088
+ "day_pt": "2026-09-28",
2089
+ "usd": null,
2090
+ "win_ids": []
2091
+ },
2092
+ {
2093
+ "count": 0,
2094
+ "day_pt": "2026-09-29",
2095
+ "usd": null,
2096
+ "win_ids": []
2097
+ },
2098
+ {
2099
+ "count": 0,
2100
+ "day_pt": "2026-09-30",
2101
+ "usd": null,
2102
+ "win_ids": []
2103
+ }
2104
+ ]
2105
+ },
2106
+ "totals": {
2107
+ "agent_hours": 0.9,
2108
+ "cost_per_completed_outcome": 1.26,
2109
+ "devices": 2,
2110
+ "finished_outcomes": 2,
2111
+ "hours_method": "sum of gaps <=15 min between consecutive events (prompts, observations, summaries, tool calls, transcript API calls); parallel sessions add up in agent_hours but not in wall_clock_hours",
2112
+ "projects": 4,
2113
+ "real_work_sessions": 3,
2114
+ "recovery_share": 0.0,
2115
+ "recovery_usd": 0.0,
2116
+ "repos": 3,
2117
+ "sessions": 4,
2118
+ "ship_events": 1,
2119
+ "tokens": {
2120
+ "api_calls": 4,
2121
+ "cache_read": 50000,
2122
+ "cache_write_1h": 1000,
2123
+ "cache_write_5m": 2000,
2124
+ "input": 102100,
2125
+ "output": 10210,
2126
+ "total": 165310
2127
+ },
2128
+ "trivial_sessions": 1,
2129
+ "wall_clock_hours": 0.9,
2130
+ "waste_rate": 0.0,
2131
+ "wasted_usd": 0.0
2132
+ },
2133
+ "trivial_definition": "no observations, no transcript on this box, and <1 active minute",
2134
+ "trivial_sessions": [
2135
+ {
2136
+ "session_ids": [
2137
+ "m3"
2138
+ ],
2139
+ "title": "",
2140
+ "work_item_id": "WI-2"
2141
+ }
2142
+ ],
2143
+ "unmatched_transcripts": {
2144
+ "by_dir": {
2145
+ "-w-p": 1
2146
+ },
2147
+ "count": 1,
2148
+ "note": "transcripts on this box that matched no sdk_sessions row (work claude-mem never saw); counted in the totals above",
2149
+ "sessions": [
2150
+ {
2151
+ "calls": 1,
2152
+ "dir": "-w-p",
2153
+ "first_ts": "2026-09-20T05:00:00-07:00",
2154
+ "session": "orphan",
2155
+ "src": "claude-code",
2156
+ "tokens": 110,
2157
+ "usd": 0.0
2158
+ }
2159
+ ],
2160
+ "tokens": 110,
2161
+ "usd": 0.0
2162
+ },
2163
+ "unpriced_models": [],
2164
+ "window": {
2165
+ "end_epoch_ms": 1790838000000,
2166
+ "end_exclusive_pt": "2026-10-01",
2167
+ "generated_at_pt": "2026-09-25 12:00 PT",
2168
+ "partial_last_day": true,
2169
+ "start_epoch_ms": 1788246000000,
2170
+ "start_pt": "2026-09-01"
2171
+ },
2172
+ "wins": {
2173
+ "attribution_method": null,
2174
+ "cost_status": "unmeasured",
2175
+ "dropped": [],
2176
+ "gh_unconfirmed": [],
2177
+ "items": [
2178
+ {
2179
+ "active_minutes": null,
2180
+ "confirmed": false,
2181
+ "cost_basis": null,
2182
+ "cost_label": "unmeasured (session not linked to PR)",
2183
+ "cost_status": "unmeasured",
2184
+ "day_pt": "2026-09-18",
2185
+ "evidence_ids": [
2186
+ 4
2187
+ ],
2188
+ "key": "claude-mem#4125",
2189
+ "kind": "pr",
2190
+ "linked_sessions": [],
2191
+ "project": "claude-mem",
2192
+ "sessions": [
2193
+ "cs1"
2194
+ ],
2195
+ "sessions_n": 0,
2196
+ "sources": [
2197
+ "ship_observation"
2198
+ ],
2199
+ "title": "PR #4125 merged to main",
2200
+ "tokens": null,
2201
+ "ts_pt": "2026-09-18T09:30-0700",
2202
+ "turns_n": 0,
2203
+ "url": null,
2204
+ "usd": null,
2205
+ "win_id": "W-1"
2206
+ }
2207
+ ],
2208
+ "note": "finished line items (shipped/completed) are outcomes, not wins (G12); praise detection is a Phase 2B hook",
2209
+ "praise_n": 0,
2210
+ "total_attributed_usd": null,
2211
+ "unattributed_usd": null
2212
+ }
2213
+ }