@tangle-network/agent-eval 0.128.2 → 0.130.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 (424) hide show
  1. package/CHANGELOG.md +279 -0
  2. package/README.md +19 -0
  3. package/dist/active-curriculum-C4mk67HP.js +214 -0
  4. package/dist/active-curriculum-C4mk67HP.js.map +1 -0
  5. package/dist/adversarial-smnADNFS.d.ts +21 -0
  6. package/dist/adversarial-smnADNFS.d.ts.map +1 -0
  7. package/dist/analyst/index.d.ts +83 -2932
  8. package/dist/analyst/index.d.ts.map +1 -0
  9. package/dist/analyst/index.js +319 -364
  10. package/dist/analyst/index.js.map +1 -1
  11. package/dist/analyst-BkTS3C58.d.ts +89 -0
  12. package/dist/analyst-BkTS3C58.d.ts.map +1 -0
  13. package/dist/analyst-LsnNpSkm.js +152 -0
  14. package/dist/analyst-LsnNpSkm.js.map +1 -0
  15. package/dist/analyze-runs-C1CavBMk.js +1067 -0
  16. package/dist/analyze-runs-C1CavBMk.js.map +1 -0
  17. package/dist/analyze-runs-FsgYCinh.d.ts +72 -0
  18. package/dist/analyze-runs-FsgYCinh.d.ts.map +1 -0
  19. package/dist/attribute-vocabulary-DLJ6303h.d.ts +54 -0
  20. package/dist/attribute-vocabulary-DLJ6303h.d.ts.map +1 -0
  21. package/dist/authenticity/index.d.ts +81 -79
  22. package/dist/authenticity/index.d.ts.map +1 -0
  23. package/dist/authenticity/index.js +209 -193
  24. package/dist/authenticity/index.js.map +1 -1
  25. package/dist/baseline-HsBvw_dk.js +550 -0
  26. package/dist/baseline-HsBvw_dk.js.map +1 -0
  27. package/dist/baseline-hG3K85h4.d.ts +125 -0
  28. package/dist/baseline-hG3K85h4.d.ts.map +1 -0
  29. package/dist/belief-state/index.d.ts +448 -1205
  30. package/dist/belief-state/index.d.ts.map +1 -0
  31. package/dist/belief-state/index.js +1617 -1710
  32. package/dist/belief-state/index.js.map +1 -1
  33. package/dist/benchmarks/index.d.ts +2 -894
  34. package/dist/benchmarks/index.js +2 -59
  35. package/dist/benchmarks-DviOvUNr.js +754 -0
  36. package/dist/benchmarks-DviOvUNr.js.map +1 -0
  37. package/dist/builder-eval/index.d.ts +150 -662
  38. package/dist/builder-eval/index.d.ts.map +1 -0
  39. package/dist/builder-eval/index.js +356 -345
  40. package/dist/builder-eval/index.js.map +1 -1
  41. package/dist/calibration-CNWWA6K8.js +94 -0
  42. package/dist/calibration-CNWWA6K8.js.map +1 -0
  43. package/dist/campaign/index.d.ts +5 -6390
  44. package/dist/campaign/index.js +3 -212
  45. package/dist/campaign-CBKZvQ1H.js +3885 -0
  46. package/dist/campaign-CBKZvQ1H.js.map +1 -0
  47. package/dist/cli.d.ts +1 -1
  48. package/dist/cli.js +164 -174
  49. package/dist/cli.js.map +1 -1
  50. package/dist/client-C97NMzqi.d.ts +581 -0
  51. package/dist/client-C97NMzqi.d.ts.map +1 -0
  52. package/dist/client-CYzbdJOZ.js +637 -0
  53. package/dist/client-CYzbdJOZ.js.map +1 -0
  54. package/dist/code-agent-session-BjkMTQ7H.js +1390 -0
  55. package/dist/code-agent-session-BjkMTQ7H.js.map +1 -0
  56. package/dist/code-agent-session-DqqgOJaz.d.ts +143 -0
  57. package/dist/code-agent-session-DqqgOJaz.d.ts.map +1 -0
  58. package/dist/concurrency-DIxRZF_J.js +85 -0
  59. package/dist/concurrency-DIxRZF_J.js.map +1 -0
  60. package/dist/contract/index.d.ts +645 -5605
  61. package/dist/contract/index.d.ts.map +1 -0
  62. package/dist/contract/index.js +1730 -1937
  63. package/dist/contract/index.js.map +1 -1
  64. package/dist/control.d.ts +3 -1030
  65. package/dist/control.js +2 -32
  66. package/dist/cost-ledger-DIgQUFZZ.js +801 -0
  67. package/dist/cost-ledger-DIgQUFZZ.js.map +1 -0
  68. package/dist/cost-ledger-Dye6jCgg.d.ts +236 -0
  69. package/dist/cost-ledger-Dye6jCgg.d.ts.map +1 -0
  70. package/dist/dataset-BvtnC8Dc.d.ts +115 -0
  71. package/dist/dataset-BvtnC8Dc.d.ts.map +1 -0
  72. package/dist/default-registry-C-vFCSEc.js +2579 -0
  73. package/dist/default-registry-C-vFCSEc.js.map +1 -0
  74. package/dist/default-registry-CNPo-Vsb.d.ts +540 -0
  75. package/dist/default-registry-CNPo-Vsb.d.ts.map +1 -0
  76. package/dist/emitter-CPBAhxum.js +266 -0
  77. package/dist/emitter-CPBAhxum.js.map +1 -0
  78. package/dist/emitter-DGQGoLyj.d.ts +113 -0
  79. package/dist/emitter-DGQGoLyj.d.ts.map +1 -0
  80. package/dist/errors-8YnH8WlF.js +64 -0
  81. package/dist/errors-8YnH8WlF.js.map +1 -0
  82. package/dist/errors-CEk209JS.d.ts +76 -0
  83. package/dist/errors-CEk209JS.d.ts.map +1 -0
  84. package/dist/eval-campaign-DEm6c8ru.js +349 -0
  85. package/dist/eval-campaign-DEm6c8ru.js.map +1 -0
  86. package/dist/execution-tracks-CpgFPpS5.js +93 -0
  87. package/dist/execution-tracks-CpgFPpS5.js.map +1 -0
  88. package/dist/exporters-q9iL-2Jf.js +148 -0
  89. package/dist/exporters-q9iL-2Jf.js.map +1 -0
  90. package/dist/extract-usage-BrQ8mCLX.js +155 -0
  91. package/dist/extract-usage-BrQ8mCLX.js.map +1 -0
  92. package/dist/failure-cluster-CqcvCcdR.d.ts +59 -0
  93. package/dist/failure-cluster-CqcvCcdR.d.ts.map +1 -0
  94. package/dist/feedback-trajectory-CVaeREXV.d.ts +340 -0
  95. package/dist/feedback-trajectory-CVaeREXV.d.ts.map +1 -0
  96. package/dist/fuzz.d.ts +320 -646
  97. package/dist/fuzz.d.ts.map +1 -0
  98. package/dist/fuzz.js +670 -617
  99. package/dist/fuzz.js.map +1 -1
  100. package/dist/hf-dataset-DBJXXoY1.js +763 -0
  101. package/dist/hf-dataset-DBJXXoY1.js.map +1 -0
  102. package/dist/hosted/index.d.ts +11 -831
  103. package/dist/hosted/index.d.ts.map +1 -0
  104. package/dist/hosted/index.js +2 -37
  105. package/dist/index-2JJSA6-r2.d.ts +926 -0
  106. package/dist/index-2JJSA6-r2.d.ts.map +1 -0
  107. package/dist/index-6N0aYmpW.d.ts +217 -0
  108. package/dist/index-6N0aYmpW.d.ts.map +1 -0
  109. package/dist/index-BAvgST_9.d.ts +131 -0
  110. package/dist/index-BAvgST_9.d.ts.map +1 -0
  111. package/dist/index-BvnJuTGD.d.ts +68 -0
  112. package/dist/index-BvnJuTGD.d.ts.map +1 -0
  113. package/dist/index-C61Wi7yg.d.ts +547 -0
  114. package/dist/index-C61Wi7yg.d.ts.map +1 -0
  115. package/dist/index-CAPUUKaM.d.ts +335 -0
  116. package/dist/index-CAPUUKaM.d.ts.map +1 -0
  117. package/dist/index-DE5fb3EC.d.ts +2244 -0
  118. package/dist/index-DE5fb3EC.d.ts.map +1 -0
  119. package/dist/index-DSC51roc.d.ts +102 -0
  120. package/dist/index-DSC51roc.d.ts.map +1 -0
  121. package/dist/index.d.ts +3776 -15120
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +11185 -11191
  124. package/dist/index.js.map +1 -1
  125. package/dist/integrity-BzRbCHzi.js +424 -0
  126. package/dist/integrity-BzRbCHzi.js.map +1 -0
  127. package/dist/integrity-rmVhXWA7.d.ts +61 -0
  128. package/dist/integrity-rmVhXWA7.d.ts.map +1 -0
  129. package/dist/judge-calibration-DFtEMlde.d.ts +146 -0
  130. package/dist/judge-calibration-DFtEMlde.d.ts.map +1 -0
  131. package/dist/ledger-core/index.d.ts +2 -0
  132. package/dist/ledger-core/index.js +2 -0
  133. package/dist/ledger-core-DtZz1RG0.js +388 -0
  134. package/dist/ledger-core-DtZz1RG0.js.map +1 -0
  135. package/dist/llm-client--GR4JbZE.js +687 -0
  136. package/dist/llm-client--GR4JbZE.js.map +1 -0
  137. package/dist/llm-client-B_nIBlYo.d.ts +290 -0
  138. package/dist/llm-client-B_nIBlYo.d.ts.map +1 -0
  139. package/dist/matrix/index.d.ts +3 -155
  140. package/dist/matrix/index.js +2 -8
  141. package/dist/matrix-BzQnu2S6.js +270 -0
  142. package/dist/matrix-BzQnu2S6.js.map +1 -0
  143. package/dist/meta-eval/index.d.ts +4 -1027
  144. package/dist/meta-eval/index.js +393 -390
  145. package/dist/meta-eval/index.js.map +1 -1
  146. package/dist/metrics-C9YY1OcL.js +239 -0
  147. package/dist/metrics-C9YY1OcL.js.map +1 -0
  148. package/dist/mint-yN2M2eh0.js +201 -0
  149. package/dist/mint-yN2M2eh0.js.map +1 -0
  150. package/dist/multi-layer-verifier-BHY1gWAc.d.ts +138 -0
  151. package/dist/multi-layer-verifier-BHY1gWAc.d.ts.map +1 -0
  152. package/dist/multishot/index.d.ts +273 -481
  153. package/dist/multishot/index.d.ts.map +1 -0
  154. package/dist/multishot/index.js +595 -548
  155. package/dist/multishot/index.js.map +1 -1
  156. package/dist/off-policy-DvgzvtIx.js +220 -0
  157. package/dist/off-policy-DvgzvtIx.js.map +1 -0
  158. package/dist/off-policy-mskQw8Mb.d.ts +153 -0
  159. package/dist/off-policy-mskQw8Mb.d.ts.map +1 -0
  160. package/dist/openapi.json +1 -1
  161. package/dist/opencode-sqlite-BGrHeDu3.js +318 -0
  162. package/dist/opencode-sqlite-BGrHeDu3.js.map +1 -0
  163. package/dist/outcome-store-BYHIuO0e.d.ts +65 -0
  164. package/dist/outcome-store-BYHIuO0e.d.ts.map +1 -0
  165. package/dist/outcome-store-ChBKlTd_.js +75 -0
  166. package/dist/outcome-store-ChBKlTd_.js.map +1 -0
  167. package/dist/paired-arms-D9D0wXj2.js +260 -0
  168. package/dist/paired-arms-D9D0wXj2.js.map +1 -0
  169. package/dist/pipelines/index.d.ts +95 -532
  170. package/dist/pipelines/index.d.ts.map +1 -0
  171. package/dist/pipelines/index.js +497 -478
  172. package/dist/pipelines/index.js.map +1 -1
  173. package/dist/pre-registration-DakwTRXk.js +96 -0
  174. package/dist/pre-registration-DakwTRXk.js.map +1 -0
  175. package/dist/propose-review-control-LhIWGzHl.js +1458 -0
  176. package/dist/propose-review-control-LhIWGzHl.js.map +1 -0
  177. package/dist/query-CJ_DX8vl.d.ts +28 -0
  178. package/dist/query-CJ_DX8vl.d.ts.map +1 -0
  179. package/dist/query-Di7eEQ79.js +83 -0
  180. package/dist/query-Di7eEQ79.js.map +1 -0
  181. package/dist/raw-provider-sink-BQd7mzyT.js +201 -0
  182. package/dist/raw-provider-sink-BQd7mzyT.js.map +1 -0
  183. package/dist/raw-provider-sink-BU29Sh8h.d.ts +134 -0
  184. package/dist/raw-provider-sink-BU29Sh8h.d.ts.map +1 -0
  185. package/dist/redact-7Aq1ukl-.js +107 -0
  186. package/dist/redact-7Aq1ukl-.js.map +1 -0
  187. package/dist/release-report-Cz9NKH39.js +603 -0
  188. package/dist/release-report-Cz9NKH39.js.map +1 -0
  189. package/dist/release-report-mvB2G4_J.d.ts +244 -0
  190. package/dist/release-report-mvB2G4_J.d.ts.map +1 -0
  191. package/dist/replay-GnyotH0J.js +1741 -0
  192. package/dist/replay-GnyotH0J.js.map +1 -0
  193. package/dist/replay-OoidtG1E.d.ts +749 -0
  194. package/dist/replay-OoidtG1E.d.ts.map +1 -0
  195. package/dist/reporting.d.ts +6 -1298
  196. package/dist/reporting.js +6 -50
  197. package/dist/researcher-CwTdwXG1.d.ts +314 -0
  198. package/dist/researcher-CwTdwXG1.d.ts.map +1 -0
  199. package/dist/reward-hacking-eAnOsynk.d.ts +224 -0
  200. package/dist/reward-hacking-eAnOsynk.d.ts.map +1 -0
  201. package/dist/reward-hacking-qipEpKvY.js +596 -0
  202. package/dist/reward-hacking-qipEpKvY.js.map +1 -0
  203. package/dist/reward-nw2xZGZG.js +137 -0
  204. package/dist/reward-nw2xZGZG.js.map +1 -0
  205. package/dist/rl.d.ts +916 -3596
  206. package/dist/rl.d.ts.map +1 -0
  207. package/dist/rl.js +2362 -1751
  208. package/dist/rl.js.map +1 -1
  209. package/dist/rolldown-runtime-8H4AJuhK.js +14 -0
  210. package/dist/rollout/index.d.ts +3 -1048
  211. package/dist/rollout/index.js +8 -110
  212. package/dist/rollout-BOYjemfR.js +624 -0
  213. package/dist/rollout-BOYjemfR.js.map +1 -0
  214. package/dist/rubric-predictive-validity-B3xmbmS1.js +141 -0
  215. package/dist/rubric-predictive-validity-B3xmbmS1.js.map +1 -0
  216. package/dist/rubric-predictive-validity-Ku_clp_1.d.ts +74 -0
  217. package/dist/rubric-predictive-validity-Ku_clp_1.d.ts.map +1 -0
  218. package/dist/run-evidence-ClRX_8A9.d.ts +225 -0
  219. package/dist/run-evidence-ClRX_8A9.d.ts.map +1 -0
  220. package/dist/run-record-BuoE80Dq.js +467 -0
  221. package/dist/run-record-BuoE80Dq.js.map +1 -0
  222. package/dist/run-record-CnZu_gjl.d.ts +357 -0
  223. package/dist/run-record-CnZu_gjl.d.ts.map +1 -0
  224. package/dist/run-score-iEEAWiBY.js +41 -0
  225. package/dist/run-score-iEEAWiBY.js.map +1 -0
  226. package/dist/runtime-trajectory-1gyaTOoC.js +93 -0
  227. package/dist/runtime-trajectory-1gyaTOoC.js.map +1 -0
  228. package/dist/runtime-trajectory-BvSZcCHD.d.ts +50 -0
  229. package/dist/runtime-trajectory-BvSZcCHD.d.ts.map +1 -0
  230. package/dist/schema-BtVldJ3T.d.ts +206 -0
  231. package/dist/schema-BtVldJ3T.d.ts.map +1 -0
  232. package/dist/schema-C6DW4ZHR.js +821 -0
  233. package/dist/schema-C6DW4ZHR.js.map +1 -0
  234. package/dist/schema-CRhEY1SO.js +69 -0
  235. package/dist/schema-CRhEY1SO.js.map +1 -0
  236. package/dist/schema-Cef2cFmb.d.ts +408 -0
  237. package/dist/schema-Cef2cFmb.d.ts.map +1 -0
  238. package/dist/semantic-concept-judge-B6cWNJ2K.js +725 -0
  239. package/dist/semantic-concept-judge-B6cWNJ2K.js.map +1 -0
  240. package/dist/sequential-Br0mAPHA.js +148 -0
  241. package/dist/sequential-Br0mAPHA.js.map +1 -0
  242. package/dist/sequential-CYwq6Ff_.d.ts +141 -0
  243. package/dist/sequential-CYwq6Ff_.d.ts.map +1 -0
  244. package/dist/series-convergence-CjO2QdRW.js +43 -0
  245. package/dist/series-convergence-CjO2QdRW.js.map +1 -0
  246. package/dist/series-convergence-ofsqPWhs.d.ts +35 -0
  247. package/dist/series-convergence-ofsqPWhs.d.ts.map +1 -0
  248. package/dist/server-m5D9cvnG.js +1040 -0
  249. package/dist/server-m5D9cvnG.js.map +1 -0
  250. package/dist/skill-usage-C_pXm7lP.d.ts +534 -0
  251. package/dist/skill-usage-C_pXm7lP.d.ts.map +1 -0
  252. package/dist/skillopt-optimization-method-B7wX7XkF.d.ts +1739 -0
  253. package/dist/skillopt-optimization-method-B7wX7XkF.d.ts.map +1 -0
  254. package/dist/skillopt-optimization-method-D4ODwFVV.js +7712 -0
  255. package/dist/skillopt-optimization-method-D4ODwFVV.js.map +1 -0
  256. package/dist/statistics-Cmj6nynr.d.ts +514 -0
  257. package/dist/statistics-Cmj6nynr.d.ts.map +1 -0
  258. package/dist/statistics-CnnxdpOg.js +1437 -0
  259. package/dist/statistics-CnnxdpOg.js.map +1 -0
  260. package/dist/store-CT9YIIve.d.ts +117 -0
  261. package/dist/store-CT9YIIve.d.ts.map +1 -0
  262. package/dist/store-CxJry_cs.d.ts +229 -0
  263. package/dist/store-CxJry_cs.d.ts.map +1 -0
  264. package/dist/storyboard/index.d.ts +84 -203
  265. package/dist/storyboard/index.d.ts.map +1 -0
  266. package/dist/storyboard/index.js +609 -542
  267. package/dist/storyboard/index.js.map +1 -1
  268. package/dist/summary-report-BNs5nmXI.js +862 -0
  269. package/dist/summary-report-BNs5nmXI.js.map +1 -0
  270. package/dist/summary-report-Cj9gdw4i.d.ts +407 -0
  271. package/dist/summary-report-Cj9gdw4i.d.ts.map +1 -0
  272. package/dist/supervisor-run/index.d.ts +2 -849
  273. package/dist/supervisor-run/index.js +2 -64
  274. package/dist/supervisor-run-_lnTLM3z.js +1679 -0
  275. package/dist/supervisor-run-_lnTLM3z.js.map +1 -0
  276. package/dist/task-failure-attributes-CQZlB3et.js +311 -0
  277. package/dist/task-failure-attributes-CQZlB3et.js.map +1 -0
  278. package/dist/test-graded-scenario-BsqWLmPt.js +318 -0
  279. package/dist/test-graded-scenario-BsqWLmPt.js.map +1 -0
  280. package/dist/test-graded-scenario-D1TaI2va.d.ts +141 -0
  281. package/dist/test-graded-scenario-D1TaI2va.d.ts.map +1 -0
  282. package/dist/tools-BmuN627J.js +1085 -0
  283. package/dist/tools-BmuN627J.js.map +1 -0
  284. package/dist/trace-attributes.d.ts +2 -52
  285. package/dist/trace-attributes.js +131 -61
  286. package/dist/trace-attributes.js.map +1 -1
  287. package/dist/traces.d.ts +12 -2365
  288. package/dist/traces.js +12 -251
  289. package/dist/trajectory-D_7rLrvE.js +56 -0
  290. package/dist/trajectory-D_7rLrvE.js.map +1 -0
  291. package/dist/types-DGsxbAEd.d.ts +387 -0
  292. package/dist/types-DGsxbAEd.d.ts.map +1 -0
  293. package/dist/types-k9tZGKUg.d.ts +640 -0
  294. package/dist/types-k9tZGKUg.d.ts.map +1 -0
  295. package/dist/verdict-Dps8_okt.d.ts +37 -0
  296. package/dist/verdict-Dps8_okt.d.ts.map +1 -0
  297. package/dist/wire/index.d.ts +702 -1174
  298. package/dist/wire/index.d.ts.map +1 -0
  299. package/dist/wire/index.js +2 -81
  300. package/docs/feature-guide.md +1 -1
  301. package/docs/rollout.md +116 -2
  302. package/package.json +18 -10
  303. package/dist/benchmarks/index.js.map +0 -1
  304. package/dist/campaign/index.js.map +0 -1
  305. package/dist/chunk-2JX3CFMB.js +0 -695
  306. package/dist/chunk-2JX3CFMB.js.map +0 -1
  307. package/dist/chunk-2MKQIFS4.js +0 -183
  308. package/dist/chunk-2MKQIFS4.js.map +0 -1
  309. package/dist/chunk-3RF76KTD.js +0 -84
  310. package/dist/chunk-3RF76KTD.js.map +0 -1
  311. package/dist/chunk-5DTSBUL2.js +0 -159
  312. package/dist/chunk-5DTSBUL2.js.map +0 -1
  313. package/dist/chunk-7ZZMD7UK.js +0 -386
  314. package/dist/chunk-7ZZMD7UK.js.map +0 -1
  315. package/dist/chunk-BOD4O7OF.js +0 -40
  316. package/dist/chunk-BOD4O7OF.js.map +0 -1
  317. package/dist/chunk-BYT7ELPS.js +0 -1553
  318. package/dist/chunk-BYT7ELPS.js.map +0 -1
  319. package/dist/chunk-DJKY2TSY.js +0 -2428
  320. package/dist/chunk-DJKY2TSY.js.map +0 -1
  321. package/dist/chunk-DPUHNQLN.js +0 -232
  322. package/dist/chunk-DPUHNQLN.js.map +0 -1
  323. package/dist/chunk-DRYIUNWY.js +0 -622
  324. package/dist/chunk-DRYIUNWY.js.map +0 -1
  325. package/dist/chunk-EJGRPCO3.js +0 -617
  326. package/dist/chunk-EJGRPCO3.js.map +0 -1
  327. package/dist/chunk-EOSZT7PL.js +0 -2001
  328. package/dist/chunk-EOSZT7PL.js.map +0 -1
  329. package/dist/chunk-EZJEIH2R.js +0 -1559
  330. package/dist/chunk-EZJEIH2R.js.map +0 -1
  331. package/dist/chunk-GGE4NNQT.js +0 -65
  332. package/dist/chunk-GGE4NNQT.js.map +0 -1
  333. package/dist/chunk-HHWE3POT.js +0 -94
  334. package/dist/chunk-HHWE3POT.js.map +0 -1
  335. package/dist/chunk-IHQDPH7D.js +0 -171
  336. package/dist/chunk-IHQDPH7D.js.map +0 -1
  337. package/dist/chunk-JHCHEVET.js +0 -274
  338. package/dist/chunk-JHCHEVET.js.map +0 -1
  339. package/dist/chunk-K4DBDHLK.js +0 -158
  340. package/dist/chunk-K4DBDHLK.js.map +0 -1
  341. package/dist/chunk-K6N6XJJX.js +0 -306
  342. package/dist/chunk-K6N6XJJX.js.map +0 -1
  343. package/dist/chunk-MA6HLL3S.js +0 -65
  344. package/dist/chunk-MA6HLL3S.js.map +0 -1
  345. package/dist/chunk-MAZ26DC7.js +0 -99
  346. package/dist/chunk-MAZ26DC7.js.map +0 -1
  347. package/dist/chunk-MHELPNRP.js +0 -1212
  348. package/dist/chunk-MHELPNRP.js.map +0 -1
  349. package/dist/chunk-NACAGYSY.js +0 -1040
  350. package/dist/chunk-NACAGYSY.js.map +0 -1
  351. package/dist/chunk-NKAGIDE2.js +0 -7633
  352. package/dist/chunk-NKAGIDE2.js.map +0 -1
  353. package/dist/chunk-NPCTHQIO.js +0 -91
  354. package/dist/chunk-NPCTHQIO.js.map +0 -1
  355. package/dist/chunk-NYLOYM6N.js +0 -332
  356. package/dist/chunk-NYLOYM6N.js.map +0 -1
  357. package/dist/chunk-ONWEPEDO.js +0 -57
  358. package/dist/chunk-ONWEPEDO.js.map +0 -1
  359. package/dist/chunk-P5W7RQKK.js +0 -576
  360. package/dist/chunk-P5W7RQKK.js.map +0 -1
  361. package/dist/chunk-P6FYH6K4.js +0 -1161
  362. package/dist/chunk-P6FYH6K4.js.map +0 -1
  363. package/dist/chunk-PBE2LOSS.js +0 -669
  364. package/dist/chunk-PBE2LOSS.js.map +0 -1
  365. package/dist/chunk-PC4UYEBM.js +0 -166
  366. package/dist/chunk-PC4UYEBM.js.map +0 -1
  367. package/dist/chunk-PXE2VKMX.js +0 -140
  368. package/dist/chunk-PXE2VKMX.js.map +0 -1
  369. package/dist/chunk-PZ5AY32C.js +0 -10
  370. package/dist/chunk-PZ5AY32C.js.map +0 -1
  371. package/dist/chunk-RZTMDUO7.js +0 -49
  372. package/dist/chunk-RZTMDUO7.js.map +0 -1
  373. package/dist/chunk-S5YLIBFX.js +0 -136
  374. package/dist/chunk-S5YLIBFX.js.map +0 -1
  375. package/dist/chunk-SZLVEKMJ.js +0 -1446
  376. package/dist/chunk-SZLVEKMJ.js.map +0 -1
  377. package/dist/chunk-T4SQEITX.js +0 -95
  378. package/dist/chunk-T4SQEITX.js.map +0 -1
  379. package/dist/chunk-TBL77AUT.js +0 -355
  380. package/dist/chunk-TBL77AUT.js.map +0 -1
  381. package/dist/chunk-TSN7JT6D.js +0 -1646
  382. package/dist/chunk-TSN7JT6D.js.map +0 -1
  383. package/dist/chunk-TT4KNT67.js +0 -124
  384. package/dist/chunk-TT4KNT67.js.map +0 -1
  385. package/dist/chunk-UB2LOJ6Q.js +0 -4461
  386. package/dist/chunk-UB2LOJ6Q.js.map +0 -1
  387. package/dist/chunk-UWZZKKU7.js +0 -237
  388. package/dist/chunk-UWZZKKU7.js.map +0 -1
  389. package/dist/chunk-VBQ3CRKH.js +0 -291
  390. package/dist/chunk-VBQ3CRKH.js.map +0 -1
  391. package/dist/chunk-VGRCHJON.js +0 -163
  392. package/dist/chunk-VGRCHJON.js.map +0 -1
  393. package/dist/chunk-VI2UW6B6.js +0 -162
  394. package/dist/chunk-VI2UW6B6.js.map +0 -1
  395. package/dist/chunk-VLOATJQ2.js +0 -908
  396. package/dist/chunk-VLOATJQ2.js.map +0 -1
  397. package/dist/chunk-VQMK5FMP.js +0 -247
  398. package/dist/chunk-VQMK5FMP.js.map +0 -1
  399. package/dist/chunk-VZSRQ272.js +0 -149
  400. package/dist/chunk-VZSRQ272.js.map +0 -1
  401. package/dist/chunk-WGXIEX7P.js +0 -116
  402. package/dist/chunk-WGXIEX7P.js.map +0 -1
  403. package/dist/chunk-WS3NZZQQ.js +0 -929
  404. package/dist/chunk-WS3NZZQQ.js.map +0 -1
  405. package/dist/chunk-XDWDC2MP.js +0 -695
  406. package/dist/chunk-XDWDC2MP.js.map +0 -1
  407. package/dist/chunk-XPRT64IE.js +0 -766
  408. package/dist/chunk-XPRT64IE.js.map +0 -1
  409. package/dist/chunk-YJBNWCAA.js +0 -1056
  410. package/dist/chunk-YJBNWCAA.js.map +0 -1
  411. package/dist/chunk-ZET2UAYW.js +0 -89
  412. package/dist/chunk-ZET2UAYW.js.map +0 -1
  413. package/dist/chunk-ZUUWPZCV.js +0 -752
  414. package/dist/chunk-ZUUWPZCV.js.map +0 -1
  415. package/dist/control.js.map +0 -1
  416. package/dist/hosted/index.js.map +0 -1
  417. package/dist/matrix/index.js.map +0 -1
  418. package/dist/reporting.js.map +0 -1
  419. package/dist/rollout/index.js.map +0 -1
  420. package/dist/run-campaign-ISHFZ7FJ.js +0 -17
  421. package/dist/run-campaign-ISHFZ7FJ.js.map +0 -1
  422. package/dist/supervisor-run/index.js.map +0 -1
  423. package/dist/traces.js.map +0 -1
  424. package/dist/wire/index.js.map +0 -1
