@tangle-network/agent-eval 0.222.1 → 0.223.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 (147) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/dist/adapters/http.d.ts +2 -2
  3. package/dist/{agent-profile-CSEQRC9l.d.ts → agent-profile-CoD1Dotf.d.ts} +2 -2
  4. package/dist/{agent-profile-CSEQRC9l.d.ts.map → agent-profile-CoD1Dotf.d.ts.map} +1 -1
  5. package/dist/analyst/index.d.ts +11 -11
  6. package/dist/analyst/index.d.ts.map +1 -1
  7. package/dist/analyst/index.js +1 -1
  8. package/dist/{analyze-runs-CGLRgZGd.d.ts → analyze-runs-C-pP1sK9.d.ts} +2 -2
  9. package/dist/{analyze-runs-CGLRgZGd.d.ts.map → analyze-runs-C-pP1sK9.d.ts.map} +1 -1
  10. package/dist/{analyze-runs-CTheASYV.js → analyze-runs-Ck68mbgj.js} +7 -9
  11. package/dist/analyze-runs-Ck68mbgj.js.map +1 -0
  12. package/dist/{benchmark-command-Cr7i7YSX.js → benchmark-command-CH86twZj.js} +31 -36
  13. package/dist/benchmark-command-CH86twZj.js.map +1 -0
  14. package/dist/benchmarks/index.d.ts +4 -4
  15. package/dist/benchmarks/index.js +3 -3
  16. package/dist/campaign/index.d.ts +6 -6
  17. package/dist/campaign/index.js +9 -9
  18. package/dist/{campaign-ddr1N3yD.js → campaign-DdOgQfp8.js} +14 -19
  19. package/dist/campaign-DdOgQfp8.js.map +1 -0
  20. package/dist/{campaign-evidence-DN8rWuBj.js → campaign-evidence-MjCjkb5a.js} +3 -3
  21. package/dist/{campaign-evidence-DN8rWuBj.js.map → campaign-evidence-MjCjkb5a.js.map} +1 -1
  22. package/dist/cli.js +4 -4
  23. package/dist/contract/index.d.ts +9 -9
  24. package/dist/contract/index.js +11 -10
  25. package/dist/contract/index.js.map +1 -1
  26. package/dist/{default-registry-1f4ukAIX.d.ts → default-registry-B1DstPYg.d.ts} +7 -7
  27. package/dist/{default-registry-1f4ukAIX.d.ts.map → default-registry-B1DstPYg.d.ts.map} +1 -1
  28. package/dist/{define-agent-eval-sUYh9BFA.d.ts → define-agent-eval-CAffiFbN.d.ts} +7 -7
  29. package/dist/{define-agent-eval-sUYh9BFA.d.ts.map → define-agent-eval-CAffiFbN.d.ts.map} +1 -1
  30. package/dist/{define-agent-eval-BLoP4Lf9.js → define-agent-eval-Cc15qGik.js} +5 -5
  31. package/dist/{define-agent-eval-BLoP4Lf9.js.map → define-agent-eval-Cc15qGik.js.map} +1 -1
  32. package/dist/diagnosis/index.d.ts +2 -2
  33. package/dist/diagnosis/index.js +1 -1
  34. package/dist/{engine-BITiErg-.d.ts → engine-CaHaCc3W.d.ts} +2 -2
  35. package/dist/{engine-BITiErg-.d.ts.map → engine-CaHaCc3W.d.ts.map} +1 -1
  36. package/dist/{eval-campaign-Cgixrvf7.js → eval-campaign-C_mNDshv.js} +2 -2
  37. package/dist/{eval-campaign-Cgixrvf7.js.map → eval-campaign-C_mNDshv.js.map} +1 -1
  38. package/dist/{evaluation-Djq7-Ybj.d.ts → evaluation-BPqUvZ66.d.ts} +3 -3
  39. package/dist/{evaluation-Djq7-Ybj.d.ts.map → evaluation-BPqUvZ66.d.ts.map} +1 -1
  40. package/dist/evaluation.d.ts +1 -1
  41. package/dist/{exact-types-CndDT_h7.d.ts → exact-types-D98BKpxo.d.ts} +2 -2
  42. package/dist/{exact-types-CndDT_h7.d.ts.map → exact-types-D98BKpxo.d.ts.map} +1 -1
  43. package/dist/experiment/index.d.ts +1 -1
  44. package/dist/experiment/index.js +7 -7
  45. package/dist/{feedback-trajectory-DsHR9krG.d.ts → feedback-trajectory-SBGncrCP.d.ts} +3 -3
  46. package/dist/{feedback-trajectory-DsHR9krG.d.ts.map → feedback-trajectory-SBGncrCP.d.ts.map} +1 -1
  47. package/dist/{index-Bdcpx2s8.d.ts → index-B7v2QHlD.d.ts} +6 -6
  48. package/dist/{index-Bdcpx2s8.d.ts.map → index-B7v2QHlD.d.ts.map} +1 -1
  49. package/dist/{index-IzWTz5EP.d.ts → index-CUjeTDPv.d.ts} +6 -6
  50. package/dist/{index-IzWTz5EP.d.ts.map → index-CUjeTDPv.d.ts.map} +1 -1
  51. package/dist/index-DAk2quYu.d.ts.map +1 -1
  52. package/dist/{index-BdKzYYkC.d.ts → index-DUn0GNiZ.d.ts} +2 -2
  53. package/dist/{index-BdKzYYkC.d.ts.map → index-DUn0GNiZ.d.ts.map} +1 -1
  54. package/dist/{index-Cu12qxJb.d.ts → index-aDPVYBIM.d.ts} +8 -8
  55. package/dist/{index-Cu12qxJb.d.ts.map → index-aDPVYBIM.d.ts.map} +1 -1
  56. package/dist/index.d.ts +17 -17
  57. package/dist/index.js +13 -12
  58. package/dist/index.js.map +1 -1
  59. package/dist/{judge-gate-C2BCOt-M.js → judge-gate-Di_6bifh.js} +4 -4
  60. package/dist/judge-gate-Di_6bifh.js.map +1 -0
  61. package/dist/{llm-judge-cgbhTKQp.js → llm-judge-D6JtIqiU.js} +9 -9
  62. package/dist/{llm-judge-cgbhTKQp.js.map → llm-judge-D6JtIqiU.js.map} +1 -1
  63. package/dist/{matrix-8X6i5kJ6.d.ts → matrix-CBUzIZs4.d.ts} +2 -2
  64. package/dist/{matrix-8X6i5kJ6.d.ts.map → matrix-CBUzIZs4.d.ts.map} +1 -1
  65. package/dist/mean-BPuUNznQ.js +16 -0
  66. package/dist/mean-BPuUNznQ.js.map +1 -0
  67. package/dist/meta-eval/index.js +1 -1
  68. package/dist/multishot/golden/index.d.ts +1 -1
  69. package/dist/multishot/index.d.ts +2 -2
  70. package/dist/openapi.json +1 -1
  71. package/dist/{paired-arms-D-54hO-k.js → paired-arms-D5H_58e8.js} +2 -2
  72. package/dist/{paired-arms-D-54hO-k.js.map → paired-arms-D5H_58e8.js.map} +1 -1
  73. package/dist/{paired-promotion-decision-FGvHA4p_.js → paired-promotion-decision-BiVumgvM.js} +2 -2
  74. package/dist/{paired-promotion-decision-FGvHA4p_.js.map → paired-promotion-decision-BiVumgvM.js.map} +1 -1
  75. package/dist/{mean-CdDYG-us.js → paired-tests-C2zUqgUW.js} +2 -7
  76. package/dist/paired-tests-C2zUqgUW.js.map +1 -0
  77. package/dist/{pareto-B9udAt2i.js → pareto-7_LEmYGG.js} +4 -3
  78. package/dist/{pareto-B9udAt2i.js.map → pareto-7_LEmYGG.js.map} +1 -1
  79. package/dist/{power-and-mde-ClI6RWw4.js → power-and-mde-CHvyDO_H.js} +2 -2
  80. package/dist/{power-and-mde-ClI6RWw4.js.map → power-and-mde-CHvyDO_H.js.map} +1 -1
  81. package/dist/{prime-protocol-BpQlTowq.d.ts → prime-protocol-COFkxas6.d.ts} +2 -2
  82. package/dist/{prime-protocol-BpQlTowq.d.ts.map → prime-protocol-COFkxas6.d.ts.map} +1 -1
  83. package/dist/{promotion-policy-CBYeD4zi.js → promotion-policy-D7B4_jEZ.js} +4 -4
  84. package/dist/{promotion-policy-CBYeD4zi.js.map → promotion-policy-D7B4_jEZ.js.map} +1 -1
  85. package/dist/{registry-D9A7Tybn.d.ts → registry-dhdDoAV8.d.ts} +3 -3
  86. package/dist/{registry-D9A7Tybn.d.ts.map → registry-dhdDoAV8.d.ts.map} +1 -1
  87. package/dist/reporting.js +3 -3
  88. package/dist/{reward-hacking-DZzHZlS1.js → reward-hacking-Bjk3MAjh.js} +7 -9
  89. package/dist/{reward-hacking-DZzHZlS1.js.map → reward-hacking-Bjk3MAjh.js.map} +1 -1
  90. package/dist/reward-hacking-C9hPVT0Q.d.ts.map +1 -1
  91. package/dist/rl.d.ts +3 -3
  92. package/dist/rl.js +6 -6
  93. package/dist/rollout/index.d.ts +2 -2
  94. package/dist/{run-record-CZy4-TnZ.js → run-record-BUm-Jggo.js} +2 -2
  95. package/dist/{run-record-CZy4-TnZ.js.map → run-record-BUm-Jggo.js.map} +1 -1
  96. package/dist/search/index.d.ts +2 -2
  97. package/dist/search/index.js +2 -2
  98. package/dist/{search-kernel-B77eE7Ac.d.ts → search-kernel-CBdwFZ05.d.ts} +2 -2
  99. package/dist/{search-kernel-B77eE7Ac.d.ts.map → search-kernel-CBdwFZ05.d.ts.map} +1 -1
  100. package/dist/{search-summary-Ct7SrmVc.js → search-summary-Bt3uuK53.js} +4 -4
  101. package/dist/{search-summary-Ct7SrmVc.js.map → search-summary-Bt3uuK53.js.map} +1 -1
  102. package/dist/{sequential-B1I0tRfL.js → sequential-De7BTAlV.js} +2 -2
  103. package/dist/{sequential-B1I0tRfL.js.map → sequential-De7BTAlV.js.map} +1 -1
  104. package/dist/{skillopt-optimization-method-qB1M554K.js → skillopt-optimization-method-BKFbJEyz.js} +9 -12
  105. package/dist/skillopt-optimization-method-BKFbJEyz.js.map +1 -0
  106. package/dist/{statistical-heldout-TP6ndL0B.js → statistical-heldout-C9hz_AF9.js} +3 -3
  107. package/dist/{statistical-heldout-TP6ndL0B.js.map → statistical-heldout-C9hz_AF9.js.map} +1 -1
  108. package/dist/{statistical-heldout-BYxHe3KO.d.ts → statistical-heldout-Cei036nE.d.ts} +3 -3
  109. package/dist/{statistical-heldout-BYxHe3KO.d.ts.map → statistical-heldout-Cei036nE.d.ts.map} +1 -1
  110. package/dist/{store-tool-spans-DMM6wMwB.d.ts → store-tool-spans-B3i3fl0A.d.ts} +4 -4
  111. package/dist/{store-tool-spans-DMM6wMwB.d.ts.map → store-tool-spans-B3i3fl0A.d.ts.map} +1 -1
  112. package/dist/storyboard/index.d.ts +17 -0
  113. package/dist/storyboard/index.d.ts.map +1 -1
  114. package/dist/storyboard/index.js +154 -107
  115. package/dist/storyboard/index.js.map +1 -1
  116. package/dist/{summary-report-CPfsrLac.js → summary-report-BLnTyQKH.js} +5 -4
  117. package/dist/{summary-report-CPfsrLac.js.map → summary-report-BLnTyQKH.js.map} +1 -1
  118. package/dist/{systemone-UHbKD6LH.d.ts → systemone-Cw2txK5m.d.ts} +5 -5
  119. package/dist/{systemone-UHbKD6LH.d.ts.map → systemone-Cw2txK5m.d.ts.map} +1 -1
  120. package/dist/{systemone-review-Cn9Uj0xG.d.ts → systemone-review-BLgxt-4Q.d.ts} +3 -3
  121. package/dist/{systemone-review-Cn9Uj0xG.d.ts.map → systemone-review-BLgxt-4Q.d.ts.map} +1 -1
  122. package/dist/systemone.d.ts +3 -3
  123. package/dist/{tool-groups-CFWmAGCV.d.ts → tool-groups-C3K-d3gd.d.ts} +3 -3
  124. package/dist/tool-groups-C3K-d3gd.d.ts.map +1 -0
  125. package/dist/{trace-questions-BFCQAzoT.d.ts → trace-questions-ej5AEJ5X.d.ts} +3 -3
  126. package/dist/{trace-questions-BFCQAzoT.d.ts.map → trace-questions-ej5AEJ5X.d.ts.map} +1 -1
  127. package/dist/trace-repair/index.d.ts +1 -1
  128. package/dist/trace-repair/index.js +2 -1
  129. package/dist/trace-repair/index.js.map +1 -1
  130. package/dist/traces.d.ts +3 -3
  131. package/dist/{tree-DrIChF4a.js → tree-DnBkWXun.js} +5 -4
  132. package/dist/{tree-DrIChF4a.js.map → tree-DnBkWXun.js.map} +1 -1
  133. package/dist/{types-DUR0dqET.d.ts → types-0oMg7zee.d.ts} +2 -2
  134. package/dist/{types-DUR0dqET.d.ts.map → types-0oMg7zee.d.ts.map} +1 -1
  135. package/dist/{types-e3HGaI7P.d.ts → types-C54Uk_a1.d.ts} +2 -2
  136. package/dist/{types-e3HGaI7P.d.ts.map → types-C54Uk_a1.d.ts.map} +1 -1
  137. package/dist/{types-BEvjDziM.d.ts → types-DzCO-S1m.d.ts} +8 -8
  138. package/dist/{types-BEvjDziM.d.ts.map → types-DzCO-S1m.d.ts.map} +1 -1
  139. package/dist/wire/index.d.ts +1 -1
  140. package/package.json +1 -1
  141. package/dist/analyze-runs-CTheASYV.js.map +0 -1
  142. package/dist/benchmark-command-Cr7i7YSX.js.map +0 -1
  143. package/dist/campaign-ddr1N3yD.js.map +0 -1
  144. package/dist/judge-gate-C2BCOt-M.js.map +0 -1
  145. package/dist/mean-CdDYG-us.js.map +0 -1
  146. package/dist/skillopt-optimization-method-qB1M554K.js.map +0 -1
  147. package/dist/tool-groups-CFWmAGCV.d.ts.map +0 -1
