@tangle-network/agent-eval 0.222.0 → 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 (80) hide show
  1. package/CHANGELOG.md +177 -0
  2. package/dist/analyst/index.d.ts.map +1 -1
  3. package/dist/analyst/index.js +1 -1
  4. package/dist/{analyze-runs-CTheASYV.js → analyze-runs-Ck68mbgj.js} +7 -9
  5. package/dist/analyze-runs-Ck68mbgj.js.map +1 -0
  6. package/dist/{benchmark-command-jYWR2gya.js → benchmark-command-CH86twZj.js} +32 -37
  7. package/dist/benchmark-command-CH86twZj.js.map +1 -0
  8. package/dist/benchmarks/index.js +3 -3
  9. package/dist/campaign/index.js +9 -9
  10. package/dist/{campaign-ddr1N3yD.js → campaign-DdOgQfp8.js} +14 -19
  11. package/dist/campaign-DdOgQfp8.js.map +1 -0
  12. package/dist/{campaign-evidence-DN8rWuBj.js → campaign-evidence-MjCjkb5a.js} +3 -3
  13. package/dist/{campaign-evidence-DN8rWuBj.js.map → campaign-evidence-MjCjkb5a.js.map} +1 -1
  14. package/dist/cli.js +4 -4
  15. package/dist/contract/index.js +11 -10
  16. package/dist/contract/index.js.map +1 -1
  17. package/dist/{define-agent-eval-BLoP4Lf9.js → define-agent-eval-Cc15qGik.js} +5 -5
  18. package/dist/{define-agent-eval-BLoP4Lf9.js.map → define-agent-eval-Cc15qGik.js.map} +1 -1
  19. package/dist/diagnosis/index.js +1 -1
  20. package/dist/{eval-campaign-Cgixrvf7.js → eval-campaign-C_mNDshv.js} +2 -2
  21. package/dist/{eval-campaign-Cgixrvf7.js.map → eval-campaign-C_mNDshv.js.map} +1 -1
  22. package/dist/experiment/index.js +7 -7
  23. package/dist/index-B7v2QHlD.d.ts.map +1 -1
  24. package/dist/index-DAk2quYu.d.ts.map +1 -1
  25. package/dist/index-aDPVYBIM.d.ts.map +1 -1
  26. package/dist/index.js +13 -12
  27. package/dist/index.js.map +1 -1
  28. package/dist/{judge-gate-C2BCOt-M.js → judge-gate-Di_6bifh.js} +4 -4
  29. package/dist/judge-gate-Di_6bifh.js.map +1 -0
  30. package/dist/{llm-judge-cgbhTKQp.js → llm-judge-D6JtIqiU.js} +9 -9
  31. package/dist/{llm-judge-cgbhTKQp.js.map → llm-judge-D6JtIqiU.js.map} +1 -1
  32. package/dist/mean-BPuUNznQ.js +16 -0
  33. package/dist/mean-BPuUNznQ.js.map +1 -0
  34. package/dist/meta-eval/index.js +1 -1
  35. package/dist/openapi.json +1 -1
  36. package/dist/{paired-arms-D-54hO-k.js → paired-arms-D5H_58e8.js} +2 -2
  37. package/dist/{paired-arms-D-54hO-k.js.map → paired-arms-D5H_58e8.js.map} +1 -1
  38. package/dist/{paired-promotion-decision-FGvHA4p_.js → paired-promotion-decision-BiVumgvM.js} +2 -2
  39. package/dist/{paired-promotion-decision-FGvHA4p_.js.map → paired-promotion-decision-BiVumgvM.js.map} +1 -1
  40. package/dist/{mean-CdDYG-us.js → paired-tests-C2zUqgUW.js} +2 -7
  41. package/dist/paired-tests-C2zUqgUW.js.map +1 -0
  42. package/dist/{pareto-B9udAt2i.js → pareto-7_LEmYGG.js} +4 -3
  43. package/dist/{pareto-B9udAt2i.js.map → pareto-7_LEmYGG.js.map} +1 -1
  44. package/dist/{power-and-mde-ClI6RWw4.js → power-and-mde-CHvyDO_H.js} +2 -2
  45. package/dist/{power-and-mde-ClI6RWw4.js.map → power-and-mde-CHvyDO_H.js.map} +1 -1
  46. package/dist/{promotion-policy-CBYeD4zi.js → promotion-policy-D7B4_jEZ.js} +4 -4
  47. package/dist/{promotion-policy-CBYeD4zi.js.map → promotion-policy-D7B4_jEZ.js.map} +1 -1
  48. package/dist/reporting.js +3 -3
  49. package/dist/{reward-hacking-DZzHZlS1.js → reward-hacking-Bjk3MAjh.js} +7 -9
  50. package/dist/{reward-hacking-DZzHZlS1.js.map → reward-hacking-Bjk3MAjh.js.map} +1 -1
  51. package/dist/reward-hacking-C9hPVT0Q.d.ts.map +1 -1
  52. package/dist/rl.js +6 -6
  53. package/dist/{run-record-CZy4-TnZ.js → run-record-BUm-Jggo.js} +2 -2
  54. package/dist/{run-record-CZy4-TnZ.js.map → run-record-BUm-Jggo.js.map} +1 -1
  55. package/dist/search/index.js +2 -2
  56. package/dist/{search-summary-Ct7SrmVc.js → search-summary-Bt3uuK53.js} +4 -4
  57. package/dist/{search-summary-Ct7SrmVc.js.map → search-summary-Bt3uuK53.js.map} +1 -1
  58. package/dist/{sequential-B1I0tRfL.js → sequential-De7BTAlV.js} +2 -2
  59. package/dist/{sequential-B1I0tRfL.js.map → sequential-De7BTAlV.js.map} +1 -1
  60. package/dist/{skillopt-optimization-method-qB1M554K.js → skillopt-optimization-method-BKFbJEyz.js} +9 -12
  61. package/dist/skillopt-optimization-method-BKFbJEyz.js.map +1 -0
  62. package/dist/{statistical-heldout-TP6ndL0B.js → statistical-heldout-C9hz_AF9.js} +3 -3
  63. package/dist/{statistical-heldout-TP6ndL0B.js.map → statistical-heldout-C9hz_AF9.js.map} +1 -1
  64. package/dist/storyboard/index.d.ts +17 -0
  65. package/dist/storyboard/index.d.ts.map +1 -1
  66. package/dist/storyboard/index.js +154 -107
  67. package/dist/storyboard/index.js.map +1 -1
  68. package/dist/{summary-report-CPfsrLac.js → summary-report-BLnTyQKH.js} +5 -4
  69. package/dist/{summary-report-CPfsrLac.js.map → summary-report-BLnTyQKH.js.map} +1 -1
  70. package/dist/trace-repair/index.js +2 -1
  71. package/dist/trace-repair/index.js.map +1 -1
  72. package/dist/{tree-DrIChF4a.js → tree-DnBkWXun.js} +5 -4
  73. package/dist/{tree-DrIChF4a.js.map → tree-DnBkWXun.js.map} +1 -1
  74. package/package.json +2 -2
  75. package/dist/analyze-runs-CTheASYV.js.map +0 -1
  76. package/dist/benchmark-command-jYWR2gya.js.map +0 -1
  77. package/dist/campaign-ddr1N3yD.js.map +0 -1
  78. package/dist/judge-gate-C2BCOt-M.js.map +0 -1
  79. package/dist/mean-CdDYG-us.js.map +0 -1
  80. package/dist/skillopt-optimization-method-qB1M554K.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "../rolldown-runtime-BJohB4LM.js";
