@tangle-network/agent-eval 0.217.1 → 0.218.1

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 (172) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/dist/adapters/http.d.ts +2 -2
  3. package/dist/analyst/index.d.ts +1 -1
  4. package/dist/analyst/index.d.ts.map +1 -1
  5. package/dist/analyst/index.js +9 -9
  6. package/dist/analyst/index.js.map +1 -1
  7. package/dist/{analyze-runs-DyeNcenW.d.ts → analyze-runs-DjlZOVXx.d.ts} +2 -2
  8. package/dist/{analyze-runs-DyeNcenW.d.ts.map → analyze-runs-DjlZOVXx.d.ts.map} +1 -1
  9. package/dist/{benchmark-command-xQK8nOI6.js → benchmark-command-BupdHRyf.js} +661 -562
  10. package/dist/benchmark-command-BupdHRyf.js.map +1 -0
  11. package/dist/benchmarks/index.d.ts +4 -4
  12. package/dist/benchmarks/index.js +3 -3
  13. package/dist/campaign/index.d.ts +4 -4
  14. package/dist/campaign/index.js +10 -10
  15. package/dist/{campaign-CJGkxAQ6.js → campaign-CGvUTnmc.js} +312 -281
  16. package/dist/{campaign-CJGkxAQ6.js.map → campaign-CGvUTnmc.js.map} +1 -1
  17. package/dist/{campaign-evidence-CQYw8_0H.js → campaign-evidence-DunzcJGv.js} +2 -2
  18. package/dist/{campaign-evidence-CQYw8_0H.js.map → campaign-evidence-DunzcJGv.js.map} +1 -1
  19. package/dist/{chat-client-ldqxYYTN.js → chat-client-B2pXlPdx.js} +2 -2
  20. package/dist/{chat-client-ldqxYYTN.js.map → chat-client-B2pXlPdx.js.map} +1 -1
  21. package/dist/{chat-json-call-DavzexSp.js → chat-json-call-Dm9c-b41.js} +2 -2
  22. package/dist/{chat-json-call-DavzexSp.js.map → chat-json-call-Dm9c-b41.js.map} +1 -1
  23. package/dist/cli.js +10 -10
  24. package/dist/{completion-verifier-B_jw6C9p.js → completion-verifier-DbLVf3i8.js} +4 -4
  25. package/dist/{completion-verifier-B_jw6C9p.js.map → completion-verifier-DbLVf3i8.js.map} +1 -1
  26. package/dist/contract/index.d.ts +7 -7
  27. package/dist/contract/index.js +90 -10
  28. package/dist/contract/index.js.map +1 -1
  29. package/dist/{default-registry-ClYjq3QE.js → default-registry-BJ-Pq6yL.js} +309 -277
  30. package/dist/{default-registry-ClYjq3QE.js.map → default-registry-BJ-Pq6yL.js.map} +1 -1
  31. package/dist/{define-agent-eval-BDxNlP3D.js → define-agent-eval-BGdFKlrc.js} +165 -105
  32. package/dist/define-agent-eval-BGdFKlrc.js.map +1 -0
  33. package/dist/{define-agent-eval-BIkH_gAR.d.ts → define-agent-eval-BlH10zEw.d.ts} +6 -6
  34. package/dist/{define-agent-eval-BIkH_gAR.d.ts.map → define-agent-eval-BlH10zEw.d.ts.map} +1 -1
  35. package/dist/diagnosis/index.d.ts +1 -1
  36. package/dist/{dspy-rlm-engine-DhdCr1Dc.js → dspy-rlm-engine-CSMwudLO.js} +2 -2
  37. package/dist/{dspy-rlm-engine-DhdCr1Dc.js.map → dspy-rlm-engine-CSMwudLO.js.map} +1 -1
  38. package/dist/eval-campaign-BUMIxKTE.js +393 -0
  39. package/dist/eval-campaign-BUMIxKTE.js.map +1 -0
  40. package/dist/{evaluation-jTjC_QQD.d.ts → evaluation-BOZ38vOH.d.ts} +2 -2
  41. package/dist/{evaluation-jTjC_QQD.d.ts.map → evaluation-BOZ38vOH.d.ts.map} +1 -1
  42. package/dist/evaluation.d.ts +1 -1
  43. package/dist/experiment/index.d.ts +1 -1
  44. package/dist/experiment/index.d.ts.map +1 -1
  45. package/dist/experiment/index.js +110 -71
  46. package/dist/experiment/index.js.map +1 -1
  47. package/dist/{exporters-Cl6IeNAu.js → exporters-DWvM16LE.js} +2 -2
  48. package/dist/{exporters-Cl6IeNAu.js.map → exporters-DWvM16LE.js.map} +1 -1
  49. package/dist/{external-optimizer-process-KVFGvYX1.js → external-optimizer-process-C3Wm7Vhn.js} +2 -2
  50. package/dist/{external-optimizer-process-KVFGvYX1.js.map → external-optimizer-process-C3Wm7Vhn.js.map} +1 -1
  51. package/dist/{external-optimizer-subprocess-XIHBOSKt.js → external-optimizer-subprocess-B5gdLRZv.js} +3 -3
  52. package/dist/{external-optimizer-subprocess-XIHBOSKt.js.map → external-optimizer-subprocess-B5gdLRZv.js.map} +1 -1
  53. package/dist/{findings-store-BMVQtEsm.js → findings-store-BtTzPL0d.js} +5 -5
  54. package/dist/{findings-store-BMVQtEsm.js.map → findings-store-BtTzPL0d.js.map} +1 -1
  55. package/dist/{hf-dataset-D9f7-oX7.js → hf-dataset-CKxIJQba.js} +3 -3
  56. package/dist/{hf-dataset-D9f7-oX7.js.map → hf-dataset-CKxIJQba.js.map} +1 -1
  57. package/dist/hosted/index.js +1 -1
  58. package/dist/{index-ZuWx52WG.d.ts → index-B16FNdW5.d.ts} +34 -17
  59. package/dist/index-B16FNdW5.d.ts.map +1 -0
  60. package/dist/{index-9jJ2fKSX.d.ts → index-CalAsXMR.d.ts} +7 -5
  61. package/dist/index-CalAsXMR.d.ts.map +1 -0
  62. package/dist/{index-BiT6RtNH.d.ts → index-DbMOXYnP.d.ts} +6 -6
  63. package/dist/{index-BiT6RtNH.d.ts.map → index-DbMOXYnP.d.ts.map} +1 -1
  64. package/dist/index.d.ts +9 -9
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +611 -688
  67. package/dist/index.js.map +1 -1
  68. package/dist/{integrity-DOd9Q86O.js → integrity-C8oUeB0g.js} +322 -197
  69. package/dist/integrity-C8oUeB0g.js.map +1 -0
  70. package/dist/{journal-CR4QikYp.js → journal-C7om8Gum.js} +48 -38
  71. package/dist/journal-C7om8Gum.js.map +1 -0
  72. package/dist/ledger-core/index.d.ts +1 -1
  73. package/dist/ledger-core/index.js +2 -2
  74. package/dist/ledger-core/lock-holder.d.ts +2 -0
  75. package/dist/ledger-core/lock-holder.js +181 -0
  76. package/dist/ledger-core/lock-holder.js.map +1 -0
  77. package/dist/{ledger-core-DrJhbms9.js → ledger-core-CAxUdDk0.js} +2 -2
  78. package/dist/{ledger-core-DrJhbms9.js.map → ledger-core-CAxUdDk0.js.map} +1 -1
  79. package/dist/{llm-client-BshCREn6.js → llm-client-_Y6ic-tf.js} +238 -248
  80. package/dist/llm-client-_Y6ic-tf.js.map +1 -0
  81. package/dist/{llm-judge-C8jMTNNG.js → llm-judge-Djxh-Uhs.js} +646 -458
  82. package/dist/llm-judge-Djxh-Uhs.js.map +1 -0
  83. package/dist/lock-holder-DaJbfpci.d.ts +86 -0
  84. package/dist/lock-holder-DaJbfpci.d.ts.map +1 -0
  85. package/dist/{matrix-DHe-dwVJ.d.ts → matrix-CCSBna4q.d.ts} +2 -2
  86. package/dist/{matrix-DHe-dwVJ.d.ts.map → matrix-CCSBna4q.d.ts.map} +1 -1
  87. package/dist/{mint-zszyYlpA.js → mint-CbdwjTPW.js} +2 -2
  88. package/dist/{mint-zszyYlpA.js.map → mint-CbdwjTPW.js.map} +1 -1
  89. package/dist/multishot/golden/index.d.ts +1 -1
  90. package/dist/multishot/index.d.ts +2 -2
  91. package/dist/openapi.json +1 -1
  92. package/dist/{pareto-BzsxidFD.js → pareto-CTv8vozZ.js} +4 -4
  93. package/dist/{pareto-BzsxidFD.js.map → pareto-CTv8vozZ.js.map} +1 -1
  94. package/dist/{promotion-gate-DaY95yU6.d.ts → promotion-gate-CxEHRsZW.d.ts} +2 -2
  95. package/dist/{promotion-gate-DaY95yU6.d.ts.map → promotion-gate-CxEHRsZW.d.ts.map} +1 -1
  96. package/dist/{proposal-findings-BbWidvUk.js → proposal-findings-n-5WBbEx.js} +2 -2
  97. package/dist/{proposal-findings-BbWidvUk.js.map → proposal-findings-n-5WBbEx.js.map} +1 -1
  98. package/dist/{render-C-w2EZ6p.js → render-Cs34y0iX.js} +404 -208
  99. package/dist/render-Cs34y0iX.js.map +1 -0
  100. package/dist/reporting.d.ts +2 -2
  101. package/dist/{researcher-0ABVIdGa.d.ts → researcher-GU1tV4dn.d.ts} +2 -2
  102. package/dist/{researcher-0ABVIdGa.d.ts.map → researcher-GU1tV4dn.d.ts.map} +1 -1
  103. package/dist/rl.d.ts +2 -2
  104. package/dist/rl.js +4 -4
  105. package/dist/rollout/index.js +5 -5
  106. package/dist/{rollout-D6C50mfA.js → rollout-Dd1ucT_M.js} +5 -5
  107. package/dist/{rollout-D6C50mfA.js.map → rollout-Dd1ucT_M.js.map} +1 -1
  108. package/dist/schema-C-ziyJD7.d.ts.map +1 -1
  109. package/dist/{schema-DxcKTzbi.js → schema-CvhfLjtZ.js} +77 -47
  110. package/dist/schema-CvhfLjtZ.js.map +1 -0
  111. package/dist/search/index.d.ts +2 -2
  112. package/dist/search/index.d.ts.map +1 -1
  113. package/dist/search/index.js +2 -2
  114. package/dist/{search-kernel-DxqjBxA-.d.ts → search-kernel-p9JB3SmL.d.ts} +3 -3
  115. package/dist/{search-kernel-DxqjBxA-.d.ts.map → search-kernel-p9JB3SmL.d.ts.map} +1 -1
  116. package/dist/{search-ledger-TUvB5gWH.js → search-ledger-ClpN4I3e.js} +4 -4
  117. package/dist/{search-ledger-TUvB5gWH.js.map → search-ledger-ClpN4I3e.js.map} +1 -1
  118. package/dist/{search-ledger-file-UKCO2r8a.js → search-ledger-file-Bd5Tioq6.js} +3 -3
  119. package/dist/{search-ledger-file-UKCO2r8a.js.map → search-ledger-file-Bd5Tioq6.js.map} +1 -1
  120. package/dist/{search-shipper-Cw2z3-td.js → search-shipper-Bg2HW3Uv.js} +3 -3
  121. package/dist/{search-shipper-Cw2z3-td.js.map → search-shipper-Bg2HW3Uv.js.map} +1 -1
  122. package/dist/{search-summary-DQIvJsSB.js → search-summary-CrBuvVnf.js} +3 -3
  123. package/dist/{search-summary-DQIvJsSB.js.map → search-summary-CrBuvVnf.js.map} +1 -1
  124. package/dist/{server-DoVbqqtJ.js → server-C6M0qR8h.js} +2 -2
  125. package/dist/{server-DoVbqqtJ.js.map → server-C6M0qR8h.js.map} +1 -1
  126. package/dist/{single-run-lock-U58yf8N6.js → single-run-lock-Dekd8_Wv.js} +7 -7
  127. package/dist/single-run-lock-Dekd8_Wv.js.map +1 -0
  128. package/dist/{skillopt-optimization-method-kyL94-ri.js → skillopt-optimization-method-5dlex7MJ.js} +1339 -1059
  129. package/dist/skillopt-optimization-method-5dlex7MJ.js.map +1 -0
  130. package/dist/{statistical-heldout-C9AbgREN.d.ts → statistical-heldout-BHfLZHrm.d.ts} +2 -2
  131. package/dist/{statistical-heldout-C9AbgREN.d.ts.map → statistical-heldout-BHfLZHrm.d.ts.map} +1 -1
  132. package/dist/{summary-report-DM7tlml1.d.ts → summary-report-CkbRcSuu.d.ts} +16 -1
  133. package/dist/summary-report-CkbRcSuu.d.ts.map +1 -0
  134. package/dist/supervisor-run/index.d.ts.map +1 -1
  135. package/dist/supervisor-run/index.js +3 -3
  136. package/dist/{systemone-Bp_Ac0p1.d.ts → systemone-BMzDJb1i.d.ts} +3 -3
  137. package/dist/{systemone-Bp_Ac0p1.d.ts.map → systemone-BMzDJb1i.d.ts.map} +1 -1
  138. package/dist/systemone.d.ts +2 -2
  139. package/dist/{terminal-record-78g6E4vh.js → terminal-record-D4Rv-j1W.js} +241 -193
  140. package/dist/{terminal-record-78g6E4vh.js.map → terminal-record-D4Rv-j1W.js.map} +1 -1
  141. package/dist/trajectory-replay/index.d.ts +4 -1
  142. package/dist/trajectory-replay/index.d.ts.map +1 -1
  143. package/dist/trajectory-replay/index.js +834 -824
  144. package/dist/trajectory-replay/index.js.map +1 -1
  145. package/dist/{tree-BGRglkKd.js → tree-B5e1uAeL.js} +122 -14
  146. package/dist/tree-B5e1uAeL.js.map +1 -0
  147. package/dist/{types-DtMbFw6U.d.ts → types-BKCzzmit.d.ts} +2 -2
  148. package/dist/{types-DtMbFw6U.d.ts.map → types-BKCzzmit.d.ts.map} +1 -1
  149. package/dist/{types-D8GhJoHk.d.ts → types-DtkO1G9L.d.ts} +2 -2
  150. package/dist/{types-D8GhJoHk.d.ts.map → types-DtkO1G9L.d.ts.map} +1 -1
  151. package/dist/wire/index.js +1 -1
  152. package/docs/design/statistics-decisions.md +1 -1
  153. package/docs/eval-surface-map.md +1 -0
  154. package/docs/profile-json-identity.md +1 -2
  155. package/docs/public-api.md +27 -16
  156. package/package.json +7 -2
  157. package/dist/benchmark-command-xQK8nOI6.js.map +0 -1
  158. package/dist/define-agent-eval-BDxNlP3D.js.map +0 -1
  159. package/dist/eval-campaign-BLEfBGbA.js +0 -343
  160. package/dist/eval-campaign-BLEfBGbA.js.map +0 -1
  161. package/dist/index-9jJ2fKSX.d.ts.map +0 -1
  162. package/dist/index-ZuWx52WG.d.ts.map +0 -1
  163. package/dist/integrity-DOd9Q86O.js.map +0 -1
  164. package/dist/journal-CR4QikYp.js.map +0 -1
  165. package/dist/llm-client-BshCREn6.js.map +0 -1
  166. package/dist/llm-judge-C8jMTNNG.js.map +0 -1
  167. package/dist/render-C-w2EZ6p.js.map +0 -1
  168. package/dist/schema-DxcKTzbi.js.map +0 -1
  169. package/dist/single-run-lock-U58yf8N6.js.map +0 -1
  170. package/dist/skillopt-optimization-method-kyL94-ri.js.map +0 -1
  171. package/dist/summary-report-DM7tlml1.d.ts.map +0 -1
  172. package/dist/tree-BGRglkKd.js.map +0 -1