@@ -1,7 +1,8 @@
1
1
  import { c as errorMessage, s as ValidationError, t as AgentEvalError } from "./errors-DeEEV9Vx.js";
2
2
  import { a as hashCanonical, i as compareCodeUnits, o as jsonDocument, r as canonicalString } from "./canonical-CicJlINA.js";
3
3
  import { o as summarizeNumberSeries } from "./descriptive-cPwITVfy.js";
4
- import { i as pairedBootstrap, t as mean$3 } from "./mean-CdDYG-us.js";
4
+ import { r as pairedBootstrap } from "./paired-tests-C2zUqgUW.js";
5
+ import { n as meanOrNull, t as mean$1 } from "./mean-BPuUNznQ.js";
5
6
  import { o as withLedgerFileLock, s as writeLedgerFileAtomically } from "./journal-C1uLJi0w.js";
6
7
  import { a as resolveModelPricing } from "./metrics-DNCAUtuB.js";
7
8
  import { a as CostLedgerPersistenceError, i as CostCeilingReachedError, n as CostAccountingIncompleteError, o as CostReceiptCaptureError, r as CostCallConflictError, s as CostReservationExceededError, t as CostLedger } from "./cost-ledger-CS8R3IZj.js";
@@ -123,9 +124,9 @@ function summarizeAnalystBenchmarkRunner(runnerId, observations) {
123
124
  const supportedFindings = issueBearing.reduce((sum, observation) => sum + observation.score.supportedFindingIndexes.length, 0);
124
125
  const issueRecall = expectedIssues === 0 ? null : matchedIssues / expectedIssues;
125
126
  const findingPrecision = expectedIssues === 0 ? null : issueFindings === 0 ? 0 : supportedFindings / issueFindings;
126
- const macroIssueRecall = issueBearing.length === 0 ? null : mean$2(issueBearing.map((observation) => observation.score.issueRecall));
127
- const macroFindingPrecision = issueBearing.length === 0 ? null : mean$2(issueBearing.map((observation) => observation.score.findingPrecision));
128
- const macroF1 = issueBearing.length === 0 ? null : mean$2(issueBearing.map((observation) => observation.score.f1));
127
+ const macroIssueRecall = issueBearing.length === 0 ? null : mean(issueBearing.map((observation) => observation.score.issueRecall));
128
+ const macroFindingPrecision = issueBearing.length === 0 ? null : mean(issueBearing.map((observation) => observation.score.findingPrecision));
129
+ const macroF1 = issueBearing.length === 0 ? null : mean(issueBearing.map((observation) => observation.score.f1));
129
130
  const critical = observations.map((observation) => observation.score.criticalStepAccuracy).filter((value) => value !== null);
130
131
  const findingsWithEvidence = completed.reduce((sum, observation) => sum + observation.findings.filter((finding) => finding.evidence_refs.length > 0).length, 0);
131
132
  const allFindings = completed.reduce((sum, observation) => sum + observation.findings.length, 0);
@@ -163,7 +164,7 @@ function summarizeAnalystBenchmarkRunner(runnerId, observations) {
163
164
  macroIssueRecall,
164
165
  macroFindingPrecision,
165
166
  macroF1,
166
- criticalStepAccuracy: critical.length === 0 ? null : mean$2(critical),
167
+ criticalStepAccuracy: critical.length === 0 ? null : mean(critical),
167
168
  citationCoverage: allFindings === 0 ? null : findingsWithEvidence / allFindings,
168
169
  citationExcerptCoverage: allCitations.length === 0 ? null : allCitations.filter((evidence) => Boolean(evidence.excerpt?.trim())).length / allCitations.length,
169
170
  citationLabelAgreement: citationObservations.length === 0 ? null : citationCount === 0 ? 0 : (citationCount - invalidCitationCount) / citationCount,
@@ -198,7 +199,7 @@ function summarizeAnalystBenchmarkRunner(runnerId, observations) {
198
199
  costUnknownRuns: usages.filter((usage) => !usage || usage.cost.kind === "uncaptured").length
199
200
  };
200
201
  }
201
- function mean$2(values) {
202
+ function mean(values) {
202
203
  return values.length === 0 ? 0 : stableSum(values) / values.length;
203
204
  }
204
205
  function stableSum(values) {
@@ -217,7 +218,7 @@ function latencyDistribution(values) {
217
218
  if (!summary) return null;
218
219
  return {
219
220
  min: summary.min,
220
- mean: mean$2(values),
221
+ mean: mean(values),
221
222
  p50: summary.p50,
222
223
  p95: summary.percentiles[95],
223
224
  max: summary.max
@@ -234,10 +235,10 @@ function repeatedObservationAgreement(observations, signature) {
234
235
  for (const rows of byCase.values()) {
235
236
  const agreements = [];
236
237
  for (let left = 0; left < rows.length; left++) for (let right = left + 1; right < rows.length; right++) agreements.push(jaccard(signature(rows[left]), signature(rows[right])));
237
- if (agreements.length > 0) caseAgreements.push(mean$2(agreements));
238
+ if (agreements.length > 0) caseAgreements.push(mean(agreements));
238
239
  }
239
240
  return {
240
- value: caseAgreements.length === 0 ? null : mean$2(caseAgreements),
241
+ value: caseAgreements.length === 0 ? null : mean(caseAgreements),
241
242
  cases: caseAgreements.length
242
243
  };
243
244
  }
@@ -1041,20 +1042,20 @@ function summarizeRunner$1(runnerId, observations) {
1041
1042
  failedRuns: observations.filter((observation) => Boolean(observation.error)).length,
1042
1043
  predictedRuns: predicted.length,
1043
1044
  missingPredictionRuns: scored.length - predicted.length,
1044
- exactStepAccuracy: mean$1(scored.map((row) => Number(row.roundedDistance === 0))),
1045
- stepAccuracyWithin1: mean$1(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 1))),
1046
- stepAccuracyWithin2: mean$1(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 2))),
1047
- stepAccuracyWithin3: mean$1(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 3))),
1048
- stepAccuracyWithin4: mean$1(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 4))),
1049
- stepAccuracyWithin5: mean$1(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 5))),
1050
- meanStepDistance: mean$1(predicted.map((row) => row.distance)),
1051
- normalizedMeanStepDistance: mean$1(normalized.map((row) => row.normalizedDistance)),
1045
+ exactStepAccuracy: meanOrNull(scored.map((row) => Number(row.roundedDistance === 0))),
1046
+ stepAccuracyWithin1: meanOrNull(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 1))),
1047
+ stepAccuracyWithin2: meanOrNull(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 2))),
1048
+ stepAccuracyWithin3: meanOrNull(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 3))),
1049
+ stepAccuracyWithin4: meanOrNull(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 4))),
1050
+ stepAccuracyWithin5: meanOrNull(scored.map((row) => Number(row.roundedDistance !== null && row.roundedDistance <= 5))),
1051
+ meanStepDistance: meanOrNull(predicted.map((row) => row.distance)),
1052
+ normalizedMeanStepDistance: meanOrNull(normalized.map((row) => row.normalizedDistance)),
1052
1053
  normalizedDistanceRuns: normalized.length,
