harness-everything 0.47.1 → 0.47.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.github/workflows/ci.yml +14 -0
  4. package/CHANGELOG.md +18 -0
  5. package/benchmarks/issue290-pilot/README.md +199 -0
  6. package/benchmarks/issue290-pilot/analyze.py +299 -0
  7. package/benchmarks/issue290-pilot/analyze.test.py +146 -0
  8. package/benchmarks/issue290-pilot/check.py +19 -0
  9. package/benchmarks/issue290-pilot/evidence/archive.json +7 -0
  10. package/benchmarks/issue290-pilot/evidence/group-summary.json +684 -0
  11. package/benchmarks/issue290-pilot/evidence/inventory.json +3728 -0
  12. package/benchmarks/issue290-pilot/evidence/ledger.json +4644 -0
  13. package/benchmarks/issue290-pilot/evidence/replay/pairs.json +482 -0
  14. package/benchmarks/issue290-pilot/evidence/replay/provenance.json +24 -0
  15. package/benchmarks/issue290-pilot/evidence/replay/tables.md +37 -0
  16. package/benchmarks/issue290-pilot/evidence.tar.gz +0 -0
  17. package/benchmarks/issue290-pilot/export.py +110 -0
  18. package/benchmarks/issue290-pilot/export.test.py +65 -0
  19. package/benchmarks/issue290-pilot/fable-supplement.py +55 -0
  20. package/benchmarks/issue290-pilot/fixture.test.py +28 -0
  21. package/benchmarks/issue290-pilot/fixtures/polyglot/instructions.md +19 -0
  22. package/benchmarks/issue290-pilot/fixtures/polyglot/package.json +29 -0
  23. package/benchmarks/issue290-pilot/fixtures/polyglot/simple-linked-list.js +44 -0
  24. package/benchmarks/issue290-pilot/fixtures/polyglot/simple-linked-list.spec.js +131 -0
  25. package/benchmarks/issue290-pilot/fixtures/quixbugs/LICENSE +7 -0
  26. package/benchmarks/issue290-pilot/fixtures/quixbugs/cases.json +7 -0
  27. package/benchmarks/issue290-pilot/fixtures/quixbugs/find_in_sorted.py +31 -0
  28. package/benchmarks/issue290-pilot/fixtures/quixbugs/test_find_in_sorted.py +15 -0
  29. package/benchmarks/issue290-pilot/frozen-documents.json +41 -0
  30. package/benchmarks/issue290-pilot/grader.cjs +43 -0
  31. package/benchmarks/issue290-pilot/grader.test.cjs +10 -0
  32. package/benchmarks/issue290-pilot/hook.test.cjs +27 -0
  33. package/benchmarks/issue290-pilot/host-hook.cjs +35 -0
  34. package/benchmarks/issue290-pilot/metrics.test.py +131 -0
  35. package/benchmarks/issue290-pilot/preflight/amendment.md +32 -0
  36. package/benchmarks/issue290-pilot/preflight/environment.json +15 -0
  37. package/benchmarks/issue290-pilot/preflight/fable-amendment.md +20 -0
  38. package/benchmarks/issue290-pilot/preflight/fable-frozen-files.json +4 -0
  39. package/benchmarks/issue290-pilot/preflight/fable-infrastructure-amendment.md +27 -0
  40. package/benchmarks/issue290-pilot/preflight/fable-retry-frozen-files.json +4 -0
  41. package/benchmarks/issue290-pilot/preflight/fable-supplement-v1.py +47 -0
  42. package/benchmarks/issue290-pilot/preflight/frozen-files.json +18 -0
  43. package/benchmarks/issue290-pilot/preflight/graders.json +67 -0
  44. package/benchmarks/issue290-pilot/pricing-assumptions.json +29 -0
  45. package/benchmarks/issue290-pilot/protocol.json +32 -0
  46. package/benchmarks/issue290-pilot/read_metrics.py +166 -0
  47. package/benchmarks/issue290-pilot/replay.py +167 -0
  48. package/benchmarks/issue290-pilot/reporting.py +82 -0
  49. package/benchmarks/issue290-pilot/run.py +262 -0
  50. package/benchmarks/issue290-pilot/sources.json +10 -0
  51. package/benchmarks/issue290-pilot/verification/analyzer-tests.log +5 -0
  52. package/benchmarks/issue290-pilot/verification/final-gates.json +58 -0
  53. package/benchmarks/issue290-pilot/verification/fixture-tests.log +5 -0
  54. package/benchmarks/issue290-pilot/verification/gates.json +58 -0
  55. package/benchmarks/issue290-pilot/verification/npm-audit.json +84 -0
  56. package/benchmarks/issue290-pilot/verification/offline-correction.json +59 -0
  57. package/benchmarks/issue290-pilot/verification/post-report/helper-tests.log +22 -0
  58. package/benchmarks/issue290-pilot/verification/post-report/test-consistency.log +626 -0
  59. package/benchmarks/issue290-pilot/verification/post-report/test-references.log +6 -0
  60. package/benchmarks/issue290-pilot/verification/post-report/waza-tokens.log +710 -0
  61. package/benchmarks/issue290-pilot/verification/test-collision.log +28 -0
  62. package/benchmarks/issue290-pilot/verification/test-consistency.log +28 -0
  63. package/benchmarks/issue290-pilot/verification/test-docs-capabilities.log +131 -0
  64. package/benchmarks/issue290-pilot/verification/test-mechanism.log +1829 -0
  65. package/benchmarks/issue290-pilot/verification/test-mutations.log +16 -0
  66. package/benchmarks/issue290-pilot/verification/test-platform-compatibility.log +9 -0
  67. package/benchmarks/issue290-pilot/verification/test-plugin-openai.log +6 -0
  68. package/benchmarks/issue290-pilot/verification/test-plugin-submission.log +5 -0
  69. package/benchmarks/issue290-pilot/verification/test-references.log +6 -0
  70. package/benchmarks/issue290-pilot/verification/test-release.log +59 -0
  71. package/benchmarks/issue290-pilot/verification/test-repo-contract.log +5 -0
  72. package/benchmarks/issue290-pilot/verification/test-routing-invariants.log +785 -0
  73. package/benchmarks/issue290-pilot/verification/test-routing-skills.log +28 -0
  74. package/benchmarks/issue290-pilot/verification/test.log +3373 -0
  75. package/benchmarks/issue290-pilot/verification/verification-report.md +76 -0
  76. package/benchmarks/issue290-pilot/verification/waza-tokens.log +710 -0
  77. package/benchmarks/issue290-pilot/verification/with-dependencies/gates.json +26 -0
  78. package/benchmarks/issue290-pilot/verification/with-dependencies/test-collision.log +8 -0
  79. package/benchmarks/issue290-pilot/verification/with-dependencies/test-consistency.log +626 -0
  80. package/benchmarks/issue290-pilot/verification/with-dependencies/test-mechanism.log +1693 -0
  81. package/benchmarks/issue290-pilot/verification/with-dependencies/test-release.log +38 -0
  82. package/benchmarks/issue290-pilot/verification/with-dependencies/test-routing-skills.log +44 -0
  83. package/benchmarks/issue290-pilot/verification/with-dependencies/test.log +3253 -0
  84. package/ci/lib/opencode-verification-loader.js +24 -0
  85. package/ci/mechanism-2p-opencode-v2-entrypoint.test.js +8 -1
  86. package/ci/mechanism-325-f3-derived-views.test.js +42 -2
  87. package/ci/mechanism-338-opencode-async.test.js +229 -0
  88. package/ci/mechanism-341-opencode-lane.test.js +14 -3
  89. package/ci/mechanism-36-verify-timeout.test.js +7 -168
  90. package/docs/platform-capabilities.md +8 -0
  91. package/harness-everything/SKILL.md +1 -1
  92. package/harness-everything/scripts/doc-check.js +5 -4
  93. package/hooks/scripts/lib/doc-reconciliation-provider.js +1 -1
  94. package/opencode-plugin/README.md +28 -30
  95. package/opencode-plugin/index.mjs +249 -112
  96. package/opencode-plugin/plugin.json +1 -1
  97. package/package.json +1 -1
  98. package/plugins/harness-everything/.codex-plugin/plugin.json +1 -1
  99. package/plugins/harness-everything/hooks/scripts/lib/doc-reconciliation-provider.js +1 -1
  100. package/plugins/harness-everything/plugin.json +1 -1
  101. package/plugins/harness-everything/skills/harness-everything/SKILL.md +1 -1
  102. package/plugins/harness-everything/skills/harness-everything/scripts/doc-check.js +5 -4
  103. package/sbom.cdx.json +7 -7