@@ -1,695 +0,0 @@
1
- import {
2
- summaryTable
3
- } from "./chunk-VLOATJQ2.js";
4
- import {
5
- validateRunRecord
6
- } from "./chunk-2JX3CFMB.js";
7
- import {
8
- FAILURE_CLASSES
9
- } from "./chunk-MA6HLL3S.js";
10
- import {
11
- ValidationError,
12
- VerificationError
13
- } from "./chunk-ONWEPEDO.js";
14
-
15
- // src/release-confidence.ts
16
- var DEFAULT_THRESHOLDS = {
17
- requireCorpus: true,
18
- minScenarioCount: 1,
19
- minSearchRuns: 1,
20
- minHoldoutRuns: 1,
21
- requireHoldout: true,
22
- minPassRate: 0.8,
23
- minMeanScore: 0.7,
24
- maxOverfitGap: 0.15,
25
- maxMeanCostUsd: Number.POSITIVE_INFINITY,
26
- maxP95WallMs: Number.POSITIVE_INFINITY,
27
- requireAsiForFailures: true,
28
- failureScoreThreshold: 0.5
29
- };
30
- function evaluateReleaseConfidence(input) {
31
- const thresholds = { ...DEFAULT_THRESHOLDS, ...input.thresholds };
32
- const candidateId = input.candidateId ?? null;
33
- const runs = filterCandidate(
34
- (input.runs ?? []).map(validateRunRecord),
35
- candidateId,
36
- input.baselineId
37
- );
38
- const traces = filterTraceCandidate(
39
- (input.traces ?? []).map(validateReleaseTraceEvidence),
40
- candidateId,
41
- input.baselineId
42
- );
43
- const scenarios = input.scenarios ?? [];
44
- const scenarioCount = input.dataset?.scenarioCount ?? scenarios.length;
45
- const splitCounts = input.dataset?.splitCounts ?? countScenarioSplits(scenarios);
46
- const searchScores = scoresFor(runs, "search");
47
- const holdoutScores = scoresFor(runs, "holdout");
48
- const runScores = runs.map(runSplitScore).filter(isFiniteNumber);
49
- const traceScores = traces.map((t) => t.score).filter(isFiniteNumber);
50
- const scoreUniverse = runs.length > 0 ? runScores : traceScores;
51
- const qualityRuns = runs.filter((run) => runSplitScore(run) !== void 0);
52
- const unscoredRuns = runs.filter(
53
- (run) => runSplitScore(run) === void 0 && !hasExplicitTaskFailure(run) && !isFailedTerminalOutcome(run.terminalOutcome)
54
- ).length;
55
- const passOutcomes = runs.length > 0 ? runs.map((run) => runPassOutcome(run, thresholds.failureScoreThreshold)) : traces.map((trace) => tracePassOutcome(trace, thresholds.failureScoreThreshold));
56
- const reliabilityRows = runs.length > 0 ? runs.map((run) => terminalSuccess(run.terminalOutcome)) : traces.map((trace) => trace.ok);
57
- const unclassifiedTerminalRuns = reliabilityRows.filter((outcome) => outcome === void 0).length;
58
- const terminalFailureRuns = reliabilityRows.filter((outcome) => outcome === false).length;
59
- const reliabilityRate = reliabilityRows.length === 0 || unclassifiedTerminalRuns > 0 ? null : (reliabilityRows.length - terminalFailureRuns) / reliabilityRows.length;
60
- const searchRuns = qualityRuns.filter((r) => r.splitTag === "search").length;
61
- const holdoutRuns = qualityRuns.filter((r) => r.splitTag === "holdout").length;
62
- const failed = failedRows(runs, traces, thresholds.failureScoreThreshold);
63
- const searchMeanScore = meanOrNull(searchScores);
64
- const holdoutMeanScore = meanOrNull(holdoutScores);
65
- const runCosts = runs.flatMap(
66
- (run) => run.costProvenance.kind === "uncaptured" ? [] : [run.costProvenance.usd]
67
- );
68
- const traceCosts = traces.map((trace) => trace.costUsd).filter(isFiniteNumber);
69
- const meanCostUsd = runs.length > 0 ? runCosts.length === runs.length ? meanOrNull(runCosts) : null : meanOrNull(traceCosts);
70
- const wallTimes = runs.length > 0 ? runs.map((run) => run.wallMs) : traces.map((trace) => trace.durationMs).filter(isFiniteNumber);
71
- const metrics = {
72
- scenarioCount,
73
- searchRuns,
74
- holdoutRuns,
75
- unscoredRuns,
76
- unclassifiedTerminalRuns,
77
- terminalFailureRuns,
78
- reliabilityRate,
79
- passRate: passOutcomeRate(passOutcomes),
80
- meanScore: meanOrNull(scoreUniverse),
81
- searchMeanScore,
82
- holdoutMeanScore,
83
- overfitGap: diffOrNull(searchMeanScore, holdoutMeanScore),
84
- meanCostUsd,
85
- p95WallMs: percentileOrNull(wallTimes, 0.95),
86
- failedRows: failed.length,
87
- failuresWithAsi: failed.filter((row) => row.hasAsi).length,
88
- singleShotTraces: traces.filter((t) => t.turnCount === 1).length,
89
- multiShotTraces: traces.filter((t) => (t.turnCount ?? 0) > 1).length,
90
- splitCounts,
91
- domainCounts: countDomains(scenarios),
92
- failureClassCounts: countFailureClasses(runs, traces, thresholds.failureScoreThreshold),
93
- responsibleSurfaceCounts: countResponsibleSurfaces(traces)
94
- };
95
- const issues = [];
96
- checkCorpus(input, thresholds, metrics, issues);
97
- checkQuality(thresholds, metrics, issues);
98
- checkReliability(metrics, issues);
99
- checkGeneralization(input.gateDecision ?? null, thresholds, metrics, issues);
100
- checkDiagnostics(thresholds, metrics, issues);
101
- checkEfficiency(thresholds, metrics, issues);
102
- const axes = buildAxes(metrics, thresholds, issues);
103
- const status = issues.some((i) => i.severity === "critical") ? "fail" : issues.length > 0 ? "warn" : "pass";
104
- return {
105
- target: input.target,
106
- candidateId,
107
- baselineId: input.baselineId ?? null,
108
- status,
109
- promote: status === "pass" && (input.gateDecision ? input.gateDecision.promote : true),
110
- axes,
111
- issues,
112
- metrics,
113
- dataset: input.dataset ?? null,
114
- gateDecision: input.gateDecision ?? null,
115
- summary: renderSummary(input.target, status, metrics, issues)
116
- };
117
- }
118
- function assertReleaseConfidence(input) {
119
- const scorecard = evaluateReleaseConfidence(input);
120
- if (scorecard.status === "fail") {
121
- throw new VerificationError(scorecard.summary);
122
- }
123
- return scorecard;
124
- }
125
- function filterCandidate(runs, candidateId, baselineId) {
126
- if (candidateId) return runs.filter((r) => r.candidateId === candidateId);
127
- if (baselineId) return runs.filter((r) => r.candidateId !== baselineId);
128
- return [...runs];
129
- }
130
- function filterTraceCandidate(traces, candidateId, baselineId) {
131
- if (candidateId)
132
- return traces.filter((t) => t.candidateId === void 0 || t.candidateId === candidateId);
133
- if (baselineId)
134
- return traces.filter((t) => t.candidateId === void 0 || t.candidateId !== baselineId);
135
- return [...traces];
136
- }
137
- function validateReleaseTraceEvidence(trace, index) {
138
- const value = trace;
139
- if (Object.hasOwn(value, "failureMode")) {
140
- throw new ValidationError(
141
- `traces[${index}].failureMode is not supported; use canonical failureClass`
142
- );
143
- }
144
- if (trace.failureClass !== void 0 && !FAILURE_CLASSES.includes(trace.failureClass)) {
145
- throw new ValidationError(
146
- `traces[${index}].failureClass must be one of ${FAILURE_CLASSES.join(", ")}`
147
- );
148
- }
149
- return trace;
150
- }
151
- function checkCorpus(input, thresholds, metrics, issues) {
152
- if (thresholds.requireCorpus && !input.dataset && (input.scenarios?.length ?? 0) === 0) {
153
- issues.push({
154
- axis: "corpus",
155
- severity: "critical",
156
- code: "missing_corpus",
157
- detail: "No Dataset manifest or scenarios supplied."
158
- });
159
- }
160
- if (metrics.scenarioCount < thresholds.minScenarioCount) {
161
- issues.push({
162
- axis: "corpus",
163
- severity: "critical",
164
- code: "few_scenarios",
165
- detail: `${metrics.scenarioCount} scenario(s) < min ${thresholds.minScenarioCount}.`
166
- });
167
- }
168
- if (thresholds.requireHoldout && metrics.splitCounts.holdout === 0) {
169
- issues.push({
170
- axis: "corpus",
171
- severity: "critical",
172
- code: "missing_holdout_split",
173
- detail: "Corpus has no holdout scenarios."
174
- });
175
- }
176
- }
177
- function checkQuality(thresholds, metrics, issues) {
178
- if (metrics.searchRuns < thresholds.minSearchRuns) {
179
- issues.push({
180
- axis: "quality",
181
- severity: "critical",
182
- code: "few_search_runs",
183
- detail: `${metrics.searchRuns} search run(s) < min ${thresholds.minSearchRuns}.`
184
- });
185
- }
186
- if (metrics.unscoredRuns > 0) {
187
- issues.push({
188
- axis: "quality",
189
- severity: "critical",
190
- code: "unscored_runs",
191
- detail: `${metrics.unscoredRuns} supplied run(s) have no task result.`
192
- });
193
- }
194
- if (metrics.passRate === null || metrics.meanScore === null) {
195
- issues.push({
196
- axis: "quality",
197
- severity: "critical",
198
- code: "missing_quality_scores",
199
- detail: "No task-quality scores are available for pass-rate and mean-score checks."
200
- });
201
- }
202
- if (metrics.passRate !== null && metrics.passRate < thresholds.minPassRate) {
203
- issues.push({
204
- axis: "quality",
205
- severity: "critical",
206
- code: "low_pass_rate",
207
- detail: `passRate ${fmt(metrics.passRate)} < ${fmt(thresholds.minPassRate)}.`
208
- });
209
- }
210
- if (metrics.meanScore !== null && metrics.meanScore < thresholds.minMeanScore) {
211
- issues.push({
212
- axis: "quality",
213
- severity: "critical",
214
- code: "low_mean_score",
215
- detail: `meanScore ${fmt(metrics.meanScore)} < ${fmt(thresholds.minMeanScore)}.`
216
- });
217
- }
218
- }
219
- function checkReliability(metrics, issues) {
220
- if (metrics.reliabilityRate === null) {
221
- issues.push({
222
- axis: "reliability",
223
- severity: "critical",
224
- code: "missing_reliability_evidence",
225
- detail: metrics.unclassifiedTerminalRuns > 0 ? `${metrics.unclassifiedTerminalRuns} supplied run(s) have no classified terminal result.` : "No classified terminal results are available."
226
- });
227
- }
228
- if (metrics.terminalFailureRuns > 0) {
229
- issues.push({
230
- axis: "reliability",
231
- severity: "critical",
232
- code: "terminal_run_failures",
233
- detail: `${metrics.terminalFailureRuns} run(s) ended failed, cancelled, or incomplete.`
234
- });
235
- }
236
- }
237
- function checkGeneralization(gateDecision, thresholds, metrics, issues) {
238
- if (thresholds.requireHoldout && metrics.holdoutRuns < thresholds.minHoldoutRuns) {
239
- issues.push({
240
- axis: "generalization",
241
- severity: "critical",
242
- code: "few_holdout_runs",
243
- detail: `${metrics.holdoutRuns} holdout run(s) < min ${thresholds.minHoldoutRuns}.`
244
- });
245
- }
246
- if (metrics.overfitGap !== null && metrics.overfitGap > thresholds.maxOverfitGap) {
247
- issues.push({
248
- axis: "generalization",
249
- severity: "critical",
250
- code: "overfit_gap",
251
- detail: `search-holdout gap ${fmt(metrics.overfitGap)} > ${fmt(thresholds.maxOverfitGap)}.`
252
- });
253
- }
254
- if (gateDecision && !gateDecision.promote) {
255
- issues.push({
256
- axis: "generalization",
257
- severity: "critical",
258
- code: `gate_${gateDecision.rejectionCode ?? "reject"}`,
259
- detail: gateDecision.reason
260
- });
261
- }
262
- }
263
- function checkDiagnostics(thresholds, metrics, issues) {
264
- if (!thresholds.requireAsiForFailures) return;
265
- if (metrics.failedRows > metrics.failuresWithAsi) {
266
- issues.push({
267
- axis: "diagnostics",
268
- severity: "critical",
269
- code: "missing_failure_asi",
270
- detail: `${metrics.failedRows - metrics.failuresWithAsi} failed row(s) have no actionable side information.`
271
- });
272
- }
273
- }
274
- function checkEfficiency(thresholds, metrics, issues) {
275
- if (Number.isFinite(thresholds.maxMeanCostUsd) && metrics.meanCostUsd === null) {
276
- issues.push({
277
- axis: "efficiency",
278
- severity: "critical",
279
- code: "missing_cost",
280
- detail: "A finite cost limit was configured but no cost evidence is available."
281
- });
282
- } else if (metrics.meanCostUsd !== null && metrics.meanCostUsd > thresholds.maxMeanCostUsd) {
283
- issues.push({
284
- axis: "efficiency",
285
- severity: "critical",
286
- code: "cost_budget",
287
- detail: `meanCostUsd ${fmt(metrics.meanCostUsd)} > ${fmt(thresholds.maxMeanCostUsd)}.`
288
- });
289
- }
290
- if (Number.isFinite(thresholds.maxP95WallMs) && metrics.p95WallMs === null) {
291
- issues.push({
292
- axis: "efficiency",
293
- severity: "critical",
294
- code: "missing_latency",
295
- detail: "A finite latency limit was configured but no latency evidence is available."
296
- });
297
- } else if (metrics.p95WallMs !== null && metrics.p95WallMs > thresholds.maxP95WallMs) {
298
- issues.push({
299
- axis: "efficiency",
300
- severity: "critical",
301
- code: "latency_budget",
302
- detail: `p95WallMs ${fmt(metrics.p95WallMs)} > ${fmt(thresholds.maxP95WallMs)}.`
303
- });
304
- }
305
- }
306
- function buildAxes(metrics, thresholds, issues) {
307
- return [
308
- axis(
309
- "corpus",
310
- issues,
311
- bounded(metrics.scenarioCount / Math.max(1, thresholds.minScenarioCount)),
312
- `${metrics.scenarioCount} scenarios; holdout=${metrics.splitCounts.holdout}`
313
- ),
314
- axis(
315
- "quality",
316
- issues,
317
- metrics.passRate === null || metrics.meanScore === null ? null : Math.min(metrics.passRate, metrics.meanScore),
318
- `passRate=${fmt(metrics.passRate)} meanScore=${fmt(metrics.meanScore)}`
319
- ),
320
- axis(
321
- "reliability",
322
- issues,
323
- metrics.reliabilityRate,
324
- `successRate=${fmt(metrics.reliabilityRate)} terminalFailures=${metrics.terminalFailureRuns} unclassified=${metrics.unclassifiedTerminalRuns}`
325
- ),
326
- axis(
327
- "generalization",
328
- issues,
329
- gapScore(metrics.overfitGap, thresholds.maxOverfitGap),
330
- `holdoutRuns=${metrics.holdoutRuns} overfitGap=${fmt(metrics.overfitGap)}`
331
- ),
332
- axis(
333
- "diagnostics",
334
- issues,
335
- metrics.failedRows === 0 ? 1 : metrics.failuresWithAsi / metrics.failedRows,
336
- `failuresWithAsi=${metrics.failuresWithAsi}/${metrics.failedRows}`
337
- ),
338
- axis(
339
- "efficiency",
340
- issues,
341
- efficiencyScore(metrics, thresholds),
342
- `meanCostUsd=${fmt(metrics.meanCostUsd)} p95WallMs=${fmt(metrics.p95WallMs)}`
343
- )
344
- ];
345
- }
346
- function axis(name, issues, score, detail) {
347
- const own = issues.filter((i) => i.axis === name);
348
- const status = own.some((i) => i.severity === "critical") ? "fail" : own.length > 0 ? "warn" : "pass";
349
- return { name, status, score: score === null ? null : bounded(score), detail };
350
- }
351
- function countScenarioSplits(scenarios) {
352
- const counts = { train: 0, dev: 0, test: 0, holdout: 0 };
353
- for (const scenario of scenarios) counts[scenario.split ?? "train"]++;
354
- return counts;
355
- }
356
- function countDomains(scenarios) {
357
- const out = {};
358
- for (const scenario of scenarios) {
359
- const domain = scenario.tags?.domain ?? scenario.tags?.category ?? "uncategorized";
360
- out[domain] = (out[domain] ?? 0) + 1;
361
- }
362
- return out;
363
- }
364
- function countFailureClasses(runs, traces, threshold) {
365
- const out = {};
366
- for (const run of runs) {
367
- if (runPassOutcome(run, threshold) === false) {
368
- const failureClass = run.failureClass !== void 0 && run.failureClass !== "success" ? run.failureClass : "unknown";
369
- out[failureClass] = (out[failureClass] ?? 0) + 1;
370
- }
371
- }
372
- for (const trace of traces) {
373
- if (tracePassOutcome(trace, threshold) === false) {
374
- const failureClass = trace.failureClass !== void 0 && trace.failureClass !== "success" ? trace.failureClass : "unknown";
375
- out[failureClass] = (out[failureClass] ?? 0) + 1;
376
- }
377
- }
378
- return out;
379
- }
380
- function countResponsibleSurfaces(traces) {
381
- const out = {};
382
- for (const trace of traces) {
383
- for (const asi of trace.asi ?? []) {
384
- const surface = asi.responsibleSurface ?? "unknown";
385
- out[surface] = (out[surface] ?? 0) + 1;
386
- }
387
- }
388
- return out;
389
- }
390
- function failedRows(runs, traces, threshold) {
391
- const out = [];
392
- for (const run of runs) {
393
- if (runPassOutcome(run, threshold) === false) {
394
- const asiMetric = run.outcome.raw.asi;
395
- out.push({ hasAsi: typeof asiMetric === "number" && asiMetric > 0 });
396
- }
397
- }
398
- for (const trace of traces) {
399
- if (tracePassOutcome(trace, threshold) === false) {
400
- out.push({ hasAsi: (trace.asi?.length ?? 0) > 0 });
401
- }
402
- }
403
- return out;
404
- }
405
- function passOutcomeRate(outcomes) {
406
- const classified = outcomes.filter((outcome) => outcome !== null);
407
- if (classified.length === 0) return null;
408
- return classified.filter(Boolean).length / classified.length;
409
- }
410
- function runPassOutcome(run, threshold) {
411
- if (hasExplicitTaskFailure(run)) return false;
412
- const score = runSplitScore(run);
413
- return score === void 0 ? null : score >= threshold;
414
- }
415
- function hasExplicitTaskFailure(run) {
416
- return run.failureClass !== void 0 && run.failureClass !== "success";
417
- }
418
- function tracePassOutcome(trace, threshold) {
419
- if (trace.failureClass !== void 0 && trace.failureClass !== "success") return false;
420
- if (trace.ok === false) return false;
421
- if (isFiniteNumber(trace.score)) return trace.score >= threshold;
422
- return trace.ok === true ? true : null;
423
- }
424
- function isFailedTerminalOutcome(outcome) {
425
- return outcome === "failed" || outcome === "cancelled" || outcome === "incomplete";
426
- }
427
- function terminalSuccess(outcome) {
428
- if (outcome === "succeeded") return true;
429
- if (isFailedTerminalOutcome(outcome)) return false;
430
- return void 0;
431
- }
432
- function scoresFor(runs, split) {
433
- return runs.filter((run) => run.splitTag === split).map(runSplitScore).filter(isFiniteNumber);
434
- }
435
- function runSplitScore(run) {
436
- const score = run.splitTag === "holdout" ? run.outcome.holdoutScore : run.outcome.searchScore;
437
- return isFiniteNumber(score) ? score : void 0;
438
- }
439
- function meanOrNull(xs) {
440
- if (xs.length === 0) return null;
441
- return xs.reduce((sum, x) => sum + x, 0) / xs.length;
442
- }
443
- function percentileOrNull(xs, p) {
444
- if (xs.length === 0) return null;
445
- const sorted = [...xs].sort((a, b) => a - b);
446
- return sorted[Math.min(sorted.length - 1, Math.max(0, Math.ceil(p * sorted.length) - 1))];
447
- }
448
- function isFiniteNumber(value) {
449
- return typeof value === "number" && Number.isFinite(value);
450
- }
451
- function diffOrNull(a, b) {
452
- if (a === null || b === null) return null;
453
- return a - b;
454
- }
455
- function gapScore(gap, maxGap) {
456
- if (gap === null) return null;
457
- if (maxGap <= 0) return gap <= 0 ? 1 : 0;
458
- return bounded(1 - Math.max(0, gap) / maxGap);
459
- }
460
- function efficiencyScore(metrics, thresholds) {
461
- const cost = Number.isFinite(thresholds.maxMeanCostUsd) ? metrics.meanCostUsd === null ? null : bounded(thresholds.maxMeanCostUsd / Math.max(metrics.meanCostUsd, 1e-12)) : 1;
462
- const latency = Number.isFinite(thresholds.maxP95WallMs) ? metrics.p95WallMs === null ? null : bounded(thresholds.maxP95WallMs / Math.max(metrics.p95WallMs, 1e-12)) : 1;
463
- if (cost === null || latency === null) return null;
464
- return Math.min(cost, latency);
465
- }
466
- function bounded(x) {
467
- if (!Number.isFinite(x)) return 0;
468
- return Math.max(0, Math.min(1, x));
469
- }
470
- function renderSummary(target, status, metrics, issues) {
471
- const prefix = `release confidence ${status}: ${target}`;
472
- const metricText = `scenarios=${metrics.scenarioCount} searchRuns=${metrics.searchRuns} holdoutRuns=${metrics.holdoutRuns} passRate=${fmt(metrics.passRate)} meanScore=${fmt(metrics.meanScore)}`;
473
- if (issues.length === 0) return `${prefix}; ${metricText}`;
474
- return `${prefix}; ${metricText}; issues=${issues.map((i) => i.code).join(",")}`;
475
- }
476
- function fmt(x) {
477
- if (x === null) return "n/a";
478
- return x.toFixed(4);
479
- }
480
-
481
- // src/promotion-gate.ts
482
- function bootstrapCi(baseline, candidate, options = {}) {
483
- const alpha = options.alpha ?? 0.05;
484
- const iterations = options.iterations ?? 1e3;
485
- const minTotal = options.minTotalSamples ?? 6;
486
- const rng = mulberry32(options.seed ?? hashSeed(baseline, candidate));
487
- const baselineMean = mean(baseline);
488
- const candidateMean = mean(candidate);
489
- const delta = candidateMean - baselineMean;
490
- if (baseline.length + candidate.length < minTotal || baseline.length === 0 || candidate.length === 0) {
491
- return {
492
- baselineMean,
493
- candidateMean,
494
- delta,
495
- ciLower: -Infinity,
496
- ciUpper: Infinity,
497
- iterations: 0,
498
- alpha,
499
- verdict: "INCONCLUSIVE"
500
- };
501
- }
502
- const deltas = new Array(iterations);
503
- for (let i = 0; i < iterations; i++) {
504
- const bResample = resample(baseline, rng);
505
- const cResample = resample(candidate, rng);
506
- deltas[i] = mean(cResample) - mean(bResample);
507
- }
508
- deltas.sort((a, b) => a - b);
509
- const lowerIdx = Math.floor(alpha / 2 * iterations);
510
- const upperIdx = Math.floor((1 - alpha / 2) * iterations) - 1;
511
- const ciLower = deltas[Math.max(0, lowerIdx)];
512
- const ciUpper = deltas[Math.min(iterations - 1, upperIdx)];
513
- let verdict;
514
- if (ciLower > 0) verdict = "ADVANCE";
515
- else if (ciUpper < 0) verdict = "REVERT";
516
- else if (delta >= 0) verdict = "KEEP";
517
- else verdict = "INCONCLUSIVE";
518
- return {
519
- baselineMean,
520
- candidateMean,
521
- delta,
522
- ciLower,
523
- ciUpper,
524
- iterations,
525
- alpha,
526
- verdict
527
- };
528
- }
529
- function mean(xs) {
530
- if (xs.length === 0) return 0;
531
- let s = 0;
532
- for (const x of xs) s += x;
533
- return s / xs.length;
534
- }
535
- function resample(xs, rng) {
536
- const out = new Array(xs.length);
537
- for (let i = 0; i < xs.length; i++) out[i] = xs[Math.floor(rng() * xs.length)];
538
- return out;
539
- }
540
- function mulberry32(seed) {
541
- let t = seed >>> 0;
542
- return () => {
543
- t += 1831565813;
544
- let r = t;
545
- r = Math.imul(r ^ r >>> 15, r | 1);
546
- r ^= r + Math.imul(r ^ r >>> 7, r | 61);
547
- return ((r ^ r >>> 14) >>> 0) / 4294967296;
548
- };
549
- }
550
- function hashSeed(a, b) {
551
- let h = 2166136261;
552
- for (const x of [...a, ...b]) {
553
- const view = new Float64Array([x]);
554
- const bytes = new Uint8Array(view.buffer);
555
- for (const byte of bytes) {
556
- h ^= byte;
557
- h = Math.imul(h, 16777619);
558
- }
559
- }
560
- return h >>> 0;
561
- }
562
- async function judgeReplayGate(args) {
563
- const concurrency = args.judgeConcurrency ?? 4;
564
- const baselineScores = await scoreAll(args.baselineOutputs, args.judge, concurrency);
565
- const candidateScores = await scoreAll(args.candidateOutputs, args.judge, concurrency);
566
- const ci = bootstrapCi(baselineScores, candidateScores, {
567
- ...args.alpha !== void 0 ? { alpha: args.alpha } : {},
568
- ...args.iterations !== void 0 ? { iterations: args.iterations } : {},
569
- ...args.seed !== void 0 ? { seed: args.seed } : {}
570
- });
571
- return {
572
- ...ci,
573
- baselineSamples: baselineScores.length,
574
- candidateSamples: candidateScores.length
575
- };
576
- }
577
- async function scoreAll(outputs, judge, concurrency) {
578
- const results = new Array(outputs.length);
579
- let next = 0;
580
- async function worker() {
581
- while (true) {
582
- const i = next++;
583
- if (i >= outputs.length) return;
584
- const v = await judge(outputs[i]);
585
- results[i] = Number.isFinite(v) ? v : 0;
586
- }
587
- }
588
- await Promise.all(Array.from({ length: Math.max(1, concurrency) }, () => worker()));
589
- return results;
590
- }
591
-
592
- // src/release-report.ts
593
- function renderReleaseReport(scorecard, options = {}) {
594
- const title = options.title ?? `Release Report: ${scorecard.target}`;
595
- const lines = [];
596
- lines.push(`# ${title}`);
597
- lines.push("");
598
- lines.push(`Status: **${scorecard.status.toUpperCase()}**`);
599
- lines.push(`Promote: **${scorecard.promote ? "yes" : "no"}**`);
600
- if (scorecard.candidateId) lines.push(`Candidate: \`${scorecard.candidateId}\``);
601
- if (scorecard.baselineId) lines.push(`Baseline: \`${scorecard.baselineId}\``);
602
- lines.push("");
603
- lines.push(scorecard.summary);
604
- lines.push("");
605
- lines.push("## Metrics");
606
- lines.push("");
607
- lines.push("| Metric | Value |");
608
- lines.push("|---|---:|");
609
- lines.push(`| Scenarios | ${scorecard.metrics.scenarioCount} |`);
610
- lines.push(`| Search runs | ${scorecard.metrics.searchRuns} |`);
611
- lines.push(`| Holdout runs | ${scorecard.metrics.holdoutRuns} |`);
612
- lines.push(`| Unscored runs | ${scorecard.metrics.unscoredRuns} |`);
613
- lines.push(`| Terminal failures | ${scorecard.metrics.terminalFailureRuns} |`);
614
- lines.push(`| Pass rate | ${pct(scorecard.metrics.passRate)} |`);
615
- lines.push(`| Mean score | ${num(scorecard.metrics.meanScore)} |`);
616
- lines.push(`| Search mean | ${num(scorecard.metrics.searchMeanScore)} |`);
617
- lines.push(`| Holdout mean | ${num(scorecard.metrics.holdoutMeanScore)} |`);
618
- lines.push(`| Overfit gap | ${num(scorecard.metrics.overfitGap)} |`);
619
- lines.push(`| Mean cost | $${num(scorecard.metrics.meanCostUsd)} |`);
620
- lines.push(`| p95 wall time | ${duration(scorecard.metrics.p95WallMs)} |`);
621
- lines.push("");
622
- if (scorecard.issues.length > 0) {
623
- lines.push("## Issues");
624
- lines.push("");
625
- for (const issue of scorecard.issues) {
626
- lines.push(`- **${issue.severity}** \`${issue.code}\` (${issue.axis}): ${issue.detail}`);
627
- }
628
- lines.push("");
629
- }
630
- const surfaces = entries(scorecard.metrics.responsibleSurfaceCounts);
631
- if (surfaces.length > 0) {
632
- lines.push("## Responsible Surfaces");
633
- lines.push("");
634
- for (const [surface, count] of surfaces) lines.push(`- ${surface}: ${count}`);
635
- lines.push("");
636
- }
637
- const failures = entries(scorecard.metrics.failureClassCounts);
638
- if (failures.length > 0) {
639
- lines.push("## Failure Classes");
640
- lines.push("");
641
- for (const [mode, count] of failures) lines.push(`- ${mode}: ${count}`);
642
- lines.push("");
643
- }
644
- if (options.runs && options.runs.length > 0) {
645
- lines.push("## Run Summary");
646
- lines.push("");
647
- lines.push(
648
- summaryTable([...options.runs], {
649
- comparator: options.comparator ?? scorecard.baselineId ?? void 0,
650
- split: "holdout"
651
- }).markdown
652
- );
653
- lines.push("");
654
- }
655
- if (options.traceAnalystFindings && options.traceAnalystFindings.length > 0) {
656
- lines.push("## TraceAnalyst Findings");
657
- lines.push("");
658
- for (const finding of options.traceAnalystFindings) lines.push(`- ${finding}`);
659
- lines.push("");
660
- }
661
- const nextActions = options.nextActions ?? defaultNextActions(scorecard);
662
- if (nextActions.length > 0) {
663
- lines.push("## Next Actions");
664
- lines.push("");
665
- for (const action of nextActions) lines.push(`- ${action}`);
666
- lines.push("");
667
- }
668
- return `${lines.join("\n").trimEnd()}
669
- `;
670
- }
671
- function defaultNextActions(scorecard) {
672
- if (scorecard.promote) return ["Promote the candidate and keep canaries enabled."];
673
- return scorecard.issues.filter((issue) => issue.severity === "critical").map((issue) => `Resolve ${issue.code}: ${issue.detail}`);
674
- }
675
- function entries(values) {
676
- return Object.entries(values).filter(([, count]) => count > 0).sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]));
677
- }
678
- function pct(value) {
679
- return value === null ? "n/a" : `${(value * 100).toFixed(1)}%`;
680
- }
681
- function num(value) {
682
- return value === null ? "n/a" : value.toFixed(3);
683
- }
684
- function duration(value) {
685
- return value === null ? "n/a" : `${Math.round(value)} ms`;
686
- }
687
-
688
- export {
689
- evaluateReleaseConfidence,
690
- assertReleaseConfidence,
691
- bootstrapCi,
692
- judgeReplayGate,
693
- renderReleaseReport
694
- };
695
- //# sourceMappingURL=chunk-XDWDC2MP.js.map