chainlesschain 0.166.65 → 0.166.68

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 (198) hide show
  1. package/README.md +20 -12
  2. package/package.json +4 -4
  3. package/src/assets/web-panel/assets/{AIOps-Byz17CTN.js → AIOps-CXkSNOGY.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-C5LiW2-J.js → ActionButton-ysMR6gTs.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-D1INcvZF.js → Analytics-WGZ0sWuw.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-DZzHO1VV.js → AppLayout-Cs2iRlQG.js} +4 -4
  7. package/src/assets/web-panel/assets/{Artifacts-WfYQL6Ia.js → Artifacts-5IdfxWz0.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-DohBoGWO.js → Audit-U9V434QX.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-Chtk-Hde.js → BackgroundAgents-BvFwxPlC.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-B813PuMz.js → Backup-C9yTr9hO.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-DaDdWWgK.js → BaseInput-BdsSwUgE.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-D4pJ6oZ7.js → Chat-BB_2oBgH.js} +5 -5
  13. package/src/assets/web-panel/assets/ChatBubbleRenderer-Bpf1hDUl.js +1 -0
  14. package/src/assets/web-panel/assets/{Checkbox-Clo9TvO6.js → Checkbox-v6M5m7dK.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-uejLg8Ih.js → Codegen-CtouWSIz.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-B7nbx-iJ.js → Col-CqQJ4ORW.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-FEyjPK1j.js → Community-BO__QCOy.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-B6Fk0Kn6.js → Compact-D0Kq4xlH.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-BQG8goUl.js → Compliance-BSLKKBjA.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-CbBeEfHp.js → Cowork-VsujXW5o.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-DPzlFcEZ.js → Cron-j8DbLGi5.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-B8pWJrbg.js → Crosschain-DWpYH1yN.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-gGQHUlFN.js → DID-mLaRxLQh.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-C2TMFHrn.js → Dashboard-Cff033Jr.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BVPxGbll.js → Dropdown-B1Upt6fP.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-CNPxs0hd.js → EmailListRenderer-CPtb8joV.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-_XTiB7q1.js → EvolutionSettings-CVh4Uv4g.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-UyE3VWtI.js → FamilyGuardDashboard-CrD1PhbF.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-CLt6FHK-.js → Federation-ftxrvqW5.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-CdNQPRPw.js → FormItemContext-9O80slC1.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-BJ0AMhrh.js → GenericCardRenderer-DaYvYIj9.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-CQnvMfOM.js → Git-BKZh0YE5.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-deYsHC-o.js → Governance-vWbN873j.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-qaSck43z.js → Inference-BN6RR-l8.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-De0aJ3Ls.js → KnowledgeGraph-x49x9m7Q.js} +1 -1
  36. package/src/assets/web-panel/assets/Logs-Co2EPLsJ.js +2 -0
  37. package/src/assets/web-panel/assets/MarkdownRenderer-D7wIB-c7.js +1 -0
  38. package/src/assets/web-panel/assets/{Marketplace-Byz3xCBN.js → Marketplace-DpPu6XQp.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-DOZUUW6z.js → McpTools-BR0ksiax.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-C33wC2hA.js → Memory-BXznJ5-C.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-zZe-T_6M.js → MobileBridge-BHSOpfv7.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-CRnUIume.js → MobileProjects-DdWmgIup.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-C1xlRVAN.js → Mtc-D9Rk_IGT.js} +5 -5
  44. package/src/assets/web-panel/assets/{MtcAudit-D0U07bIi.js → MtcAudit--i8q1lKc.js} +2 -2
  45. package/src/assets/web-panel/assets/{Multisig-DF8uvV3h.js → Multisig-BHnNG7R9.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-bBPGAFlt.js → NLProgramming-Duo1ij2_.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-BHAaOsgg.js → Notes-B44Le73p.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-Cl0fG_rA.js → NotificationSettings-C3oy_7Gf.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-BEPAs8Zv.js → OrderTableRenderer-Da_73SI5.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-BAxSwgk5.js → Organization-ChsSwKxT.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-D68KubAu.js → Overflow-DR5G_cCn.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-bhdT17zk.js → P2P-yfaobqow.js} +2 -2
  53. package/src/assets/web-panel/assets/PdhVaultBrowser-DgimH6Jp.js +7 -0
  54. package/src/assets/web-panel/assets/{Permissions-Bq8fvkak.js → Permissions-DhinFvtE.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-BYd2JEic.js → PersonalDataHub-CfeNVic1.js} +5 -5
  56. package/src/assets/web-panel/assets/{Pipeline-Csg_ja69.js → Pipeline-CGKO26Nk.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-lwxwLj4M.js → Privacy-CxxfYEJh.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-BdBZkH8z.js → ProjectInit-CZsaAab9.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-ClWgFy-K.js → ProjectSettings-BUm_6clQ.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-Bu-qj8N1.js → Projects-Capr8bVq.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-DEjxrxw3.js → Providers-D28VqPja.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-eccy-8Vi.js → QrScannerModal-Cj200vUb.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-Vx3uDvFg.js → QuickAsk-BGpnEiam.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-CfUivNps.js → Recommend-Ix79Tpni.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-BU4gk7GI.js → RemoteSession-BdGAFbIk.js} +3 -3
  66. package/src/assets/web-panel/assets/{Reputation-CbPzdZ0C.js → Reputation-B1Lis0Wk.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-CYLrgfKA.js → Row-Ba_okwOW.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-DbY1oyuv.js → RssFeed-DDbEuI-m.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-QeW41K5r.js → Search-D89wAkMy.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-CJxf1kLZ.js → Security-CJKCKAU-.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-CFO9ySZc.js → Services-mitEc1XV.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-CQFjeQN0.js → Skeleton-CnBjLDfX.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-CLLB4INW.js → Skills-DSzDYvH3.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-DxeLIJk0.js → Sla-CglJ_4p3.js} +1 -1
  75. package/src/assets/web-panel/assets/SpeechSettings-BicWJS7f.js +1 -0
  76. package/src/assets/web-panel/assets/{SyncSettings-C6NOkcQK.js → SyncSettings-Cq7o6fmr.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-LmVPWDfQ.js → Tasks-DOxFOBpU.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-BdEfUoVB.js → Templates-bY0wSbQM.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-IUlESacN.js → Tenant-BAyyl0qX.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-B9pDe7sn.js → Terminal-BGBhSpqc.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-ZCwB-Pki.js → TimelineRenderer-BvW5lXYz.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-4qk16LX1.js → Tokens-Ua_LIx8-.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-jXNyargn.js → Trigger-BGwb2KL1.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-D13PydtT.js → Trust-CD2IEHvj.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-yPgws6mS.js → UkeySign-D5LetK6P.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-B329WjpG.js → VideoEditing-oP7ehFgR.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-T8VM-Ttm.js → Wallet-BBtu4-xa.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-XuRibrpP.js → WebAuthn-iSPRU4Ht.js} +5 -5
  89. package/src/assets/web-panel/assets/{WorkflowEditor-D1Gwz3YR.js → WorkflowEditor-DuEDhQmB.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-DjydtnT-.js → chat-DGDgqvvm.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-gFtBvPrr.js → colors-DGQMWa1-.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-CndxhGfx.js → compact-item-COVznBL4.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-DnfGpd0L.js → createContext-DIxVeHXI.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-CjR9h-Z_.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-CmT5hRVW.js → hasIn-DkxZO3E9.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-BGlmPbl_.js → index-0ToBFsvW.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-BsRKmb6k.js → index-2JZizEPc.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-C14jryXi.js → index-BAL2p7YC.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-B0WFjxWs.js → index-BAlrovUm.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BlTcxT_L.js → index-BBw2MLIe.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-DjcR-CwS.js → index-BHH95jcm.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-DreYqebI.js → index-BOTshZNx.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-DaEPE2DC.js → index-BQm7ntcn.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BNHdO6Jr.js → index-BUqwlzc8.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C3HvYeA3.js → index-BY6MSbWT.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DUlubR4l.js → index-BY9Ossof.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-Dbpk75MO.js → index-BgM-3a1w.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-CqpR0Des.js → index-Bv0_u0ze.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DjY-3sMA.js → index-C3XeNS82.js} +3 -3
  110. package/src/assets/web-panel/assets/{index-DV6NrfJx.js → index-C3bN6751.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DuAvYTmY.js → index-CNRRrP3-.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BW3nWiu0.js → index-CV0KnNqR.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-CZLDbPTa.js → index-CcNGQWum.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-D5na0B7G.js → index-Ci34vbh0.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DoBKSzqu.js → index-ClQVcrFt.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-CuOx4Pbe.js → index-Cligb-Dl.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CgMKElUh.js → index-CokrhbY2.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BFif4Cev.js → index-CpZxDiVK.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-HHP1zzo7.js → index-CyMHF2Bi.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-_-wGLtAg.js → index-DDwPBGdA.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-ktN-K1Tf.js → index-DU1ArKl5.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-C4Mqhmas.js → index-DV0H83eS.js} +1 -1
  123. package/src/assets/web-panel/assets/index-D_nxBMX5.js +1 -0
  124. package/src/assets/web-panel/assets/{index-BXNUTiW8.js → index-DaWQSp5a.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DKyuE_Y2.js → index-DmduvOYT.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DV2PR3Fa.js → index-ECoDhyH3.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-BVM_w30N.js → index-ZcqTvPnt.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CRqz8TtI.js → index-b2_M6o20.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CB27echm.js → index-b_0qTo8O.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-D88-8bsB.js → index-dfYkGovV.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DGbKeg8G.js → index-jo7DbU0w.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-D2d7358Y.js → index-usmG13jq.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-zQf599Uq.js → index-vXrktF3e.js} +1 -1
  134. package/src/assets/web-panel/assets/index-z_cTUMX-.js +1 -0
  135. package/src/assets/web-panel/assets/{initDefaultProps-KV3V-PNH.js → initDefaultProps-CkSeiBwL.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-PFGQg7_X.js → motion-CSzhDP0s.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-Dnl79wq4.js → move-mgCt4iC6.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-Bwl5JH9V.js → mtc-parser-BEZBLcKt.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-DCcTtM1l.js → omit-BsHctMEr.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-Cl6BjjDf.js → pickAttrs-1BHamnGW.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-fdqhyo42.js → placementArrow--Vb4Bd7l.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-DYQpmcDW.js → responsiveObserve-DD33SqCm.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-C4l-VfO4.js → slide-DfrLtxgK.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-DYDw_dyZ.js → statusUtils-D9Pe_gXW.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-BEsubSMu.js → styleChecker-0NY5iMun.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-Cj82ggQ_.js → useFlexGapSupport-DSsZstwg.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-B7L1eJ0V.js → useFs-BU8HyH59.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-DVlJVD4d.js → usePersonalDataHub-D_xttink.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-BBAbRN_Y.js → vnode-39VhX2lM.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-BYn48q-I.js → zoom-D5KQ8Pks.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/data/changelog.json +20 -7
  153. package/src/lib/dependency-install-policy.js +1 -1
  154. package/src/lib/evolution/browser-download-action-authority.js +747 -0
  155. package/src/lib/evolution/browser-download-artifact-disposal-authority.js +436 -0
  156. package/src/lib/evolution/browser-filesystem-quarantine-custody.js +2453 -0
  157. package/src/lib/evolution/browser-filesystem-quarantine-disposal.js +36 -0
  158. package/src/lib/evolution/browser-keyboard-action-authority.js +560 -0
  159. package/src/lib/evolution/browser-navigation-action-authority.js +546 -0
  160. package/src/lib/evolution/browser-quarantine-lock-maintenance-authority.js +573 -0
  161. package/src/lib/evolution/browser-quarantine-operator-revocation-authority.js +442 -0
  162. package/src/lib/evolution/browser-quarantine-retention-authority.js +503 -0
  163. package/src/lib/evolution/browser-quarantine-retention-scheduler.js +207 -0
  164. package/src/lib/evolution/browser-quarantined-download-executor.js +525 -0
  165. package/src/lib/evolution/browser-tab-open-action-authority.js +491 -0
  166. package/src/lib/evolution/browser-vision-action-authority.js +444 -0
  167. package/src/lib/evolution/browser-vision-observation-authority.js +304 -0
  168. package/src/lib/evolution/evolution-deployment-loader.js +202 -1
  169. package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +5 -0
  170. package/src/lib/evolution/evolution-eval-gate.js +2 -1
  171. package/src/lib/evolution/evolution-eval-process-supervisor-worker.mjs +71 -9
  172. package/src/lib/evolution/evolution-eval-process-supervisor.js +276 -9
  173. package/src/lib/evolution/evolution-workbench-metrics.js +81 -21
  174. package/src/lib/evolution/pm-exploration-benchmark.js +747 -0
  175. package/src/lib/evolution/pm-exploration-budget-executor.js +106 -9
  176. package/src/lib/evolution/pm-exploration-egress-authority.js +382 -0
  177. package/src/lib/evolution/pm-exploration-evidence-bundle.js +149 -44
  178. package/src/lib/evolution/pm-exploration-execution-host.js +1254 -8
  179. package/src/lib/evolution/pm-exploration-process-grader.js +458 -0
  180. package/src/lib/evolution/pm-exploration-process-reviewer.js +456 -0
  181. package/src/lib/evolution/pm-exploration-process-runner.js +500 -0
  182. package/src/lib/evolution/pm-exploration-receipts.js +211 -11
  183. package/src/lib/evolution/pm-exploration-recovery-snapshot-store.js +465 -46
  184. package/src/lib/evolution/pm-exploration-transition-committer.js +185 -34
  185. package/src/lib/evolution/skill-outcome-index-authority.js +7 -3
  186. package/src/lib/governance-coverage.js +1 -1
  187. package/src/lib/headless-manifest.js +1 -1
  188. package/src/lib/protocol-replay.js +1 -1
  189. package/src/lib/skill-outcome-transcript-authority.js +45 -5
  190. package/src/runtime/agent-core.js +17 -0
  191. package/src/assets/web-panel/assets/ChatBubbleRenderer-Cf3LLgDc.js +0 -1
  192. package/src/assets/web-panel/assets/Logs-ZtS98jCm.js +0 -2
  193. package/src/assets/web-panel/assets/MarkdownRenderer-CTsYo9NN.js +0 -1
  194. package/src/assets/web-panel/assets/PdhVaultBrowser-DqaO6wgH.js +0 -7
  195. package/src/assets/web-panel/assets/SpeechSettings-D4FA9KYI.js +0 -1
  196. package/src/assets/web-panel/assets/devWarning-D60SbiD-.js +0 -1
  197. package/src/assets/web-panel/assets/index-C0yR4_7h.js +0 -1
  198. package/src/assets/web-panel/assets/index-D4xuvo03.js +0 -1
@@ -7,6 +7,7 @@ import {
7
7
  PM_EXPLORATION_GRADE_REQUEST_SCHEMA_V1,
8
8
  PM_EXPLORATION_MERGE_REQUEST_SCHEMA,
9
9
  PM_EXPLORATION_RUN_REQUEST_SCHEMA,
10
+ PM_EXPLORATION_TASK_SELECTION_REQUEST_SCHEMA,
10
11
  verifyPmExplorationExecutionManifest,
11
12
  } from "./pm-exploration-execution-host.js";
12
13
  import {
@@ -24,6 +25,10 @@ export const PM_EXPLORATION_EVIDENCE_BUNDLE_SCHEMA =
24
25
  "chainlesschain.pm-exploration-evidence-bundle/v1";
25
26
  export const PM_EXPLORATION_PROVIDER_EVIDENCE_BUNDLE_SCHEMA =
26
27
  "chainlesschain.pm-exploration-evidence-bundle/v2";
28
+ export const PM_EXPLORATION_CURRICULUM_EVIDENCE_BUNDLE_SCHEMA =
29
+ "chainlesschain.pm-exploration-evidence-bundle/v3";
30
+ export const PM_EXPLORATION_CURRICULUM_PROVIDER_EVIDENCE_BUNDLE_SCHEMA =
31
+ "chainlesschain.pm-exploration-evidence-bundle/v4";
27
32
 
28
33
  const DIGEST = /^sha256:[a-f0-9]{64}$/u;
29
34
 
@@ -106,22 +111,32 @@ function array(value, label, maximum) {
106
111
  return value;
107
112
  }
108
113
 
109
- function metricsEqual(checkpoint, execution, grader) {
114
+ function metricsEqual(checkpoint, execution, grader, curriculum = null) {
110
115
  return ["tokens", "toolCalls", "wallClockMs"].every(
111
116
  (key) =>
112
117
  checkpoint.metrics[key] ===
113
- execution.payload.metrics[key] + grader.payload.metrics[key],
118
+ execution.payload.metrics[key] +
119
+ grader.payload.metrics[key] +
120
+ (curriculum?.payload.metrics[key] ?? 0),
114
121
  );
115
122
  }
116
123
 
117
124
  function authoritySet(value, manifest) {
125
+ const hasCurriculum = Object.hasOwn(manifest, "curriculum");
118
126
  exact(
119
127
  value,
120
- ["execution", "grader", "merge", "evaluator"],
128
+ [
129
+ ...(hasCurriculum ? ["curriculum"] : []),
130
+ "execution",
131
+ "grader",
132
+ "merge",
133
+ "evaluator",
134
+ ],
121
135
  "PM exploration evidence authorities",
122
136
  );
123
137
  const result = {};
124
138
  for (const [key, expected] of [
139
+ ...(hasCurriculum ? [["curriculum", manifest.curriculum]] : []),
125
140
  ["execution", manifest.runner],
126
141
  ["grader", manifest.grader],
127
142
  ["merge", manifest.merger],
@@ -135,6 +150,71 @@ function authoritySet(value, manifest) {
135
150
  return Object.freeze(result);
136
151
  }
137
152
 
153
+ function validateCurriculumReceipts({
154
+ inputs,
155
+ authority,
156
+ manifest,
157
+ plan,
158
+ snapshot,
159
+ }) {
160
+ const receipts = receiptMap(inputs, plan.maxRounds, "curriculum receipts");
161
+ const byRound = new Map();
162
+ for (const input of receipts.values()) {
163
+ const receipt = verifyPmExplorationReceipt(authority, input, {
164
+ planDigest: plan.planDigest,
165
+ environmentDigest: plan.environmentDigest,
166
+ executionManifestDigest: manifest.manifestDigest,
167
+ status: "succeeded",
168
+ });
169
+ if (byRound.has(receipt.payload.roundId))
170
+ throw new Error("PM evidence contains duplicate Curriculum rounds");
171
+ byRound.set(receipt.payload.roundId, receipt);
172
+ }
173
+ const ordered = [];
174
+ let previousStage = null;
175
+ let consecutiveNoGain = 0;
176
+ for (let index = 0; index < snapshot.checkpoints.length; index += 1) {
177
+ const checkpoint = snapshot.checkpoints[index];
178
+ if (checkpoint.stage !== previousStage) consecutiveNoGain = 0;
179
+ const receipt = byRound.get(checkpoint.roundId);
180
+ if (!receipt)
181
+ throw new Error("PM checkpoint is missing its Curriculum receipt");
182
+ const core = {
183
+ schema: PM_EXPLORATION_TASK_SELECTION_REQUEST_SCHEMA,
184
+ planDigest: plan.planDigest,
185
+ suiteDigest: plan.suiteDigest,
186
+ trainingPartitionDigest: plan.trainingPartitionDigest,
187
+ environmentDigest: plan.environmentDigest,
188
+ executionManifestDigest: manifest.manifestDigest,
189
+ selectionId: receipt.payload.selectionId,
190
+ roundId: checkpoint.roundId,
191
+ stage: checkpoint.stage,
192
+ branchId: checkpoint.branchId,
193
+ inputMemoryDigest: checkpoint.inputMemoryDigest,
194
+ candidateTaskIds: plan.trainingTaskIds,
195
+ completedRoundCount: index,
196
+ consecutiveNoGain,
197
+ };
198
+ const verified = verifyPmExplorationReceipt(authority, receipt, {
199
+ requestDigest: hash(PM_EXPLORATION_TASK_SELECTION_REQUEST_SCHEMA, core),
200
+ roundId: checkpoint.roundId,
201
+ stage: checkpoint.stage,
202
+ branchId: checkpoint.branchId,
203
+ inputMemoryDigest: checkpoint.inputMemoryDigest,
204
+ taskId: checkpoint.taskId,
205
+ });
206
+ ordered.push(verified);
207
+ byRound.delete(checkpoint.roundId);
208
+ previousStage = checkpoint.stage;
209
+ consecutiveNoGain = checkpoint.accepted ? 0 : consecutiveNoGain + 1;
210
+ }
211
+ if (byRound.size !== 0)
212
+ throw new Error(
213
+ "PM evidence contains Curriculum receipts outside its checkpoint history",
214
+ );
215
+ return Object.freeze(ordered);
216
+ }
217
+
138
218
  function receiptMap(values, maximum, label) {
139
219
  const entries = array(values, label, maximum);
140
220
  const result = new Map();
@@ -195,6 +275,7 @@ function validateCheckpointReceipts({
195
275
  authorities,
196
276
  executionReceipts,
197
277
  graderReceipts,
278
+ curriculumReceipt = null,
198
279
  manifest,
199
280
  plan,
200
281
  }) {
@@ -234,6 +315,12 @@ function validateCheckpointReceipts({
234
315
  outputMemoryDigest: checkpoint.outputMemoryDigest,
235
316
  },
236
317
  );
318
+ if (
319
+ Object.hasOwn(manifest, "memoryRetrieval") &&
320
+ !Object.hasOwn(execution.payload, "egressEvidenceDigest")
321
+ ) {
322
+ throw new Error("PM governed egress execution lacks signed evidence");
323
+ }
237
324
  const gradeCore = {
238
325
  schema: PM_EXPLORATION_GRADE_REQUEST_SCHEMA,
239
326
  planDigest: plan.planDigest,
@@ -294,7 +381,7 @@ function validateCheckpointReceipts({
294
381
  ),
295
382
  });
296
383
  }
297
- if (!metricsEqual(checkpoint, execution, grader))
384
+ if (!metricsEqual(checkpoint, execution, grader, curriculumReceipt))
298
385
  throw new Error("PM checkpoint metrics differ from its signed receipts");
299
386
  if (
300
387
  execution.payload.status !== "succeeded" &&
@@ -392,12 +479,28 @@ function buildBundle({
392
479
  throw new Error("PM evidence manifest differs from its plan");
393
480
  }
394
481
  const trustedAuthorities = authoritySet(authorities, executionManifest);
482
+ const hasCurriculum = Object.hasOwn(executionManifest, "curriculum");
395
483
  exact(
396
484
  receipts,
397
- ["execution", "grader", "merge", "evaluator"],
485
+ [
486
+ ...(hasCurriculum ? ["curriculum"] : []),
487
+ "execution",
488
+ "grader",
489
+ "merge",
490
+ "evaluator",
491
+ ],
398
492
  "PM exploration evidence receipts",
399
493
  );
400
494
  const normalizedSnapshot = normalizeSnapshot(plan, snapshot);
495
+ const orderedCurriculum = hasCurriculum
496
+ ? validateCurriculumReceipts({
497
+ inputs: receipts.curriculum,
498
+ authority: trustedAuthorities.curriculum,
499
+ manifest: executionManifest,
500
+ plan,
501
+ snapshot: normalizedSnapshot,
502
+ })
503
+ : null;
401
504
  const executionInputs = receiptMap(
402
505
  receipts.execution,
403
506
  plan.maxRounds,
@@ -410,12 +513,19 @@ function buildBundle({
410
513
  );
411
514
  const orderedExecution = [];
412
515
  const orderedGraders = [];
516
+ const curriculumByRound = new Map(
517
+ (orderedCurriculum ?? []).map((receipt) => [
518
+ receipt.payload.roundId,
519
+ receipt,
520
+ ]),
521
+ );
413
522
  for (const checkpoint of normalizedSnapshot.checkpoints) {
414
523
  const verified = validateCheckpointReceipts({
415
524
  checkpoint,
416
525
  authorities: trustedAuthorities,
417
526
  executionReceipts: executionInputs,
418
527
  graderReceipts: graderInputs,
528
+ curriculumReceipt: curriculumByRound.get(checkpoint.roundId) ?? null,
419
529
  manifest: executionManifest,
420
530
  plan,
421
531
  });
@@ -468,8 +578,11 @@ function buildBundle({
468
578
  mergeReceipt,
469
579
  plan,
470
580
  });
471
- const schema =
472
- providerSettlements === null
581
+ const schema = hasCurriculum
582
+ ? providerSettlements === null
583
+ ? PM_EXPLORATION_CURRICULUM_EVIDENCE_BUNDLE_SCHEMA
584
+ : PM_EXPLORATION_CURRICULUM_PROVIDER_EVIDENCE_BUNDLE_SCHEMA
585
+ : providerSettlements === null
473
586
  ? PM_EXPLORATION_EVIDENCE_BUNDLE_SCHEMA
474
587
  : PM_EXPLORATION_PROVIDER_EVIDENCE_BUNDLE_SCHEMA;
475
588
  const core = deepFreeze({
@@ -478,6 +591,7 @@ function buildBundle({
478
591
  environmentDigest: plan.environmentDigest,
479
592
  executionManifestDigest: executionManifest.manifestDigest,
480
593
  snapshotDigest: normalizedSnapshot.snapshotDigest,
594
+ ...(hasCurriculum ? { curriculumReceipts: orderedCurriculum } : {}),
481
595
  executionReceipts: orderedExecution,
482
596
  graderReceipts: orderedGraders,
483
597
  mergeReceipt,
@@ -544,47 +658,37 @@ export function verifyPmExplorationEvidenceBundle({
544
658
  bundle,
545
659
  } = {}) {
546
660
  const providerBound =
547
- bundle?.schema === PM_EXPLORATION_PROVIDER_EVIDENCE_BUNDLE_SCHEMA;
548
- exact(
549
- bundle,
550
- providerBound
551
- ? [
552
- "schema",
553
- "planDigest",
554
- "environmentDigest",
555
- "executionManifestDigest",
556
- "snapshotDigest",
557
- "executionReceipts",
558
- "graderReceipts",
559
- "mergeReceipt",
560
- "evaluatorReceipt",
561
- "providerSettlements",
562
- "evidenceDigest",
563
- "authenticated",
564
- "snapshotAuthenticated",
565
- "qualifiesForPromotion",
566
- ]
567
- : [
568
- "schema",
569
- "planDigest",
570
- "environmentDigest",
571
- "executionManifestDigest",
572
- "snapshotDigest",
573
- "executionReceipts",
574
- "graderReceipts",
575
- "mergeReceipt",
576
- "evaluatorReceipt",
577
- "evidenceDigest",
578
- "authenticated",
579
- "snapshotAuthenticated",
580
- "qualifiesForPromotion",
581
- ],
582
- "PM exploration evidence bundle",
583
- );
661
+ bundle?.schema === PM_EXPLORATION_PROVIDER_EVIDENCE_BUNDLE_SCHEMA ||
662
+ bundle?.schema ===
663
+ PM_EXPLORATION_CURRICULUM_PROVIDER_EVIDENCE_BUNDLE_SCHEMA;
664
+ const curriculumBound =
665
+ bundle?.schema === PM_EXPLORATION_CURRICULUM_EVIDENCE_BUNDLE_SCHEMA ||
666
+ bundle?.schema ===
667
+ PM_EXPLORATION_CURRICULUM_PROVIDER_EVIDENCE_BUNDLE_SCHEMA;
668
+ const fields = [
669
+ "schema",
670
+ "planDigest",
671
+ "environmentDigest",
672
+ "executionManifestDigest",
673
+ "snapshotDigest",
674
+ ...(curriculumBound ? ["curriculumReceipts"] : []),
675
+ "executionReceipts",
676
+ "graderReceipts",
677
+ "mergeReceipt",
678
+ "evaluatorReceipt",
679
+ ...(providerBound ? ["providerSettlements"] : []),
680
+ "evidenceDigest",
681
+ "authenticated",
682
+ "snapshotAuthenticated",
683
+ "qualifiesForPromotion",
684
+ ];
685
+ exact(bundle, fields, "PM exploration evidence bundle");
584
686
  if (
585
687
  ![
586
688
  PM_EXPLORATION_EVIDENCE_BUNDLE_SCHEMA,
587
689
  PM_EXPLORATION_PROVIDER_EVIDENCE_BUNDLE_SCHEMA,
690
+ PM_EXPLORATION_CURRICULUM_EVIDENCE_BUNDLE_SCHEMA,
691
+ PM_EXPLORATION_CURRICULUM_PROVIDER_EVIDENCE_BUNDLE_SCHEMA,
588
692
  ].includes(bundle.schema) ||
589
693
  bundle.authenticated !== true ||
590
694
  bundle.snapshotAuthenticated !== true ||
@@ -598,6 +702,7 @@ export function verifyPmExplorationEvidenceBundle({
598
702
  snapshot,
599
703
  authorities,
600
704
  receipts: {
705
+ ...(curriculumBound ? { curriculum: bundle.curriculumReceipts } : {}),
601
706
  execution: bundle.executionReceipts,
602
707
  grader: bundle.graderReceipts,
603
708
  merge: bundle.mergeReceipt,