2
2
  import { o as summarizeNumberSeries } from "../descriptive-cPwITVfy.js";
3
- import { t as mean } from "../mean-CdDYG-us.js";
4
- import { Z as runCampaign } from "../llm-judge-cgbhTKQp.js";
3
+ import { t as mean } from "../mean-BPuUNznQ.js";
4
+ import { Z as runCampaign } from "../llm-judge-D6JtIqiU.js";
5
5
  import { M as fsCampaignStorage } from "../external-optimizer-subprocess-U616hV_l.js";
6
- import "../campaign-ddr1N3yD.js";
6
+ import "../campaign-DdOgQfp8.js";
7
7
  import { join, resolve } from "node:path";
8
8
  import { readFile, readdir, stat } from "node:fs/promises";
9
9
  import { parse } from "smol-toml";
@@ -1,16 +1,16 @@
1
- import { a as heldoutSignificance, i as dimensionRegressions, o as pairHoldout } from "../statistical-heldout-TP6ndL0B.js";
2
- import { $ as resolveRunDir, A as campaignCellSearchResult, C as surfaceDiff, D as createSearchHistoryReceipt, E as assertSearchHistoryMatchesState, F as uniform, M as searchProposalExecution, N as searchReceiptAccounting, O as verifySearchHistoryArtifact, P as asha, Q as planCampaignRun, S as searchEdgeId, X as runEval, Z as runCampaign, _ as crowdedFrontierParent, b as SearchRecorder, c as readGepaCandidatePopulationArtifact, et as buildCellSchedule, f as runImprovementLoop, g as beam, h as aide, j as searchModelIdentity, k as verifySearchHistoryReceipt, m as isProposedCandidate, n as isTransientTransportFailure, p as runOptimization, r as transientDispatchFailure, t as llmJudge, tt as cellCachePath, u as costFromLedgerSummary, v as incumbent, w as surfaceNode, x as developmentClaim, y as incumbentWithOperatorBandit, z as defaultProductionGate } from "../llm-judge-cgbhTKQp.js";
3
- import { A as campaignSplitDigest, O as campaignCoverage, T as assertCampaignDesign, f as campaignBreakdown, j as campaignSplitDigestFromIdentities, k as campaignScenarioIdentity, l as canonicalDigest, p as campaignMeanComposite, u as emitLoopProvenance, v as powerPreflight } from "../campaign-evidence-DN8rWuBj.js";
1
+ import { a as heldoutSignificance, i as dimensionRegressions, o as pairHoldout } from "../statistical-heldout-C9hz_AF9.js";
2
+ import { $ as resolveRunDir, A as campaignCellSearchResult, C as surfaceDiff, D as createSearchHistoryReceipt, E as assertSearchHistoryMatchesState, F as uniform, M as searchProposalExecution, N as searchReceiptAccounting, O as verifySearchHistoryArtifact, P as asha, Q as planCampaignRun, S as searchEdgeId, X as runEval, Z as runCampaign, _ as crowdedFrontierParent, b as SearchRecorder, c as readGepaCandidatePopulationArtifact, et as buildCellSchedule, f as runImprovementLoop, g as beam, h as aide, j as searchModelIdentity, k as verifySearchHistoryReceipt, m as isProposedCandidate, n as isTransientTransportFailure, p as runOptimization, r as transientDispatchFailure, t as llmJudge, tt as cellCachePath, u as costFromLedgerSummary, v as incumbent, w as surfaceNode, x as developmentClaim, y as incumbentWithOperatorBandit, z as defaultProductionGate } from "../llm-judge-D6JtIqiU.js";
3
+ import { A as campaignSplitDigest, O as campaignCoverage, T as assertCampaignDesign, f as campaignBreakdown, j as campaignSplitDigestFromIdentities, k as campaignScenarioIdentity, l as canonicalDigest, p as campaignMeanComposite, u as emitLoopProvenance, v as powerPreflight } from "../campaign-evidence-MjCjkb5a.js";
4
4
  import { a as SearchLedgerError, o as SearchLedgerIntegrityError } from "../search-ledger-file-DTBD6X-y.js";