@@ -4,8 +4,8 @@ import { t as mulberry32 } from "./random-DDDcC7YU.js";
4
4
  import { r as holm } from "./multiplicity-Sg0U7h8j.js";
5
5
  import { o as pairedSignTest, r as DECISION_PAIRED_DELTA_STATISTIC, t as mean } from "./mean-BbA_JCzW.js";
6
6
  import { i as pairedDeltaTest, r as minimumPairsForPairedDeltaTest } from "./paired-promotion-decision-D0SHb-ZL.js";
7
- import { A as normalizeSignedZero, D as searchEstimateMethod, O as searchPosterior, b as verifySearchClaim, d as rankingSplit, f as summarizeSamples, k as seedFromDigest, n as paretoFrontier, o as searchPolicyView, u as INSUFFICIENT_FROM, w as estimateNode } from "./pareto-BzsxidFD.js";
8
- import { l as searchUnitScores } from "./search-ledger-TUvB5gWH.js";
7
+ import { A as normalizeSignedZero, D as searchEstimateMethod, O as searchPosterior, b as verifySearchClaim, d as rankingSplit, f as summarizeSamples, k as seedFromDigest, n as paretoFrontier, o as searchPolicyView, u as INSUFFICIENT_FROM, w as estimateNode } from "./pareto-CTv8vozZ.js";
8
+ import { l as searchUnitScores } from "./search-ledger-ClpN4I3e.js";
9
9
  import { t as roundDecimal } from "./round-decimal-COrKglMh.js";