1053
1054
  normalizedDistanceUnknownRuns: scored.length - normalized.length,
1054
- rootCauseCategoryAccuracy: mean$1(scored.map((row) => Number(row.rootCategoryMatch))),
1055
- anyFailureCategoryAccuracy: mean$1(scored.map((row) => Number(row.anyCategoryMatch))),
1056
- earliestFailureCategoryAccuracy: mean$1(scored.map((row) => Number(row.earliestCategoryMatch))),
1057
- terminalFailureCategoryAccuracy: mean$1(scored.map((row) => Number(row.terminalCategoryMatch)))
1055
+ rootCauseCategoryAccuracy: meanOrNull(scored.map((row) => Number(row.rootCategoryMatch))),
1056
+ anyFailureCategoryAccuracy: meanOrNull(scored.map((row) => Number(row.anyCategoryMatch))),
1057
+ earliestFailureCategoryAccuracy: meanOrNull(scored.map((row) => Number(row.earliestCategoryMatch))),
1058
+ terminalFailureCategoryAccuracy: meanOrNull(scored.map((row) => Number(row.terminalCategoryMatch)))
1058
1059
  };
1059
1060
  }
1060
1061
  function scoredObservation(observation) {
@@ -1101,9 +1102,6 @@ function requiredStringArray(value, caseId, field) {
1101
1102
  if (!Array.isArray(value) || value.length === 0 || value.some((entry) => typeof entry !== "string" || !entry.trim())) throw new TypeError(`${caseId}: ${field} must be a non-empty string array`);
1102
1103
  return value;
1103
1104
  }
1104
- function mean$1(values) {
1105
- return values.length === 0 ? null : values.reduce((total, value) => total + value, 0) / values.length;
1106
- }
1107
1105
  function rate$3(value) {
1108
1106
  return value === null ? "n/a" : value.toFixed(3);
1109
1107
  }
@@ -1212,8 +1210,8 @@ function compareMetric(options) {
1212
1210
  if (caseBefore.length === 0 || !clusterId) continue;
1213
1211
  pairedCases.push({
1214
1212
  clusterId,
1215
- baseline: mean$3(caseBefore),
1216
- candidate: mean$3(caseAfter)
1213
+ baseline: mean$1(caseBefore),
1214
+ candidate: mean$1(caseAfter)
1217
1215
  });
1218
1216
  }
1219
1217
  const byCluster = /* @__PURE__ */ new Map();
@@ -1222,8 +1220,8 @@ function compareMetric(options) {
1222
1220
  rows.push(pairedCase);
1223
1221
  byCluster.set(pairedCase.clusterId, rows);
1224
1222
  }
1225
- const before = [...byCluster.values()].map((rows) => mean$3(rows.map((row) => row.baseline)));
1226
- const after = [...byCluster.values()].map((rows) => mean$3(rows.map((row) => row.candidate)));
1223
+ const before = [...byCluster.values()].map((rows) => mean$1(rows.map((row) => row.baseline)));
1224
+ const after = [...byCluster.values()].map((rows) => mean$1(rows.map((row) => row.candidate)));
1227
1225
  const interval = before.length === 0 ? null : pairedBootstrap(before, after, {
1228
1226
  confidence: options.confidence,
1229
1227
  resamples: options.resamples,
@@ -1246,8 +1244,8 @@ function compareMetric(options) {
1246
1244
  candidateMissingObservations,
1247
1245
  asymmetricMissingObservations,
1248
1246
  survivorOnly,
1249
- baselineMean: before.length === 0 ? null : mean$3(before),
1250
- candidateMean: after.length === 0 ? null : mean$3(after),
1247
+ baselineMean: before.length === 0 ? null : mean$1(before),
1248
+ candidateMean: after.length === 0 ? null : mean$1(after),
1251
1249
  meanDelta: interval?.mean ?? null,
1252
1250
  intervalLow: interval?.low ?? null,
1253
1251
  intervalHigh: interval?.high ?? null,
@@ -2019,7 +2017,7 @@ const ANALYST_BENCHMARK_IMPLEMENTATION_FILES = Object.freeze([
2019
2017
  "src/trace/redaction/detectors.ts",
2020
2018
  "src/verdict-cache.ts"
2021
2019
  ]);
2022
- const ANALYST_BENCHMARK_IMPLEMENTATION_SHA256 = "6e7968e5427d669897471f5c1225846769c490164022c59efbe0e548e4c76ca7";
2020
+ const ANALYST_BENCHMARK_IMPLEMENTATION_SHA256 = "63f2202ac8fbdd98316c66e119824968f6c249f8377d09e6a828077868b1ee66";
2023
2021
  // src/analyst/benchmark-evidence-validation.ts
2024
2022
  const MIN_ACTION_EXCERPT_CHARACTERS = 12;
2025
2023
  const MAX_LABEL_SCAN_DEPTH = 64;
@@ -3445,7 +3443,7 @@ function summarizeRunner(runnerId, observations) {
3445
3443
  expectedIncorrectSteps: expected,
3446
3444
  predictedIncorrectSteps: predicted,
3447
3445
  matchedIncorrectSteps: matched,
3448
- officialAllRowF1: mean(officialRows),
3446
+ officialAllRowF1: meanOrNull(officialRows),
3449
3447
  officialAllRowRuns: officialRows.length,
3450
3448
  precision,
3451
3449
  recall,
@@ -3483,9 +3481,6 @@ function sum(values) {
3483
3481
  function ratio(numerator, denominator) {
3484
3482
  return denominator === 0 ? null : numerator / denominator;
3485
3483
  }
3486
- function mean(values) {
3487
- return values.length === 0 ? null : sum(values) / values.length;
3488
- }
3489
3484
  function harmonicMean(left, right) {
3490
3485
  if (left === null || right === null) return null;
3491
3486
  return left + right === 0 ? 0 : 2 * left * right / (left + right);
@@ -6859,4 +6854,4 @@ function shellQuote(value) {
6859
6854
  }
6860
6855
  export { agentRxBenchmarkCase as A, ANALYST_BENCHMARK_COST_LEDGER_FILE as C, AGENT_RX_UPSTREAM_REVISION as D, ANALYST_BENCHMARK_OBSERVATIONS_FILE as E, runAnalystBenchmark as F, traceStoreEvidenceResolver as I, normalizeAgentRxCategory as M, externalId as N, codeTraceBenchCase as O, positiveStep as P, ANALYST_BENCHMARK_IMPLEMENTATION_FILES as S, ANALYST_BENCHMARK_MANIFEST_FILE as T, readAnalystBenchmarkArtifact as _, runInlineAnalystDefinition as a, ANALYST_BENCHMARK_EVIDENCE_DEPENDENCY_LOCK_SHA256 as b, publicRlmAnalystDefinition as c, publicDirectAnalystDefinition as d, runChunkedAnalystDefinition as f, expandCodeTraceFailureBlocks as g, analystDefinitionProtocolSha256 as h, primeCodeTraceAnalystDefinition as i, agentRxPredictionsToFindings as j, codeTracerPredictionsToFindings as k, runReplVariableAnalystDefinition as l, analystDefinitionAsymmetries as m, createPrimeBenchmarkRunner as n, loadPublicBenchmarkRows as o, AnalystExpressivenessError as p, primeAnalystProtocolSha256 as r, createPublicBenchmarkRlmRunner as s, runAnalystBenchmarkCommand as t, createPublicBenchmarkDirectRunner as u, CODE_TRACE_BENCH_ANALYST_PROMPT as v, ANALYST_BENCHMARK_LOCAL_RECEIPT_FILE as w, ANALYST_BENCHMARK_EVIDENCE_IMPLEMENTATION_SHA256 as x, publicBenchmarkProtocolSha256 as y };
6861
6856
 
6862
- //# sourceMappingURL=benchmark-command-Cr7i7YSX.js.map
6857
+ //# sourceMappingURL=benchmark-command-CH86twZj.js.map