5
5
  import { M as fsCampaignStorage, N as inMemoryCampaignStorage, j as createRunCostLedger, l as DEFAULT_EXTERNAL_OPTIMIZER_CALLBACK_LIMITS, u as DEFAULT_EXTERNAL_OPTIMIZER_PROCESS_LIMITS } from "../external-optimizer-subprocess-U616hV_l.js";
6
6
  import { a as componentSurfaceIdentityMaterial, c as surfaceDispatchRef, i as codeSurfaceIdentityMaterial, l as surfaceHash, o as renderSurfaceDiff, r as assertCodeSurfaceIdentity, s as surfaceContentHash } from "../json-recovery-DK4MDm5r.js";
7
7
  import { a as makeProposalFinding } from "../types-BK0blWhe.js";
8
- import { C as SEARCH_ESTIMATOR, D as searchEstimateMethod, E as searchCellSetDigest, O as searchPosterior, T as estimateNodeFromCells, _ as planSearchClaim, a as searchDivergence, b as verifySearchClaim, g as decideSearchClaim, h as SEARCH_CLAIM_RULE, i as runSearch, o as searchPolicyView, v as searchClaimDecision, w as estimateNode, y as searchClaimReserveUsd } from "../pareto-B9udAt2i.js";
8
+ import { C as SEARCH_ESTIMATOR, D as searchEstimateMethod, E as searchCellSetDigest, O as searchPosterior, T as estimateNodeFromCells, _ as planSearchClaim, a as searchDivergence, b as verifySearchClaim, g as decideSearchClaim, h as SEARCH_CLAIM_RULE, i as runSearch, o as searchPolicyView, v as searchClaimDecision, w as estimateNode, y as searchClaimReserveUsd } from "../pareto-7_LEmYGG.js";
9
9
  import { a as validateSearchLedgerEvent, c as SearchStateView, d as searchNodeId, f as searchTaskSetDigest, i as replaySearchLedgerText, l as searchUnitScores, n as openSearchLedger, o as SEARCH_LEDGER_SCHEMA, r as parseSearchLedgerLine, s as SearchState, t as FileSearchLedger, u as searchCellId } from "../search-ledger-BsVi-Ngv.js";