10
10
  import { defineInlineResource } from "@tangle-network/agent-interface";
11
11
  //#region src/search/lenses/edit-credit-content.ts
@@ -594,6 +594,14 @@ function formatEstimate(estimate) {
594
594
  * `readArtifact` returns for its references.
595
595
  */
596
596
  function editCredit(state, options) {
597
+ return editCreditResult(chanceSignal(tallyAndLink(rankGenes(geneCredits(cleanSteps(trackCarriers(findGenes(editCreditContext({
598
+ state,
599
+ options
600
+ })))))))));
601
+ }
602
+ /** The search header, split, direction and the content of every node. */
603
+ function editCreditContext(prev) {
604
+ const { state, options } = prev;
597
605
  const header = state.header;
598
606
  if (!header) throw new Error(`editCredit: search ${state.searchId} has not been opened`);
599
607
  const split = options.split ?? rankingSplit(state);
@@ -607,6 +615,23 @@ function editCredit(state, options) {
607
615
  for (const node of nodes) contents.set(node.nodeId, nodeContent(options, node.artifact));
608
616
  const known = (nodeId) => contents.get(nodeId);
609
617
  const invalid = new Set(nodes.filter((node) => node.status === "invalid").map((n) => n.nodeId));
618
+ return {
619
+ ...prev,
620
+ header,
621
+ split,
622
+ direction,
623
+ sign,
624
+ interactionGenes,
625
+ nodes,
626
+ byId,
627
+ contents,
628
+ known,
629
+ invalid
630
+ };
631
+ }
632
+ /** Genes: every lineage edge in ledger order, with the steps between a node and its parents. */
633
+ function findGenes(prev) {
634
+ const { state, byId, contents, known } = prev;
610
635
  const genes = /* @__PURE__ */ new Map();
611
636
  const byLocus = /* @__PURE__ */ new Map();
612
637
  const introducedOn = /* @__PURE__ */ new Map();
@@ -689,6 +714,22 @@ function editCredit(state, options) {
689
714
  }
690
715
  introducedOn.set(edge.edgeId, introducedHere);
691
716
  }
717
+ return {
718
+ ...prev,
719
+ genes,
720
+ byLocus,
721
+ introducedOn,
722
+ unknownEdges,
723
+ stepList,
724
+ stepKeys,
725
+ lineageEdges,
726
+ readEdges,
727
+ edgeOrdinal
728
+ };
729
+ }
730
+ /** Carrying: every gene against every node whose content is known, and the steps each gene flips. */
731
+ function trackCarriers(prev) {
732
+ const { nodes, contents, invalid, genes, stepList } = prev;
692
733
  const carriersOf = /* @__PURE__ */ new Map();
693
734
  const carried = /* @__PURE__ */ new Map();
694
735
  for (const record of genes.values()) {
@@ -704,6 +745,16 @@ function editCredit(state, options) {
704
745
  }
705
746
  for (const step of stepList) for (const [geneId, set] of carriersOf) if (set.has(step.parentId) !== set.has(step.childId)) step.flips.add(geneId);
706
747
  const measurable = stepList.filter((step) => !invalid.has(step.parentId) && !invalid.has(step.childId));
748
+ return {
749
+ ...prev,
750
+ carriersOf,
751
+ carried,
752
+ measurable
753
+ };
754
+ }
755
+ /** The edits each gene was introduced in, and the clean steps that isolate each gene. */
756
+ function cleanSteps(prev) {
757
+ const { state, split, genes, introducedOn, carriersOf, measurable } = prev;
707
758
  const editsOf = /* @__PURE__ */ new Map();
708
759
  for (const record of genes.values()) editsOf.set(record.geneId, record.introduced.map((introduction) => new Set(introducedOn.get(introduction.edgeId))));
709
760
  const unitMeansOf = memo((nodeId) => {
@@ -729,6 +780,18 @@ function editCredit(state, options) {
729
780
  lackingId: childCarries ? step.parentId : step.childId
730
781
  });
731
782
  }
783
+ return {
784
+ ...prev,
785
+ editsOf,
786
+ unitMeansOf,
787
+ cellsDigestOf,
788
+ cleanOf,
789
+ flipCount
790
+ };
791
+ }
792
+ /** Per-gene paired credit over the clean steps. */
793
+ function geneCredits(prev) {
794
+ const { split, direction, genes, unitMeansOf, cellsDigestOf, cleanOf } = prev;
732
795
  const credits = /* @__PURE__ */ new Map();
733
796
  for (const record of genes.values()) {
734
797
  const steps = cleanOf.get(record.geneId) ?? [];
@@ -771,6 +834,14 @@ function editCredit(state, options) {
771
834
  cellSetDigest
772
835
  }));
773
836
  }
837
+ return {
838
+ ...prev,
839
+ credits
840
+ };
841
+ }
842
+ /** Linkage groups, then the genes in verdict order. */
843
+ function rankGenes(prev) {
844
+ const { sign, invalid, genes, carriersOf, editsOf, cleanOf, flipCount, credits } = prev;
774
845
  const linkageKey = (geneId) => canonicalString((cleanOf.get(geneId) ?? []).map(({ step, carrierId }) => `${step.key}:${carrierId === step.childId ? "+" : "-"}`).sort(compareCodeUnits));
775
846
  const linkGroups = /* @__PURE__ */ new Map();
776
847
  for (const record of [...genes.values()].sort((a, b) => compareOrder(a.order, b.order))) {
@@ -811,6 +882,17 @@ function editCredit(state, options) {
811
882
  insufficient: 3
812
883
  };
813
884
  geneList.sort((a, b) => verdictRank[a.verdict] - verdictRank[b.verdict] || improvementLow(b.credit, sign) - improvementLow(a.credit, sign) || gain(b.credit, sign) - gain(a.credit, sign) || compareOrder(genes.get(a.geneId).order, genes.get(b.geneId).order));
885
+ return {
886
+ ...prev,
887
+ linkageKey,
888
+ linkGroups,
889
+ geneList,
890
+ verdictRank
891
+ };
892
+ }
893
+ /** Verdict counts, interactions, skill candidates and lineage rows. */
894
+ function tallyAndLink(prev) {
895
+ const { state, header, split, sign, interactionGenes, nodes, byId, contents, genes, carriersOf, carried, unitMeansOf, cleanOf, geneList } = prev;
814
896
  const counts = emptyCounts();
815
897
  const editCounts = emptyCounts();
816
898
  for (const gene of geneList) {
@@ -827,23 +909,49 @@ function editCredit(state, options) {
827
909
  });
828
910
  const skillCandidates = skills(geneList, genes, header.subject, split);
829
911
  const lineage = lineageRows(state, nodes, byId, contents, carried);
912
+ return {
913
+ ...prev,
914
+ counts,
915
+ editCounts,
916
+ interactions,
917
+ skillCandidates,
918
+ lineage
919
+ };
920
+ }
921
+ /** How many measured edits the lens calls reusable, and how many it would call so by chance. */
922
+ function chanceSignal(prev) {
923
+ const { split, measurable, geneList, counts, editCounts } = prev;
830
924
  const isMeasured = (gene) => gene.credit.method === "descriptive" || gene.credit.method === "bootstrap";
831
925
  const measured = geneList.filter(isMeasured).length;
832
926
  const measuredLeads = geneList.filter((gene) => isMeasured(gene) && (gene.linkage ?? gene.geneId) === gene.geneId);
833
927
  const expectedReusable = normalizeSignedZero(Math.round(measuredLeads.reduce((sum, gene) => sum + chanceReusable(gene.credit.pairs), 0) * 1e6) / 1e6);
834
928
  const top = geneList.filter((gene) => gene.verdict === "reusable" && (gene.linkage ?? gene.geneId) === gene.geneId).map((gene) => gene.geneId);
929
+ const signal = measured === 0 ? {
930
+ name: EDIT_CREDIT_SIGNAL,
931
+ value: null,
932
+ basis: `insufficient: no gene has ${DESCRIPTIVE_FROM} ${split} units on clean steps (${geneList.length} genes, ${measurable.length} measurable steps)`,
933
+ top: []
934
+ } : {
935
+ name: EDIT_CREDIT_SIGNAL,
936
+ value: editCounts.reusable,
937
+ basis: `independent edits pairedDeltaTest finds improve the objective on the ${split} split (${counts.reusable} genes), of ${measuredLeads.length} edits (${measured} genes) measured on ${DESCRIPTIVE_FROM} or more units; about ${expectedReusable.toFixed(2)} would be called reusable by chance with no true effect (unadjusted)`,
938
+ top
939
+ };
835
940
  return {
836
- signal: measured === 0 ? {
837
- name: EDIT_CREDIT_SIGNAL,
838
- value: null,
839
- basis: `insufficient: no gene has ${DESCRIPTIVE_FROM} ${split} units on clean steps (${geneList.length} genes, ${measurable.length} measurable steps)`,
840
- top: []
841
- } : {
842
- name: EDIT_CREDIT_SIGNAL,
843
- value: editCounts.reusable,
844
- basis: `independent edits pairedDeltaTest finds improve the objective on the ${split} split (${counts.reusable} genes), of ${measuredLeads.length} edits (${measured} genes) measured on ${DESCRIPTIVE_FROM} or more units; about ${expectedReusable.toFixed(2)} would be called reusable by chance with no true effect (unadjusted)`,
845
- top
846
- },
941
+ ...prev,
942
+ isMeasured,
943
+ measured,
944
+ measuredLeads,
945
+ expectedReusable,
946
+ top,
947
+ signal
948
+ };
949
+ }
950
+ /** The lens result: the signal and its data. */
951
+ function editCreditResult(prev) {
952
+ const { split, direction, nodes, contents, invalid, unknownEdges, stepList, lineageEdges, readEdges, measurable, geneList, counts, editCounts, interactions, skillCandidates, lineage, measuredLeads, expectedReusable, signal } = prev;
953
+ return {
954
+ signal,
847
955
  data: {
848
956
  split,
849
957
  direction,
@@ -4033,4 +4141,4 @@ function tree(state) {
4033
4141
  //#endregion
4034
4142
  export { vectorEmbedding as _, skillCalibration as a, editCreditText as b, META_SEARCH_SCORE_SOURCE as c, searchPolicyGenome as d, landscape as f, surfaceTextEdits as g, lineageEdits as h, nextUnitExtension as i, metaSearch as l, formatLandscape as m, taskMatrix as n, skillManifold as o, draftOnPlateau as p, formatSkillManifold as r, renderMetaSearchText as s, tree as t, metaSearchScore as u, front as v, editCredit as y };
4035
4143
 
4036
- //# sourceMappingURL=tree-BGRglkKd.js.map
4144
+ //# sourceMappingURL=tree-B5e1uAeL.js.map