@@ -0,0 +1,482 @@
1
+ [
2
+ {
3
+ "api_equivalent_cost_usd": {
4
+ "A": null,
5
+ "B": null,
6
+ "delta_percent": null,
7
+ "included": false
8
+ },
9
+ "api_equivalent_input_cost_usd": {
10
+ "A": null,
11
+ "B": null,
12
+ "delta_percent": null,
13
+ "included": false
14
+ },
15
+ "engine": "codex",
16
+ "reference_returned_bytes": {
17
+ "A": 22023,
18
+ "B": 3066,
19
+ "delta_percent": -86.07819098215502,
20
+ "included": true
21
+ },
22
+ "repeat": 1,
23
+ "series": "issue290-fable-20261014",
24
+ "wall_seconds": {
25
+ "A": 600.392,
26
+ "B": 601.001,
27
+ "delta_percent": 0.10143372996307803,
28
+ "included": true
29
+ },
30
+ "workload": "polyglot-simple-linked-list-staged"
31
+ },
32
+ {
33
+ "api_equivalent_cost_usd": {
34
+ "A": null,
35
+ "B": null,
36
+ "delta_percent": null,
37
+ "included": false
38
+ },
39
+ "api_equivalent_input_cost_usd": {
40
+ "A": null,
41
+ "B": null,
42
+ "delta_percent": null,
43
+ "included": false
44
+ },
45
+ "engine": "codex",
46
+ "reference_returned_bytes": {
47
+ "A": 30683,
48
+ "B": 15124,
49
+ "delta_percent": -50.708861584590814,
50
+ "included": true
51
+ },
52
+ "repeat": 2,
53
+ "series": "issue290-fable-20261014",
54
+ "wall_seconds": {
55
+ "A": 439.355,
56
+ "B": 600.761,
57
+ "delta_percent": 36.73703497171989,
58
+ "included": true
59
+ },
60
+ "workload": "polyglot-simple-linked-list-staged"
61
+ },
62
+ {
63
+ "api_equivalent_cost_usd": {
64
+ "A": 0.04073616,
65
+ "B": 0.05423884000000001,
66
+ "delta_percent": 33.14666870907815,
67
+ "included": true
68
+ },
69
+ "api_equivalent_input_cost_usd": {
70
+ "A": 0.024593660000000003,
71
+ "B": 0.031938339999999996,
72
+ "delta_percent": 29.864119451923756,
73
+ "included": true
74
+ },
75
+ "engine": "claude",
76
+ "reference_returned_bytes": {
77
+ "A": 8300,
78
+ "B": 16914,
79
+ "delta_percent": 103.78313253012048,
80
+ "included": true
81
+ },
82
+ "repeat": 1,
83
+ "series": "issue290-fable-claude-retry-20261014",
84
+ "wall_seconds": {
85
+ "A": 265.736,
86
+ "B": 238.026,
87
+ "delta_percent": -10.427642472228069,
88
+ "included": true
89
+ },
90
+ "workload": "polyglot-simple-linked-list-staged"
91
+ },
92
+ {
93
+ "api_equivalent_cost_usd": {
94
+ "A": 0.029205180000000004,
95
+ "B": 0.050429640000000005,
96
+ "delta_percent": 72.67361474916434,
97
+ "included": true
98
+ },
99
+ "api_equivalent_input_cost_usd": {
100
+ "A": 0.017736180000000004,
101
+ "B": 0.03127264,
102
+ "delta_percent": 76.3211694964755,
103
+ "included": true
104
+ },
105
+ "engine": "claude",
106
+ "reference_returned_bytes": {
107
+ "A": 20633,
108
+ "B": 13910,
109
+ "delta_percent": -32.58372510056705,
110
+ "included": true
111
+ },
112
+ "repeat": 2,
113
+ "series": "issue290-fable-claude-retry-20261014",
114
+ "wall_seconds": {
115
+ "A": 128.821,
116
+ "B": 199.68,
117
+ "delta_percent": 55.00578321857462,
118
+ "included": true
119
+ },
120
+ "workload": "polyglot-simple-linked-list-staged"
121
+ },
122
+ {
123
+ "api_equivalent_cost_usd": {
124
+ "A": 0.01959743,
125
+ "B": 0.03243657,
126
+ "delta_percent": 65.51440673598528,
127
+ "included": true
128
+ },
129
+ "api_equivalent_input_cost_usd": {
130
+ "A": 0.01159493,
131
+ "B": 0.02028157,
132
+ "delta_percent": 74.91757173178276,
133
+ "included": true
134
+ },
135
+ "engine": "claude",
136
+ "reference_returned_bytes": {
137
+ "A": 5250,
138
+ "B": 3064,
139
+ "delta_percent": -41.63809523809524,
140
+ "included": true
141
+ },
142
+ "repeat": 1,
143
+ "series": "issue290-formal-20261014",
144
+ "wall_seconds": {
145
+ "A": 88.905,
146
+ "B": 154.669,
147
+ "delta_percent": 73.97109273944099,
148
+ "included": true
149
+ },
150
+ "workload": "polyglot-simple-linked-list-staged"
151
+ },
152
+ {
153
+ "api_equivalent_cost_usd": {
154
+ "A": 0.01798511,
155
+ "B": 0.023325329999999995,
156
+ "delta_percent": 29.69245114430769,
157
+ "included": true
158
+ },
159
+ "api_equivalent_input_cost_usd": {
160
+ "A": 0.01129711,
161
+ "B": 0.014302330000000002,
162
+ "delta_percent": 26.601670692770107,
163
+ "included": true
164
+ },
165
+ "engine": "claude",
166
+ "reference_returned_bytes": {
167
+ "A": 3065,
168
+ "B": 3066,
169
+ "delta_percent": 0.03262642740619902,
170
+ "included": true
171
+ },
172
+ "repeat": 2,
173
+ "series": "issue290-formal-20261014",
174
+ "wall_seconds": {
175
+ "A": 84.91,
176
+ "B": 110.124,
177
+ "delta_percent": 29.694971145919208,
178
+ "included": true
179
+ },
180
+ "workload": "polyglot-simple-linked-list-staged"
181
+ },
182
+ {
183
+ "api_equivalent_cost_usd": {
184
+ "A": 0.00581582,
185
+ "B": 0.0050241700000000005,
186
+ "delta_percent": -13.612010000309493,
187
+ "included": true
188
+ },
189
+ "api_equivalent_input_cost_usd": {
190
+ "A": 0.00481082,
191
+ "B": 0.004093670000000001,
192
+ "delta_percent": -14.907022087710612,
193
+ "included": true
194
+ },
195
+ "engine": "claude",
196
+ "reference_returned_bytes": {
197
+ "A": 18957,
198
+ "B": 3571,
199
+ "delta_percent": -81.16263121801973,
200
+ "included": true
201
+ },
202
+ "repeat": 1,
203
+ "series": "issue290-formal-20261014",
204
+ "wall_seconds": {
205
+ "A": 12.103,
206
+ "B": 16.151,
207
+ "delta_percent": 33.44625299512518,
208
+ "included": true
209
+ },
210
+ "workload": "profile-lookup"
211
+ },
212
+ {
213
+ "api_equivalent_cost_usd": {
214
+ "A": 0.005840049999999999,
215
+ "B": 0.00497036,
216
+ "delta_percent": -14.891824556296598,
217
+ "included": true
218
+ },
219
+ "api_equivalent_input_cost_usd": {
220
+ "A": 0.0048185500000000004,
221
+ "B": 0.00400936,
222
+ "delta_percent": -16.793226177999614,
223
+ "included": true
224
+ },
225
+ "engine": "claude",
226
+ "reference_returned_bytes": {
227
+ "A": 18957,
228
+ "B": 3571,
229
+ "delta_percent": -81.16263121801973,
230
+ "included": true
231
+ },
232
+ "repeat": 2,
233
+ "series": "issue290-formal-20261014",
234
+ "wall_seconds": {
235
+ "A": 12.116,
236
+ "B": 15.131,
237
+ "delta_percent": 24.88445031363487,
238
+ "included": true
239
+ },
240
+ "workload": "profile-lookup"
241
+ },
242
+ {
243
+ "api_equivalent_cost_usd": {
244
+ "A": 0.009865480000000001,
245
+ "B": 0.01780674,
246
+ "delta_percent": 80.49542444969732,
247
+ "included": true
248
+ },
249
+ "api_equivalent_input_cost_usd": {
250
+ "A": 0.00746998,
251
+ "B": 0.012818239999999998,
252
+ "delta_percent": 71.59671110230546,
253
+ "included": true
254
+ },
255
+ "engine": "claude",
256
+ "reference_returned_bytes": {
257
+ "A": 15078,
258
+ "B": 3182,
259
+ "delta_percent": -78.8964053588009,
260
+ "included": true
261
+ },
262
+ "repeat": 1,
263
+ "series": "issue290-formal-20261014",
264
+ "wall_seconds": {
265
+ "A": 36.318,
266
+ "B": 84.865,
267
+ "delta_percent": 133.67200837050498,
268
+ "included": true
269
+ },
270
+ "workload": "quixbugs-find-in-sorted"
271
+ },
272
+ {
273
+ "api_equivalent_cost_usd": {
274
+ "A": 0.01293407,
275
+ "B": 0.01267222,
276
+ "delta_percent": -2.0244980891552387,
277
+ "included": true
278
+ },
279
+ "api_equivalent_input_cost_usd": {
280
+ "A": 0.008934570000000001,
281
+ "B": 0.008777720000000001,
282
+ "delta_percent": -1.755540557631761,
283
+ "included": true
284
+ },
285
+ "engine": "claude",
286
+ "reference_returned_bytes": {
287
+ "A": 15078,
288
+ "B": 3065,
289
+ "delta_percent": -79.67237034089402,
290
+ "included": true
291
+ },
292
+ "repeat": 2,
293
+ "series": "issue290-formal-20261014",
294
+ "wall_seconds": {
295
+ "A": 54.511,
296
+ "B": 69.67,
297
+ "delta_percent": 27.809066060061266,
298
+ "included": true
299
+ },
300
+ "workload": "quixbugs-find-in-sorted"
301
+ },
302
+ {
303
+ "api_equivalent_cost_usd": {
304
+ "A": 0.02572438,
305
+ "B": 0.02799634,
306
+ "delta_percent": 8.831932975644117,
307
+ "included": true
308
+ },
309
+ "api_equivalent_input_cost_usd": {
310
+ "A": 0.015737880000000003,
311
+ "B": 0.016671340000000003,
312
+ "delta_percent": 5.931294431016124,
313
+ "included": true
314
+ },
315
+ "engine": "codex",
316
+ "reference_returned_bytes": {
317
+ "A": 22023,
318
+ "B": 3066,
319
+ "delta_percent": -86.07819098215502,
320
+ "included": true
321
+ },
322
+ "repeat": 1,
323
+ "series": "issue290-formal-20261014",
324
+ "wall_seconds": {
325
+ "A": 218.852,
326
+ "B": 250.42,
327
+ "delta_percent": 14.424359841353967,
328
+ "included": true
329
+ },
330
+ "workload": "polyglot-simple-linked-list-staged"
331
+ },
332
+ {
333
+ "api_equivalent_cost_usd": {
334
+ "A": 0.0254005,
335
+ "B": 0.022629200000000002,
336
+ "delta_percent": -10.910415149308074,
337
+ "included": true
338
+ },
339
+ "api_equivalent_input_cost_usd": {
340
+ "A": 0.015807000000000005,
341
+ "B": 0.014696699999999998,
342
+ "delta_percent": -7.024103245397649,
343
+ "included": true
344
+ },
345
+ "engine": "codex",
346
+ "reference_returned_bytes": {
347
+ "A": 22023,
348
+ "B": 3066,
349
+ "delta_percent": -86.07819098215502,
350
+ "included": true
351
+ },
352
+ "repeat": 2,
353
+ "series": "issue290-formal-20261014",
354
+ "wall_seconds": {
355
+ "A": 237.141,
356
+ "B": 177.548,
357
+ "delta_percent": -25.129775112696663,
358
+ "included": true
359
+ },
360
+ "workload": "polyglot-simple-linked-list-staged"
361
+ },
362
+ {
363
+ "api_equivalent_cost_usd": {
364
+ "A": 0.00220756,
365
+ "B": 0.00229032,
366
+ "delta_percent": 3.7489354762724596,
367
+ "included": true
368
+ },
369
+ "api_equivalent_input_cost_usd": {
370
+ "A": 0.00194956,
371
+ "B": 0.00192282,
372
+ "delta_percent": -1.3715915386035786,
373
+ "included": true
374
+ },
375
+ "engine": "codex",
376
+ "reference_returned_bytes": {
377
+ "A": 18957,
378
+ "B": 3571,
379
+ "delta_percent": -81.16263121801973,
380
+ "included": true
381
+ },
382
+ "repeat": 1,
383
+ "series": "issue290-formal-20261014",
384
+ "wall_seconds": {
385
+ "A": 17.148,
386
+ "B": 17.136,
387
+ "delta_percent": -0.06997900629811322,
388
+ "included": true
389
+ },
390
+ "workload": "profile-lookup"
391
+ },
392
+ {
393
+ "api_equivalent_cost_usd": {
394
+ "A": 0.00204398,
395
+ "B": 0.0029894,
396
+ "delta_percent": 46.25387723950333,
397
+ "included": true
398
+ },
399
+ "api_equivalent_input_cost_usd": {
400
+ "A": 0.00154448,
401
+ "B": 0.0026714,
402
+ "delta_percent": 72.96436341033875,
403
+ "included": true
404
+ },
405
+ "engine": "codex",
406
+ "reference_returned_bytes": {
407
+ "A": 18957,
408
+ "B": 3571,
409
+ "delta_percent": -81.16263121801973,
410
+ "included": true
411
+ },
412
+ "repeat": 2,
413
+ "series": "issue290-formal-20261014",
414
+ "wall_seconds": {
415
+ "A": 19.145,
416
+ "B": 16.12,
417
+ "delta_percent": -15.800470096630967,
418
+ "included": true
419
+ },
420
+ "workload": "profile-lookup"
421
+ },
422
+ {
423
+ "api_equivalent_cost_usd": {
424
+ "A": 0.00857276,
425
+ "B": 0.01922112,
426
+ "delta_percent": 124.21157246907649,
427
+ "included": true
428
+ },
429
+ "api_equivalent_input_cost_usd": {
430
+ "A": 0.00615976,
431
+ "B": 0.014933620000000002,
432
+ "delta_percent": 142.43834175357483,
433
+ "included": true
434
+ },
435
+ "engine": "codex",
436
+ "reference_returned_bytes": {
437
+ "A": 15078,
438
+ "B": 4665,
439
+ "delta_percent": -69.0608834062873,
440
+ "included": true
441
+ },
442
+ "repeat": 1,
443
+ "series": "issue290-formal-20261014",
444
+ "wall_seconds": {
445
+ "A": 69.562,
446
+ "B": 179.458,
447
+ "delta_percent": 157.98280670481012,
448
+ "included": true
449
+ },
450
+ "workload": "quixbugs-find-in-sorted"
451
+ },
452
+ {
453
+ "api_equivalent_cost_usd": {
454
+ "A": 0.01109618,
455
+ "B": 0.0148342,
456
+ "delta_percent": 33.6874491942272,
457
+ "included": true
458
+ },
459
+ "api_equivalent_input_cost_usd": {
460
+ "A": 0.007470180000000001,
461
+ "B": 0.0114482,
462
+ "delta_percent": 53.251996605168806,
463
+ "included": true
464
+ },
465
+ "engine": "codex",
466
+ "reference_returned_bytes": {
467
+ "A": 15078,
468
+ "B": 3066,
469
+ "delta_percent": -79.66573816155989,
470
+ "included": true
471
+ },
472
+ "repeat": 2,
473
+ "series": "issue290-formal-20261014",
474
+ "wall_seconds": {
475
+ "A": 146.2,
476
+ "B": 98.86,
477
+ "delta_percent": -32.38030095759233,
478
+ "included": true
479
+ },
480
+ "workload": "quixbugs-find-in-sorted"
481
+ }
482
+ ]
@@ -0,0 +1,24 @@
1
+ {
2
+ "archive_sha256": "93bcb349c6ebbdcd3673641f3dc23148e73e87a0ec975d31bf31d2731d828723",
3
+ "frozen_documents_sha256": "d294738c15c313f9800d900fcaf4c0689ecc150f71a3de2443119676d0adc136",
4
+ "frozen_not_independently_recovered": [
5
+ "request usage",
6
+ "child dispatch metadata",
7
+ "effort",
8
+ "usage aggregates"
9
+ ],
10
+ "irretrievable": [
11
+ "unobserved worker usage/model identities",
12
+ "interrupted final usage"
13
+ ],
14
+ "pricing_assumptions_sha256": "b8cfd7cd8afb882a2bf55d666110a6967fefa90d307f9b2105fc7cece2e935b7",
15
+ "recomputed": [
16
+ "parent-stream content attribution",
17
+ "artifact checks",
18
+ "gate-name invocation",
19
+ "metric denominators",
20
+ "paired deltas"
21
+ ],
22
+ "unknown_policy": "non-reconstructable whole-run costs remain null; no host-home reads or model calls",
23
+ "verified_exported_files": 621
24
+ }
@@ -0,0 +1,37 @@
1
+ <!-- Generated by replay.py; parent-stream content attribution only. -->
2
+ | Family | Model | Pass / quality n | Excluded attempts |
3
+ |---|---|---:|---:|
4
+ | True Fable | claude | 4/4 | 4 |
5
+ | True Fable | codex | 1/4 | 0 |
6
+ | polyglot-simple-linked-list-staged | claude | 4/4 | 0 |
7
+ | polyglot-simple-linked-list-staged | codex | 3/4 | 0 |
8
+ | profile-lookup | claude | 0/4 | 0 |
9
+ | profile-lookup | codex | 4/4 | 0 |
10
+ | quixbugs-find-in-sorted | claude | 4/4 | 0 |
11
+ | quixbugs-find-in-sorted | codex | 4/4 | 0 |
12
+
13
+ ### Attributable reference bytes (lower bound)
14
+
15
+ | Family | Model | Included / candidate pairs | A | B | Delta |
16
+ |---|---|---:|---:|---:|---:|
17
+ | True Fable | claude | 2/2 | 28933 | 30824 | +6.5% |
18
+ | True Fable | codex | 2/2 | 52706 | 18190 | -65.5% |
19
+ | polyglot-simple-linked-list-staged | claude | 2/2 | 8315 | 6130 | -26.3% |
20
+ | polyglot-simple-linked-list-staged | codex | 2/2 | 44046 | 6132 | -86.1% |
21
+ | profile-lookup | claude | 2/2 | 37914 | 7142 | -81.2% |
22
+ | profile-lookup | codex | 2/2 | 37914 | 7142 | -81.2% |
23
+ | quixbugs-find-in-sorted | claude | 2/2 | 30156 | 6247 | -79.3% |
24
+ | quixbugs-find-in-sorted | codex | 2/2 | 30156 | 7731 | -74.4% |
25
+
26
+ ### List-price input cost (frozen telemetry)
27
+
28
+ | Family | Model | Included / candidate pairs | A | B | Delta |
29
+ |---|---|---:|---:|---:|---:|
30
+ | True Fable | claude | 2/2 | 0.042330 | 0.063211 | +49.3% |
31
+ | True Fable | codex | 0/2 | unknown | unknown | unknown |
32
+ | polyglot-simple-linked-list-staged | claude | 2/2 | 0.022892 | 0.034584 | +51.1% |
33
+ | polyglot-simple-linked-list-staged | codex | 2/2 | 0.031545 | 0.031368 | -0.6% |
34
+ | profile-lookup | claude | 2/2 | 0.009629 | 0.008103 | -15.9% |
35
+ | profile-lookup | codex | 2/2 | 0.003494 | 0.004594 | +31.5% |
36
+ | quixbugs-find-in-sorted | claude | 2/2 | 0.016405 | 0.021596 | +31.6% |
37
+ | quixbugs-find-in-sorted | codex | 2/2 | 0.013630 | 0.026382 | +93.6% |
@@ -0,0 +1,110 @@
1
+ #!/usr/bin/env python3
2
+ """Sanitize attributed evidence while retaining raw and exported SHA-256 hashes."""
3
+ import argparse
4
+ import hashlib
5
+ import json
6
+ from pathlib import Path
7
+ import re
8
+ import socket
9
+ import tarfile
10
+
11
+ HERE=Path(__file__).resolve().parent
12
+ SOURCE=str(HERE.parent.parent)
13
+ HOME=str(Path.home())
14
+ HOST=socket.gethostname().split('.')[0]
15
+
16
+ SECRET_PATTERNS = {
17
+ 'provider-token': r'\b(?:sk-[A-Za-z0-9_-]{16,}|gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|xox[baprs]-[A-Za-z0-9-]{20,}|AKIA[A-Z0-9]{16})\b',
18
+ 'private-key': r'-----BEGIN (?:[A-Z0-9]+ )*PRIVATE KEY-----',
19
+ 'authorization': r'(?i)\b(?:bearer|basic)\s+[A-Za-z0-9+/_.=-]{16,}',
20
+ 'assigned-secret': r'''(?i)["']?\b(?:api[_-]?key|access[_-]?token|client[_-]?secret|password|aws_secret_access_key)["']?\s*[:=]\s*["']?[A-Za-z0-9+/_.=-]{16,}''',
21
+ }
22
+
23
+ def validate_no_secrets(text):
24
+ # JSON escaping cannot hide a credential in a nested transcript/log field.
25
+ candidates = [text]
26
+ try:
27
+ value = json.loads(text)
28
+ except (ValueError, TypeError):
29
+ value = None
30
+ def strings(value):
31
+ if isinstance(value, str):
32
+ candidates.append(value)
33
+ elif isinstance(value, dict):
34
+ for key, item in value.items():
35
+ candidates.append(str(key))
36
+ strings(item)
37
+ elif isinstance(value, list):
38
+ for item in value:
39
+ strings(item)
40
+ strings(value)
41
+ for candidate in candidates:
42
+ for category, pattern in SECRET_PATTERNS.items():
43
+ if re.search(pattern, candidate):
44
+ raise ValueError('possible credential class: ' + category)
45
+
46
+ def scan_final(paths):
47
+ count = 0
48
+ for path in map(Path, paths):
49
+ if path.name.endswith(('.tar.gz', '.tgz')):
50
+ with tarfile.open(path) as archive:
51
+ for member in archive.getmembers():
52
+ validate_no_secrets(member.name)
53
+ if member.isfile():
54
+ validate_no_secrets(archive.extractfile(member).read().decode('utf8'))
55
+ count += 1
56
+ else:
57
+ for file in sorted(path.rglob('*')) if path.is_dir() else [path]:
58
+ if file.is_file() and '__pycache__' not in file.parts:
59
+ validate_no_secrets(str(file))
60
+ validate_no_secrets(file.read_text())
61
+ count += 1
62
+ return count
63
+
64
+ def sanitize(text):
65
+ validate_no_secrets(text)
66
+ text=text.replace(SOURCE,'<HARNESS_SOURCE>').replace(HOME,'<USER_HOME>')
67
+ text=re.sub(r'(?:/private)?/var/folders/[^/]+/[^/]+/T/', '<TMP>/',text)
68
+ text=text.replace('/private/tmp/','<TMP>/').replace('/tmp/','<TMP>/')
69
+ text=re.sub(r'\b[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}\b','<REDACTED_EMAIL>',text)
70
+ if HOST:text=text.replace(HOST,'<HOST>')
71
+ # Local login name leaks through `ls -l` owner columns in captured tool output.
72
+ text=re.sub(r'\bdaniel\.chang\b','<USER>',text)
73
+ # Fail closed rather than publish a possible credential silently.
74
+ validate_no_secrets(text)
75
+ return text
76
+
77
+ def strip_private_reasoning(value):
78
+ if isinstance(value,list):return [strip_private_reasoning(v) for v in value]
79
+ if isinstance(value,dict):
80
+ if value.get('type') in ['thinking','redacted_thinking','reasoning']:
81
+ return {'type':'private_reasoning_redacted'}
82
+ return {k:strip_private_reasoning(v) for k,v in value.items() if k not in ['signature','thinking']}
83
+ return value
84
+
85
+ if __name__=='__main__':
86
+ p=argparse.ArgumentParser();p.add_argument('roots',nargs='+');p.add_argument('--output');p.add_argument('--scan-only',action='store_true')
87
+ a=p.parse_args()
88
+ if a.scan_only:
89
+ print('credential scan PASS:', scan_final(a.roots), 'UTF-8 files; configured classes only')
90
+ raise SystemExit(0)
91
+ if not a.output:p.error('--output is required for export')
92
+ out=Path(a.output);out.mkdir(parents=True,exist_ok=True);inventory=[]
93
+ for root in map(Path,a.roots):
94
+ for file in sorted(root.rglob('*')):
95
+ if not file.is_file() or file.suffix not in ['.json','.jsonl','.txt','.py','.js','.cjs','.log']:
96
+ continue
97
+ relative=Path(root.name)/file.relative_to(root)
98
+ target=out/relative;target.parent.mkdir(parents=True,exist_ok=True)
99
+ raw=file.read_bytes();text=raw.decode('utf8')
100
+ if file.suffix=='.jsonl':
101
+ text='\n'.join(json.dumps(strip_private_reasoning(json.loads(line)),ensure_ascii=False)
102
+ for line in text.splitlines() if line.strip())+'\n'
103
+ elif file.suffix=='.json':text=json.dumps(strip_private_reasoning(json.loads(text)),indent=2,ensure_ascii=False)+'\n'
104
+ clean=sanitize(text).encode()
105
+ target.write_bytes(clean)
106
+ inventory.append({'path':str(relative),'raw_sha256':hashlib.sha256(raw).hexdigest(),
107
+ 'exported_sha256':hashlib.sha256(clean).hexdigest(),'bytes':len(clean)})
108
+ (out/'inventory.json').write_text(json.dumps(inventory,indent=2)+'\n')
109
+ scan_final([out])
110
+ print('exported',len(inventory),'files;',sum(x['bytes'] for x in inventory),'bytes')