10
10
  import { t as acquireSingleRunLock } from "../single-run-lock-BGlW3OSk.js";
11
- import { n as searchProposerView, t as renderSearchSummary } from "../search-summary-Ct7SrmVc.js";
12
- import { C as measureCampaignCost, S as analyzeCrossSurfaceInteractions, _ as neutralizationGate, a as createRetainedDispatch, b as loadEvalFixtureScenarios, c as runProfileMatrixSegment, d as scoreUserStory, f as scoreboardSummary, g as neutralizeText, h as sequentialOptimizationMethod, i as scoreDiscrimination, l as runProfileMatrix, m as scopedOptimizationMethod, n as resolveWorktreePath, o as createProfileMatrixPlan, p as userStoryScoreboard, r as verifyCodeSurface, s as finalizeProfileMatrix, t as gitWorktreeAdapter, u as renderScoreboardMarkdown, v as discoverEvalFixtures, x as planEvalFixtureRun, y as loadEvalFixture } from "../campaign-ddr1N3yD.js";
13
- import { a as importExternalEvaluations, c as composeGate, d as readExternalOptimizerObservationArtifact, i as externalSurface, l as externalTextOptimizationMethod, n as compareOptimizationMethods, o as importGepaPopulation, r as gepaOptimizationMethod, s as heldOutGate, t as skillOptOptimizationMethod, u as decodeExternalTextCandidate } from "../skillopt-optimization-method-qB1M554K.js";
14
- import { n as paretoPolicy, r as paretoSignificanceGate, t as buildEvidenceVector } from "../promotion-policy-CBYeD4zi.js";
15
- import { n as sequentialPairedGate, t as sequentialDecide } from "../sequential-B1I0tRfL.js";
11
+ import { n as searchProposerView, t as renderSearchSummary } from "../search-summary-Bt3uuK53.js";
12
+ import { C as measureCampaignCost, S as analyzeCrossSurfaceInteractions, _ as neutralizationGate, a as createRetainedDispatch, b as loadEvalFixtureScenarios, c as runProfileMatrixSegment, d as scoreUserStory, f as scoreboardSummary, g as neutralizeText, h as sequentialOptimizationMethod, i as scoreDiscrimination, l as runProfileMatrix, m as scopedOptimizationMethod, n as resolveWorktreePath, o as createProfileMatrixPlan, p as userStoryScoreboard, r as verifyCodeSurface, s as finalizeProfileMatrix, t as gitWorktreeAdapter, u as renderScoreboardMarkdown, v as discoverEvalFixtures, x as planEvalFixtureRun, y as loadEvalFixture } from "../campaign-DdOgQfp8.js";
13
+ import { a as importExternalEvaluations, c as composeGate, d as readExternalOptimizerObservationArtifact, i as externalSurface, l as externalTextOptimizationMethod, n as compareOptimizationMethods, o as importGepaPopulation, r as gepaOptimizationMethod, s as heldOutGate, t as skillOptOptimizationMethod, u as decodeExternalTextCandidate } from "../skillopt-optimization-method-BKFbJEyz.js";
14
+ import { n as paretoPolicy, r as paretoSignificanceGate, t as buildEvidenceVector } from "../promotion-policy-D7B4_jEZ.js";
15
+ import { n as sequentialPairedGate, t as sequentialDecide } from "../sequential-De7BTAlV.js";
16
16
  export { DEFAULT_EXTERNAL_OPTIMIZER_CALLBACK_LIMITS, DEFAULT_EXTERNAL_OPTIMIZER_PROCESS_LIMITS, FileSearchLedger, SEARCH_CLAIM_RULE, SEARCH_ESTIMATOR, SEARCH_LEDGER_SCHEMA, SearchLedgerError, SearchLedgerIntegrityError, SearchRecorder, SearchState, SearchStateView, acquireSingleRunLock, aide, analyzeCrossSurfaceInteractions, asha, assertCampaignDesign, assertCodeSurfaceIdentity, assertSearchHistoryMatchesState, beam, buildCellSchedule, buildEvidenceVector, campaignBreakdown, campaignCellSearchResult, campaignCoverage, campaignMeanComposite, campaignScenarioIdentity, campaignSplitDigest, campaignSplitDigestFromIdentities, canonicalDigest, cellCachePath, codeSurfaceIdentityMaterial, compareOptimizationMethods, componentSurfaceIdentityMaterial, composeGate, costFromLedgerSummary, createProfileMatrixPlan, createRetainedDispatch, createRunCostLedger, createSearchHistoryReceipt, crowdedFrontierParent, decideSearchClaim, decodeExternalTextCandidate, defaultProductionGate, developmentClaim, dimensionRegressions, discoverEvalFixtures, emitLoopProvenance, estimateNode, estimateNodeFromCells, externalSurface, externalTextOptimizationMethod, finalizeProfileMatrix, fsCampaignStorage, gepaOptimizationMethod, gitWorktreeAdapter, heldOutGate, heldoutSignificance, importExternalEvaluations, importGepaPopulation, inMemoryCampaignStorage, incumbent, incumbentWithOperatorBandit, isProposedCandidate, isTransientTransportFailure, llmJudge, loadEvalFixture, loadEvalFixtureScenarios, makeProposalFinding, measureCampaignCost, neutralizationGate, neutralizeText, openSearchLedger, pairHoldout, paretoPolicy, paretoSignificanceGate, parseSearchLedgerLine, planCampaignRun, planEvalFixtureRun, planSearchClaim, powerPreflight, readExternalOptimizerObservationArtifact, readGepaCandidatePopulationArtifact, renderScoreboardMarkdown, renderSearchSummary, renderSurfaceDiff, replaySearchLedgerText, resolveRunDir, resolveWorktreePath, runCampaign, runEval, runImprovementLoop, runOptimization, runProfileMatrix, runProfileMatrixSegment, runSearch, scopedOptimizationMethod, scoreDiscrimination, scoreUserStory, scoreboardSummary, searchCellId, searchCellSetDigest, searchClaimDecision, searchClaimReserveUsd, searchDivergence, searchEdgeId, searchEstimateMethod, searchModelIdentity, searchNodeId, searchPolicyView, searchPosterior, searchProposalExecution, searchProposerView, searchReceiptAccounting, searchTaskSetDigest, searchUnitScores, sequentialDecide, sequentialOptimizationMethod, sequentialPairedGate, skillOptOptimizationMethod, surfaceContentHash, surfaceDiff, surfaceDispatchRef, surfaceHash, surfaceNode, transientDispatchFailure, uniform, userStoryScoreboard, validateSearchLedgerEvent, verifyCodeSurface, verifySearchClaim, verifySearchHistoryArtifact, verifySearchHistoryReceipt };
@@ -3,24 +3,25 @@ import { a as hashCanonical, i as compareCodeUnits, r as canonicalString } from
3
3
  import { a as agentProfileModelId, i as agentProfileId, r as agentProfileHash, s as harnessAxisOf } from "./agent-profile-Dngk3LZ0.js";
4
4
  import { i as buildAgentProfileCell } from "./agent-profile-cell-CT5JYueM.js";
5
5
  import { c as validateRunRecord, i as modelHasSnapshot, n as UNKNOWN_MODEL, o as runTaskScore } from "./run-record-DEjx43cI.js";
6
- import { t as comparePairedArms } from "./paired-arms-D-54hO-k.js";
7
- import { i as pairedBootstrap, t as mean } from "./mean-CdDYG-us.js";
8
- import { o as pairHoldout } from "./statistical-heldout-TP6ndL0B.js";
6
+ import { t as comparePairedArms } from "./paired-arms-D5H_58e8.js";
7
+ import { r as pairedBootstrap } from "./paired-tests-C2zUqgUW.js";
8
+ import { n as meanOrNull, t as mean } from "./mean-BPuUNznQ.js";
9
+ import { o as pairHoldout } from "./statistical-heldout-C9hz_AF9.js";
9
10
  import { d as mapConcurrent } from "./journal-C1uLJi0w.js";
10
11
  import { n as contentHash, t as canonicalJson } from "./verdict-cache-BVH-fl18.js";
11
- import { $ as resolveRunDir, Q as planCampaignRun, Z as runCampaign, l as combineComparisonCosts, nt as computeManifestHash, o as executeOptimizationMethod, tt as cellCachePath } from "./llm-judge-cgbhTKQp.js";
12
- import { n as campaignCellToRunRecord, r as projectCampaignCellQuality, t as campaignCellCostProvenance } from "./run-record-CZy4-TnZ.js";
13
- import { C as assertRealBackend, T as assertCampaignDesign, k as campaignScenarioIdentity, w as summarizeBackendIntegrity } from "./campaign-evidence-DN8rWuBj.js";
12
+ import { $ as resolveRunDir, Q as planCampaignRun, Z as runCampaign, l as combineComparisonCosts, nt as computeManifestHash, o as executeOptimizationMethod, tt as cellCachePath } from "./llm-judge-D6JtIqiU.js";
13
+ import { n as campaignCellToRunRecord, r as projectCampaignCellQuality, t as campaignCellCostProvenance } from "./run-record-BUm-Jggo.js";
14
+ import { C as assertRealBackend, T as assertCampaignDesign, k as campaignScenarioIdentity, w as summarizeBackendIntegrity } from "./campaign-evidence-MjCjkb5a.js";
14
15
  import { M as fsCampaignStorage } from "./external-optimizer-subprocess-U616hV_l.js";
15
16
  import { r as assertCodeSurfaceIdentity, s as surfaceContentHash } from "./json-recovery-DK4MDm5r.js";
16
17
  import "./types-BK0blWhe.js";
17
- import "./pareto-B9udAt2i.js";
18
+ import "./pareto-7_LEmYGG.js";
18
19
  import "./search-ledger-BsVi-Ngv.js";
19
- import "./search-summary-Ct7SrmVc.js";
20
+ import "./search-summary-Bt3uuK53.js";
20
21
  import { r as verifyCompletion } from "./completion-verifier-rqbMh5-4.js";
21
22
  import "./external-optimizer-process-BRVmaDFe.js";
22
- import "./skillopt-optimization-method-qB1M554K.js";
23
- import "./sequential-B1I0tRfL.js";
23
+ import "./skillopt-optimization-method-BKFbJEyz.js";
24
+ import "./sequential-De7BTAlV.js";
24
25
  import { createHash } from "node:crypto";
25
26
  import { z } from "zod";
26
27
  import { closeSync, constants, existsSync, fstatSync, lstatSync, mkdirSync, mkdtempSync, openSync, readFileSync, readSync, readdirSync, readlinkSync, realpathSync, rmSync, statSync } from "node:fs";
@@ -531,9 +532,6 @@ function distribution(values) {
531
532
  total
532
533
  };
533
534
  }
534
- function meanOrNull$1(values) {
535
- return values.length === 0 ? null : values.reduce((sum, value) => sum + value, 0) / values.length;
536
- }
537
535
  function unique(values) {
538
536
  return [...new Set(values)];
539
537
  }
@@ -637,8 +635,8 @@ function interactionEffect(context, baseline, singles, composition) {
637
635
  perTask,
638
636
  n: complete.length,
639
637
  nMissing: perTask.length - complete.length,
640
- meanPassInteraction: meanOrNull$1(passInteractions),
641
- meanScoreInteraction: meanOrNull$1(scoreInteractions),
638
+ meanPassInteraction: meanOrNull(passInteractions),
639
+ meanScoreInteraction: meanOrNull(scoreInteractions),
642
640
  passBootstrap: bootstrapInteraction(passInteractions, context),
643
641
  scoreBootstrap: bootstrapInteraction(scoreInteractions, context)
644
642
  };
@@ -1689,9 +1687,6 @@ async function runProfileMatrix(opts) {
1689
1687
  function scoreOf(r) {
1690
1688
  return runTaskScore(r);
1691
1689
  }
1692
- function meanOrNull(values) {
1693
- return values.length === 0 ? null : mean(values);
1694
- }
1695
1690
  function rollup(records, keyOf) {
1696
1691
  const groups = /* @__PURE__ */ new Map();
1697
1692
  for (const r of records) {
@@ -3101,4 +3096,4 @@ function resolveWorktreePath(surface, worktreeDir) {
3101
3096
  }
3102
3097
  export { measureCampaignCost as C, analyzeCrossSurfaceInteractions as S, neutralizationGate as _, createRetainedDispatch as a, loadEvalFixtureScenarios as b, runProfileMatrixSegment as c, scoreUserStory as d, scoreboardSummary as f, neutralizeText as g, sequentialOptimizationMethod as h, scoreDiscrimination as i, runProfileMatrix as l, scopedOptimizationMethod as m, resolveWorktreePath as n, createProfileMatrixPlan as o, userStoryScoreboard as p, verifyCodeSurface as r, finalizeProfileMatrix as s, gitWorktreeAdapter as t, renderScoreboardMarkdown as u, discoverEvalFixtures as v, planEvalFixtureRun as x, loadEvalFixture as y };
3103
3098
 
3104
- //# sourceMappingURL=campaign-ddr1N3yD.js.map
3099
+ //# sourceMappingURL=campaign-DdOgQfp8.js.map