chainlesschain 0.166.90 → 0.166.92

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 (222) hide show
  1. package/README.md +15 -13
  2. package/package.json +4 -4
  3. package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
  4. package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
  5. package/src/assets/web-panel/assets/{AIOps-CZzXRe1-.js → AIOps-C74YzqwJ.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-_AZfbW1Q.js → ActionButton-TFef1hOE.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-CzaUx_wv.js → Analytics-CYsWpkkU.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-xHEeeD-m.js → AppLayout-CFf9kjwu.js} +4 -4
  9. package/src/assets/web-panel/assets/{Artifacts-DmTbtudE.js → Artifacts-TQqa94YO.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-Cn4ng4fo.js → Audit-B79ayqfS.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-DLUY1VD2.js → BackgroundAgents-pjkHfLP9.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-B2v--wB6.js → Backup-CE6A-t_r.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-Bgih7yAv.js → BaseInput-CwcgWMBY.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-1MiiA3yA.js → Chat-BIkDNesY.js} +6 -6
  15. package/src/assets/web-panel/assets/{ChatBubbleRenderer-CPLynmbb.js → ChatBubbleRenderer-DgaokYts.js} +1 -1
  16. package/src/assets/web-panel/assets/{Checkbox-DsyBa_NO.js → Checkbox-MbypIy5V.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-B7WCFx9H.js → Codegen-DiFHWDnt.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-D2x4GBGm.js → Col-BNMlYMso.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-Rnwg9nea.js → Community-B3HVyHOX.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-BPczlrRh.js → Compact-C7hlAubb.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-Br1L_wGU.js → Compliance-PaXZu6sE.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-DlsWB_oS.js → Cowork-BGiojbm-.js} +2 -2
  23. package/src/assets/web-panel/assets/{Cron-BWo_KGpG.js → Cron-Bmr-1QAx.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-Cug7N8ge.js → Crosschain-BwUvWCVd.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-CMbyOZJN.js → DID-k_4QZocW.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-C4dl_UaE.js → Dashboard-_ieRo2C5.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-CBrC7M-9.js → Dropdown-DYHh6T27.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-DTq7tU4b.js → EmailListRenderer-BNlQcWQX.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-DWP3csxS.js → EvolutionSettings-DIkZ6U2D.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DZl7zuv_.js → FamilyGuardDashboard-Dq7qSr0P.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-W-GSlVK5.js → Federation-C64e3Cbx.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-DMB7xYFV.js → FormItemContext-D-GE2vUa.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-DNv8GEoq.js → GenericCardRenderer-DO3B2gis.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-BZ0Bbzw6.js → Git-0ETirIQH.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-BNEdcOM5.js → Governance-C9fnRygX.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-C8249gIz.js → Inference-CLJ9RTsK.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-ngzebU3e.js → KnowledgeGraph-D3C_GxrN.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-CP15th-f.js → Logs-C5ctGbkN.js} +2 -2
  39. package/src/assets/web-panel/assets/MarkdownRenderer-Ce-eWK3j.js +1 -0
  40. package/src/assets/web-panel/assets/{Marketplace-CaH59OsY.js → Marketplace-GF_t6hJ_.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-C07vnJev.js → McpTools-BGsGzgQs.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-CqAOkVAS.js → Memory-CcrY2A0j.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-qp7mZimq.js → MobileBridge-Bi4T0RlS.js} +1 -1
  44. package/src/assets/web-panel/assets/{MobileProjects-DKhbqvTw.js → MobileProjects-DvjEGyvf.js} +1 -1
  45. package/src/assets/web-panel/assets/{Mtc-CRYCnWXv.js → Mtc-DL77Vf-k.js} +4 -4
  46. package/src/assets/web-panel/assets/{MtcAudit-Z08IrKws.js → MtcAudit-CDy_Uswb.js} +4 -4
  47. package/src/assets/web-panel/assets/{Multisig-BWdatUnH.js → Multisig-DL0BAO_c.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-BKWiCZ_m.js → NLProgramming-B-woh5IR.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-Bgpzk3sm.js → Notes-CEFVCxk7.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-DvtZEktR.js → NotificationSettings-BqPPMuAP.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer-CBcy0szc.js → OrderTableRenderer-GUKQ1xwp.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-DRRL6vW1.js → Organization-B1gX8jlr.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-COmfB8Ns.js → Overflow-CeMxuUZy.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-BqMq_DSa.js → P2P-B5aIRWwJ.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-BX7iNvle.js → PdhVaultBrowser-6rYgejd4.js} +4 -4
  56. package/src/assets/web-panel/assets/{Permissions-DzYkjmV_.js → Permissions-CqCp2SIl.js} +4 -4
  57. package/src/assets/web-panel/assets/{PersonalDataHub-BBTcxBbN.js → PersonalDataHub-BsA7DJWW.js} +4 -4
  58. package/src/assets/web-panel/assets/{Pipeline-eRkYFSbO.js → Pipeline-CiW6HeZh.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-Ch7IFKBh.js → Privacy-DckUOLYq.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-Ci8EcBYg.js → ProjectInit-CZppOOYR.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-B4lYHFbI.js → ProjectSettings-B9QPzhDU.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-zkE5cCo_.js → Projects-BErjjGha.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-BKDVD3_e.js → Providers-DehU6Qiz.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-BromrHlf.js → QrScannerModal-E1SUvv1m.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-CCgoY1gR.js → QuickAsk-COWFxyH3.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-DCPZvpq7.js → Recommend-D26pWKxX.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-DPnFP8HU.js → RemoteSession-DCOIaId3.js} +3 -3
  68. package/src/assets/web-panel/assets/{Reputation-l6r8ytAs.js → Reputation-DT_AHGAR.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-ke9Mk1cx.js → Row-B50S-1nl.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-DQOEzUEn.js → RssFeed-BaBnHg3Q.js} +2 -2
  71. package/src/assets/web-panel/assets/{Search-BqgA0aUz.js → Search-BVdnLuuS.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-FeGD_jqV.js → Security-BnacH74J.js} +3 -3
  73. package/src/assets/web-panel/assets/{Services-4kiYYAjZ.js → Services-CxM08Zch.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-BbU8Xegs.js → Skeleton-DE7CIc1N.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-Dl2bUMUL.js → Skills-CGI0SJmf.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-xRGALeaZ.js → Sla-DpEzPcqc.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-DZfd4RDm.js → SpeechSettings-CTmnmMHn.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-BRtCV9Ga.js → SyncSettings-Dxgrd9hd.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-DVRQklfG.js → Tasks-CW4slS0A.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-BbhE5jt5.js → Templates-DxvGWDgB.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-qXPDNKbK.js → Tenant-_Q0o2tNK.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-CV48Ks7E.js → Terminal-BTZn8pow.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-BLGfJIDr.js → TimelineRenderer-CauL0KFe.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-7G9H6Hrt.js → Tokens-CDoM2qeT.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger--F64N11F.js → Trigger-B-QYGEU7.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-Cq1r-D_y.js → Trust-BD6XJHT-.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-Dqyu4RVh.js → UkeySign-x4TFwCy0.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-DuFmWH_B.js → VideoEditing-t3imBK_0.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-C3mg7EWP.js → Wallet-BCfkWwNC.js} +4 -4
  90. package/src/assets/web-panel/assets/{WebAuthn-CDK-Aj_X.js → WebAuthn-WH314Mdm.js} +5 -5
  91. package/src/assets/web-panel/assets/{WorkflowEditor--K7K-T1F.js → WorkflowEditor-jUlcjrUg.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-BQDcS6VP.js → chat-Dg3VASTL.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-BKxJL2-T.js → colors-BNvmBRKE.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-CFjQAMbY.js → compact-item-BGOfoqf4.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-DbgCsdQd.js → createContext-BNQeqKAs.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-B7_ypN1G.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-BhkaOBNv.js → hasIn-Bg3AjCrq.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DvWWFJHJ.js → index--I3UF5t1.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-DJ2OiRvh.js → index-2D04Zltx.js} +3 -3
  100. package/src/assets/web-panel/assets/{index-BuWPqSGT.js → index-60AnjUTX.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-D2Zb-Kd1.js → index-7QJUWemf.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-C0DzhUOX.js → index-B--0QM0S.js} +1 -1
  103. package/src/assets/web-panel/assets/index-B-jSKJK6.js +1 -0
  104. package/src/assets/web-panel/assets/{index-COGy6wXn.js → index-B0mgngoB.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-bMX8BBLE.js → index-BBCMulQ-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-CE506mgj.js → index-BSNhW95G.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CoOu7sdP.js → index-B_JmInC0.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-B4LlAJqc.js → index-BaPvEvB4.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CRtUDiXx.js → index-Bkz1tgFR.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Du_SxxBY.js → index-BmTacaQV.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CSUDlsIr.js → index-CCFZN66A.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-3uR0ThJO.js → index-COol3xfA.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-DmYK9Tqt.js → index-CY8cRKHR.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-T9ka3Xj3.js → index-Cbp-wp-U.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-CB4oHynY.js → index-Co_LnCWD.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DEwHywz9.js → index-Cx2EXRfr.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CUs7XpUO.js → index-D-mSvCQK.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BRqlCTrz.js → index-D072oLjp.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-sKfUUldY.js → index-D6UqK83L.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-Dhfa_BIl.js → index-DF_FKSVH.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-D9sVcw6v.js → index-DLwEXRrb.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-3djsY75k.js → index-DO0VlNtc.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-BfGGsAU7.js → index-DS04wRll.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-Dn2QSsuI.js → index-DYn5DnDk.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-D-Yh3-1z.js → index-D_O2ZjPk.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-BNjYPJNU.js → index-DcCnO0RU.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-DP1NrM9J.js → index-Dkp-okWa.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DdcrixaQ.js → index-OUFoxUgH.js} +1 -1
  129. package/src/assets/web-panel/assets/index-P4FXZJqI.js +1 -0
  130. package/src/assets/web-panel/assets/{index-7BY44UEv.js → index-Wo0f2iqb.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DjmVlpap.js → index-ZD5Kd8tx.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-3YutaXnp.js → index-fOwii3LP.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-aPdVzagA.js → index-hG7jXGEW.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-De7daEnc.js → index-pVdQieac.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-CJoXgJ2N.js → index-uH2LnAs_.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-DFt48Z-x.js → index-xzaUx19r.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-wrqabmui.js → initDefaultProps-B8PN9AxJ.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-BoyB3ilP.js → motion-BHivfw5Q.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-Cq31cSFE.js → move-B0QU5nDd.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-BkxNt-8H.js → mtc-parser-DRwRM3PE.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-DofGni53.js → omit-SHt2rV2p.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-BnluLL16.js → pickAttrs-CcmDlEb2.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-C-yegJSP.js → placementArrow-DYatmXDS.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-CD3ziNhu.js → responsiveObserve-B7qrsXq5.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-ToZO4gQ1.js → slide-BRGhlOWd.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-DFVmDmVl.js → statusUtils-CT-7NXsQ.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-De0Y8g1O.js → styleChecker-rZdw_Yyp.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-wBKIYFKX.js → useFlexGapSupport-D8YNIP4P.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-CP9nmUMJ.js → useFs-B8pt0Gu-.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-vFGrVDyp.js → usePersonalDataHub-VMmYM1tt.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-BcBIjvjH.js → vnode-UNDuoPoq.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-DnXDAQxA.js → zoom-dN-u667S.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/command-help-index.json +1 -1
  155. package/src/commands/agent-process-ownership.js +121 -0
  156. package/src/commands/agent.js +2 -0
  157. package/src/commands/hub.js +86 -9
  158. package/src/data/changelog.json +54 -2
  159. package/src/lib/audit-logger.js +46 -20
  160. package/src/lib/checkpoint-restore-saga.js +11 -1
  161. package/src/lib/eval/verify01-host-evidence.js +36 -3
  162. package/src/lib/evolution/evolution-artifact-ports.js +26 -0
  163. package/src/lib/evolution/evolution-eval-cohort-enrollment.js +713 -47
  164. package/src/lib/evolution/evolution-eval-gate.js +146 -0
  165. package/src/lib/evolution/evolution-eval-launch-admission.js +168 -90
  166. package/src/lib/evolution/evolution-eval-ledger-capture.js +50 -0
  167. package/src/lib/evolution/evolution-eval-readonly-audit.js +106 -0
  168. package/src/lib/evolution/evolution-ledger-file-backend.js +20 -0
  169. package/src/lib/evolution/evolution-ledger-ports.js +59 -27
  170. package/src/lib/evolution/evolution-ledger-v2-journal.js +55 -18
  171. package/src/lib/evolution/evolution-workbench-file-resources.js +19 -1
  172. package/src/lib/evolution/rrsi-cohort-registration.js +275 -0
  173. package/src/lib/evolution/rrsi-contracts.js +742 -0
  174. package/src/lib/evolution/rrsi-data.js +196 -0
  175. package/src/lib/evolution/rrsi-evaluation-adapter.js +275 -0
  176. package/src/lib/evolution/rrsi-evaluation-variants.js +267 -0
  177. package/src/lib/evolution/rrsi-group-statistics.js +553 -0
  178. package/src/lib/evolution/rrsi-history-ledger-adapter.js +3261 -0
  179. package/src/lib/evolution/rrsi-native-batch-evidence.js +520 -0
  180. package/src/lib/evolution/rrsi-native-eval-row-collector.js +538 -0
  181. package/src/lib/evolution/rrsi-native-evaluation-batch.js +547 -0
  182. package/src/lib/evolution/rrsi-native-evaluation-plan.js +431 -0
  183. package/src/lib/evolution/rrsi-native-group-statistics-plan.js +121 -0
  184. package/src/lib/evolution/rrsi-native-group-statistics.js +482 -0
  185. package/src/lib/evolution/rrsi-native-quality-receipt-contracts.js +321 -0
  186. package/src/lib/evolution/rrsi-native-quality-receipt.js +256 -0
  187. package/src/lib/evolution/rrsi-native-statistics-protocol.js +330 -0
  188. package/src/lib/evolution/rrsi-parent-binding.js +290 -0
  189. package/src/lib/evolution/rrsi-pm-execution-bridge.js +500 -0
  190. package/src/lib/evolution/rrsi-pm-training-mapping.js +134 -0
  191. package/src/lib/evolution/rrsi-preparation-contracts.js +213 -0
  192. package/src/lib/evolution/rrsi-registry-history-binding.js +193 -0
  193. package/src/lib/evolution/rrsi-registry-store-policy.js +1191 -0
  194. package/src/lib/evolution/rrsi-runtime-composition.js +79 -0
  195. package/src/lib/evolution/rrsi-selector.js +434 -0
  196. package/src/lib/evolution/rrsi-statistics-simulation.js +354 -0
  197. package/src/lib/evolution/skill-candidate-registry.js +216 -29
  198. package/src/lib/evolution/skill-registry-maintenance.js +80 -0
  199. package/src/lib/evolution/skill-registry-writer-control.js +138 -0
  200. package/src/lib/evolution/skill-release-registry.js +399 -169
  201. package/src/lib/formal-quality-eval-runtime.js +2 -14
  202. package/src/lib/goal-store.js +225 -16
  203. package/src/lib/process-execution-broker/index.js +91 -1
  204. package/src/lib/process-execution-broker/platform-sandbox.js +42 -0
  205. package/src/lib/process-execution-broker/windows-native-evaluator-capabilities.js +757 -0
  206. package/src/lib/process-execution-broker/windows-native-evaluator.js +316 -0
  207. package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
  208. package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
  209. package/src/lib/process-execution-broker/windows-sandbox.cs +383 -11
  210. package/src/lib/record-replay/skill-recorder.js +38 -3
  211. package/src/lib/scheduler-kernel/authority-resolver.js +12 -163
  212. package/src/lib/scheduler-kernel/contract.js +27 -414
  213. package/src/lib/scheduler-kernel/runtime.js +21 -823
  214. package/src/lib/scheduler-kernel/service.js +11 -328
  215. package/src/lib/scheduler-kernel/source-locator-path.js +7 -142
  216. package/src/lib/scheduler-kernel/store.js +67 -5931
  217. package/src/lib/secure-fs.js +16 -1314
  218. package/src/lib/with-file-lock.js +122 -20
  219. package/src/assets/web-panel/assets/MarkdownRenderer-CW3B3JDq.js +0 -1
  220. package/src/assets/web-panel/assets/devWarning-DlIv9Mbc.js +0 -1
  221. package/src/assets/web-panel/assets/index-BC972Grv.js +0 -1
  222. package/src/assets/web-panel/assets/index-CVifyQqL.js +0 -1
@@ -0,0 +1,520 @@
1
+ /** Complete native census. Presented claims are distinct from execution proofs. */
2
+ import { isProxy } from "node:util/types";
3
+ import { captureRrsiHistoryLedgerAdapter } from "./rrsi-history-ledger-adapter.js";
4
+ import {
5
+ createEvolutionEvalReadonlyAudit,
6
+ captureEvolutionEvalReadonlyAudit,
7
+ } from "./evolution-eval-readonly-audit.js";
8
+ import {
9
+ buildRrsiEvalCampaignPlan,
10
+ buildRrsiNativeStatisticsRegistrationBindings,
11
+ } from "./rrsi-cohort-registration.js";
12
+ import {
13
+ captureRrsiNativeEvalCohortEvidence,
14
+ RRSI_NATIVE_ROW_CLAIM_FIELDS,
15
+ } from "./rrsi-native-eval-row-collector.js";
16
+ import { assertEvolutionEvalReceiptChunkSetFreshness } from "./evolution-eval-gate.js";
17
+ import {
18
+ snapshotRrsiData,
19
+ rrsiCanonical,
20
+ rrsiDigest,
21
+ rrsiEnvelope,
22
+ rrsiFail,
23
+ } from "./rrsi-data.js";
24
+
25
+ export const RRSI_NATIVE_BATCH_EVIDENCE_SCHEMA =
26
+ "chainlesschain.rrsi-native-batch-evidence/v1";
27
+ export const RRSI_NATIVE_BATCH_EVIDENCE_V2_SCHEMA =
28
+ "chainlesschain.rrsi-native-batch-evidence/v2";
29
+ const BATCHES = new WeakMap();
30
+ const same = (a, b, label) => {
31
+ if (rrsiCanonical(a) !== rrsiCanonical(b)) rrsiFail(`${label} differs`);
32
+ };
33
+
34
+ function ownFields(value) {
35
+ const keys = ["historyAdapter", "batchDigest", "cohorts"];
36
+ if (
37
+ !value ||
38
+ isProxy(value) ||
39
+ Object.getPrototypeOf(value) !== Object.prototype ||
40
+ Reflect.ownKeys(value).length !== keys.length
41
+ )
42
+ rrsiFail("native census composition requires plain own fields");
43
+ return Object.fromEntries(
44
+ keys.map((key) => {
45
+ const field = Object.getOwnPropertyDescriptor(value, key);
46
+ if (!field?.enumerable || !("value" in field))
47
+ rrsiFail("native census cannot use accessors");
48
+ return [key, field.value];
49
+ }),
50
+ );
51
+ }
52
+
53
+ function captureCohorts(value, maximum) {
54
+ if (
55
+ !value ||
56
+ isProxy(value) ||
57
+ !Array.isArray(value) ||
58
+ Object.getPrototypeOf(value) !== Array.prototype ||
59
+ value.length > maximum ||
60
+ Reflect.ownKeys(value).length !== value.length + 1
61
+ )
62
+ rrsiFail("native census requires a bounded dense cohort list");
63
+ return Array.from({ length: value.length }, (_, index) => {
64
+ const field = Object.getOwnPropertyDescriptor(value, String(index));
65
+ if (!field?.enumerable || !("value" in field))
66
+ rrsiFail("native census cohort list cannot use accessors");
67
+ return captureRrsiNativeEvalCohortEvidence(field.value);
68
+ });
69
+ }
70
+
71
+ function claim(value, used, label) {
72
+ if (value === null) return;
73
+ if (used.has(value))
74
+ rrsiFail(`native batch repeats a presented ${label} claim`);
75
+ used.add(value);
76
+ }
77
+
78
+ function checkBlock(
79
+ block,
80
+ child,
81
+ reservation,
82
+ batch,
83
+ root,
84
+ statisticsRegistration,
85
+ ) {
86
+ same(
87
+ block.statisticsRegistration ?? null,
88
+ statisticsRegistration,
89
+ "native child statistics registration",
90
+ );
91
+ for (const field of [
92
+ "childId",
93
+ "cohortId",
94
+ "slotId",
95
+ "role",
96
+ "variant",
97
+ "pairId",
98
+ "nativePlanDigest",
99
+ "evaluationContextDigest",
100
+ "variantMappingDigest",
101
+ "recipeDigest",
102
+ ])
103
+ same(block[field], child[field], `native child ${field}`);
104
+ same(block.batchDigest, batch.batchDigest, "native child batch");
105
+ same(
106
+ block.campaignRootDigest,
107
+ root.campaignRootDigest,
108
+ "native child campaign root",
109
+ );
110
+ same(
111
+ block.nativeEvaluationPlanDigest,
112
+ batch.nativeEvaluationPlanDigest,
113
+ "native child graph",
114
+ );
115
+ same(
116
+ block.runtimeId,
117
+ child.expectedContext.runtimeId,
118
+ "native child runtime",
119
+ );
120
+ same(
121
+ block.targetEnvironmentRef,
122
+ child.expectedContext.targetEnvironmentRef,
123
+ "native child target",
124
+ );
125
+ same(block.versions, batch.versions, "native child versions");
126
+ same(
127
+ block.lifecycleDigests,
128
+ batch.lifecycleDigests,
129
+ "native child lifecycles",
130
+ );
131
+ same(
132
+ block.reservationDigestsByArm,
133
+ reservation.bindings.armReservationDigests,
134
+ "native child reservations",
135
+ );
136
+ same(
137
+ block.plannedObservationsPerArmByPartition,
138
+ child.plannedObservationsPerArmByPartition,
139
+ "native child denominator",
140
+ );
141
+ }
142
+
143
+ function checkFreshness(groups) {
144
+ return Object.freeze(
145
+ [...groups].map(([verifier, group]) =>
146
+ Object.freeze({
147
+ cohortIds: Object.freeze([...group.cohortIds]),
148
+ ...assertEvolutionEvalReceiptChunkSetFreshness(verifier, group.windows),
149
+ }),
150
+ ),
151
+ );
152
+ }
153
+
154
+ /** Missing cohorts remain visible with their whole authoritative denominator. */
155
+ export async function collectRrsiNativeBatchEvidence(input) {
156
+ const options = ownFields(input);
157
+ const history = captureRrsiHistoryLedgerAdapter(options.historyAdapter);
158
+ rrsiDigest(options.batchDigest, "native census batch digest");
159
+ const ledgerAudit = createEvolutionEvalReadonlyAudit(history.ledger);
160
+ const shared = captureEvolutionEvalReadonlyAudit(ledgerAudit, history.ledger);
161
+ const before = shared.identity;
162
+ const rootResolution = history.resolveCampaignRoot();
163
+ const root = buildRrsiEvalCampaignPlan(rootResolution);
164
+ const resolution = history.resolveNativeBatch({
165
+ batchDigest: options.batchDigest,
166
+ });
167
+ const { batch, campaign } = resolution;
168
+ const statisticsRegistration = resolution.statisticsRegistration
169
+ ? buildRrsiNativeStatisticsRegistrationBindings(
170
+ resolution.statisticsRegistration,
171
+ resolution.reservationRecord,
172
+ )
173
+ : null;
174
+ const cohortIds = [
175
+ ...new Set(batch.children.map((child) => child.cohortId)),
176
+ ].sort();
177
+ const captures = captureCohorts(options.cohorts, cohortIds.length);
178
+ const presented = new Map();
179
+ for (const captured of captures) {
180
+ const evidence = captured.evidence;
181
+ same(
182
+ evidence.statisticsRegistration ?? null,
183
+ statisticsRegistration,
184
+ "cohort statistics registration",
185
+ );
186
+ if (
187
+ !cohortIds.includes(evidence.cohortId) ||
188
+ presented.has(evidence.cohortId)
189
+ )
190
+ rrsiFail("native census contains a foreign or repeated cohort");
191
+ same(evidence.batchDigest, batch.batchDigest, "cohort batch");
192
+ same(evidence.campaignRootDigest, root.campaignRootDigest, "cohort root");
193
+ same(
194
+ evidence.nativeEvaluationPlanDigest,
195
+ batch.nativeEvaluationPlanDigest,
196
+ "cohort native graph",
197
+ );
198
+ same(evidence.allCohortIds, cohortIds, "cohort complete sibling inventory");
199
+ const expected = batch.children
200
+ .filter((child) => child.cohortId === evidence.cohortId)
201
+ .sort((a, b) => (a.slotId < b.slotId ? -1 : a.slotId > b.slotId ? 1 : 0));
202
+ same(
203
+ evidence.slots.map((slot) => [slot.childId, slot.slotId]),
204
+ expected.map((child) => [child.childId, child.slotId]),
205
+ "cohort child inventory",
206
+ );
207
+ presented.set(evidence.cohortId, captured);
208
+ }
209
+ // All caller graphs and capabilities have been captured before the first await.
210
+ const sessions = new Map();
211
+ for (const captured of captures) {
212
+ if (!sessions.has(captured.auditKey))
213
+ sessions.set(
214
+ captured.auditKey,
215
+ captured.createReadonlyAudit(ledgerAudit),
216
+ );
217
+ await captured.assertCurrentInventory(
218
+ options.historyAdapter,
219
+ sessions.get(captured.auditKey),
220
+ );
221
+ }
222
+ const claims = Object.fromEntries(
223
+ RRSI_NATIVE_ROW_CLAIM_FIELDS.map((field) => [field, new Set()]),
224
+ );
225
+ const runIds = new Set(),
226
+ runNonces = new Set(),
227
+ receiptDigests = new Set();
228
+ const blocks = new Map(),
229
+ denominators = new Map(),
230
+ clockGroups = new Map();
231
+ const sources = new Map(
232
+ campaign.dataset.tasks.map((task) => [task.id, task]),
233
+ );
234
+ const reservations = new Map(
235
+ resolution.children.map((child) => [child.bindings.childId, child]),
236
+ );
237
+ const childIndex = [],
238
+ vetoes = [];
239
+ for (const captured of captures)
240
+ if (captured.validityWindows.length) {
241
+ let group = clockGroups.get(captured.receiptVerifier);
242
+ if (!group)
243
+ clockGroups.set(
244
+ captured.receiptVerifier,
245
+ (group = { cohortIds: [], windows: [] }),
246
+ );
247
+ group.cohortIds.push(captured.evidence.cohortId);
248
+ group.windows.push(captured.validityWindows);
249
+ }
250
+ for (const child of batch.children) {
251
+ const captured = presented.get(child.cohortId);
252
+ const block = captured ? captured.childEvidence(child.slotId) : null;
253
+ if (block) {
254
+ checkBlock(
255
+ block,
256
+ child,
257
+ reservations.get(child.childId),
258
+ batch,
259
+ root,
260
+ statisticsRegistration,
261
+ );
262
+ claim(block.runId, runIds, "runId");
263
+ claim(block.runNonce, runNonces, "runNonce");
264
+ claim(block.finalReceiptDigest, receiptDigests, "final receipt");
265
+ blocks.set(child.childId, block);
266
+ if (
267
+ child.pairId.startsWith("rrsi-vs-") &&
268
+ block.originalNativeGateDecision !== null &&
269
+ block.originalNativeGateDecision !== "accepted"
270
+ )
271
+ vetoes.push(child.childId);
272
+ }
273
+ const observed = new Map(),
274
+ successes = new Map();
275
+ for (const row of block?.rows ?? []) {
276
+ const source = sources.get(row.rrsiTaskId);
277
+ if (
278
+ !source ||
279
+ source.partition !== row.rrsiPartition ||
280
+ !Object.hasOwn(
281
+ child.plannedObservationsPerArmByPartition,
282
+ row.rrsiPartition,
283
+ ) ||
284
+ !Object.hasOwn(child.byArm, row.arm) ||
285
+ !campaign.experiment.seeds.includes(row.seed)
286
+ )
287
+ rrsiFail("native batch row changes the frozen task, seed or arm scope");
288
+ for (const field of RRSI_NATIVE_ROW_CLAIM_FIELDS)
289
+ claim(row[field], claims[field], field);
290
+ const key = JSON.stringify([row.arm, row.rrsiPartition]);
291
+ observed.set(key, (observed.get(key) ?? 0) + 1);
292
+ successes.set(key, (successes.get(key) ?? 0) + Number(row.strictPass));
293
+ }
294
+ for (const arm of Object.keys(child.byArm))
295
+ for (const [partition, planned] of Object.entries(
296
+ child.plannedObservationsPerArmByPartition,
297
+ )) {
298
+ const rowKey = JSON.stringify([arm, partition]);
299
+ const count = observed.get(rowKey) ?? 0;
300
+ if (block?.rows !== null && block && count !== planned)
301
+ rrsiFail(
302
+ "native batch signed rows change the complete child denominator",
303
+ );
304
+ const key = JSON.stringify([
305
+ child.role,
306
+ child.variant,
307
+ child.slotId,
308
+ arm,
309
+ partition,
310
+ ]);
311
+ let denominator = denominators.get(key);
312
+ if (!denominator)
313
+ denominators.set(
314
+ key,
315
+ (denominator = {
316
+ role: child.role,
317
+ variant: child.variant,
318
+ slotId: child.slotId,
319
+ runtimeId: child.expectedContext.runtimeId,
320
+ targetEnvironmentRef: child.expectedContext.targetEnvironmentRef,
321
+ arm,
322
+ partition,
323
+ plannedActorObservations: 0,
324
+ observedSignedRows: 0,
325
+ knownStrictPasses: 0,
326
+ missingActorObservations: 0,
327
+ }),
328
+ );
329
+ denominator.plannedActorObservations += planned;
330
+ denominator.observedSignedRows += count;
331
+ denominator.knownStrictPasses += successes.get(rowKey) ?? 0;
332
+ denominator.missingActorObservations += planned - count;
333
+ }
334
+ childIndex.push({
335
+ childId: child.childId,
336
+ cohortId: child.cohortId,
337
+ slotId: child.slotId,
338
+ role: child.role,
339
+ variant: child.variant,
340
+ pairId: child.pairId,
341
+ status: block?.status ?? "cohort-evidence-unavailable",
342
+ rowEvidenceDigest: block?.rowEvidenceDigest ?? null,
343
+ finalReceiptDigest: block?.finalReceiptDigest ?? null,
344
+ originalNativeGateDecision: block?.originalNativeGateDecision ?? null,
345
+ plannedObservationsPerArmByPartition:
346
+ child.plannedObservationsPerArmByPartition,
347
+ });
348
+ }
349
+ const missingCohortIds = cohortIds.filter((id) => !presented.has(id));
350
+ const completeSignedRows = childIndex.every(
351
+ (child) => child.status === "signed-rows",
352
+ );
353
+ const declaredBudgetSettlementComplete = resolution.children.every((child) =>
354
+ child.states.every((arm) => arm.status === "settled"),
355
+ );
356
+ const blockingReasons = [];
357
+ if (missingCohortIds.length) blockingReasons.push("MISSING_COHORT_EVIDENCE");
358
+ if (!completeSignedRows) blockingReasons.push("MISSING_SIGNED_ROWS");
359
+ if (vetoes.length) blockingReasons.push("NATIVE_GATE_VETO");
360
+ if (!declaredBudgetSettlementComplete)
361
+ blockingReasons.push("UNSETTLED_NATIVE_BUDGET");
362
+ if (resolution.budgetOverrun) blockingReasons.push("BUDGET_EXCEEDED");
363
+ blockingReasons.push("STATISTICAL_PROTOCOL_UNVALIDATED");
364
+ for (const captured of captures)
365
+ await captured.assertCurrentInventory(
366
+ options.historyAdapter,
367
+ sessions.get(captured.auditKey),
368
+ );
369
+ same(
370
+ history.resolveCampaignRoot(),
371
+ rootResolution,
372
+ "History root during batch census",
373
+ );
374
+ same(
375
+ history.resolveNativeBatch({ batchDigest: options.batchDigest }),
376
+ resolution,
377
+ "History batch during census",
378
+ );
379
+ const result = rrsiEnvelope(
380
+ statisticsRegistration
381
+ ? RRSI_NATIVE_BATCH_EVIDENCE_V2_SCHEMA
382
+ : RRSI_NATIVE_BATCH_EVIDENCE_SCHEMA,
383
+ "batchEvidenceDigest",
384
+ {
385
+ batchDigest: batch.batchDigest,
386
+ campaignDigest: batch.campaignDigest,
387
+ campaignRootDigest: root.campaignRootDigest,
388
+ nativeEvaluationPlanDigest: batch.nativeEvaluationPlanDigest,
389
+ evaluationMappingDigest: batch.evaluationMappingDigest,
390
+ stage: batch.stage,
391
+ versions: batch.versions,
392
+ lifecycleDigests: batch.lifecycleDigests,
393
+ auditHead: before,
394
+ reservationRecord: resolution.reservationRecord,
395
+ allCohortIds: cohortIds,
396
+ missingCohortIds,
397
+ cohorts: cohortIds.map((id) => ({
398
+ cohortId: id,
399
+ cohortRowsDigest: presented.get(id)?.evidence.cohortRowsDigest ?? null,
400
+ })),
401
+ children: childIndex,
402
+ denominators: [...denominators.values()].sort((a, b) => {
403
+ const left = rrsiCanonical(a),
404
+ right = rrsiCanonical(b);
405
+ return left < right ? -1 : left > right ? 1 : 0;
406
+ }),
407
+ fullTriangleDenominatorRetained: true,
408
+ allCohortInventoriesAuthenticated: missingCohortIds.length === 0,
409
+ completeSignedRows,
410
+ presentedExecutionClaimsUnique: true,
411
+ presentedRunAndReceiptClaimsUnique: true,
412
+ nativeGateVetoChildIds: vetoes,
413
+ declaredBudgetSettlementComplete,
414
+ budgetOverrun: resolution.budgetOverrun,
415
+ receiptValidityDomainCount: clockGroups.size,
416
+ singleTrustedClockInstant: clockGroups.size === 1,
417
+ receiptFreshnessDetailsInLiveCapture: true,
418
+ decision: "HOLD",
419
+ blockingReasons,
420
+ sourceProvenanceVerified: false,
421
+ armLifecycleVerified: false,
422
+ recipeExecutionVerified: false,
423
+ underlyingExecutionReceiptsReverified: false,
424
+ completeLifecycleCostVerified: false,
425
+ statisticalProtocolValidated: false,
426
+ qualityVerdictVerified: false,
427
+ ...(statisticsRegistration
428
+ ? {
429
+ statisticsRegistration,
430
+ preObservationRegistrationVerified: true,
431
+ controlledHistoryRegistrationOrderVerified: true,
432
+ underlyingObservationTimeVerified: false,
433
+ }
434
+ : {}),
435
+ },
436
+ );
437
+ snapshotRrsiData(result);
438
+ shared.assertUnchanged();
439
+ const freshness = checkFreshness(clockGroups);
440
+ BATCHES.set(
441
+ result,
442
+ Object.freeze({
443
+ evidence: result,
444
+ freshness,
445
+ campaign,
446
+ batch,
447
+ statisticsRegistration: resolution.statisticsRegistration ?? null,
448
+ historyAdapter: options.historyAdapter,
449
+ async assertCurrentHistory(historyAdapter) {
450
+ const current = captureRrsiHistoryLedgerAdapter(historyAdapter);
451
+ if (
452
+ current.ledger !== history.ledger ||
453
+ current.artifactPorts !== history.artifactPorts ||
454
+ current.ledgerArtifactResolver !== history.ledgerArtifactResolver
455
+ )
456
+ rrsiFail("native census belongs to another genuine History journal");
457
+ same(
458
+ current.descriptor,
459
+ history.descriptor,
460
+ "native census History descriptor",
461
+ );
462
+ checkFreshness(clockGroups);
463
+ shared.assertUnchanged();
464
+ // A fresh session must reread retained bytes. The original session has
465
+ // immutable snapshot caches and cannot detect later artifact damage.
466
+ const currentAudit = createEvolutionEvalReadonlyAudit(history.ledger);
467
+ const currentShared = captureEvolutionEvalReadonlyAudit(
468
+ currentAudit,
469
+ history.ledger,
470
+ );
471
+ same(
472
+ currentShared.identity,
473
+ before,
474
+ "native census original audit head",
475
+ );
476
+ const currentSessions = new Map();
477
+ for (const captured of captures) {
478
+ if (!currentSessions.has(captured.auditKey))
479
+ currentSessions.set(
480
+ captured.auditKey,
481
+ captured.createReadonlyAudit(currentAudit),
482
+ );
483
+ await captured.assertCurrentInventory(
484
+ historyAdapter,
485
+ currentSessions.get(captured.auditKey),
486
+ );
487
+ }
488
+ same(
489
+ current.resolveCampaignRoot(),
490
+ rootResolution,
491
+ "native census original History root",
492
+ );
493
+ same(
494
+ current.resolveNativeBatch({ batchDigest: batch.batchDigest }),
495
+ resolution,
496
+ "native census original History batch",
497
+ );
498
+ checkFreshness(clockGroups);
499
+ currentShared.assertUnchanged();
500
+ shared.assertUnchanged();
501
+ return result;
502
+ },
503
+ childEvidence(childId) {
504
+ if (!batch.children.some((child) => child.childId === childId))
505
+ rrsiFail("native child is outside the censused batch");
506
+ return blocks.get(childId) ?? null;
507
+ },
508
+ assertCurrentFreshness() {
509
+ return checkFreshness(clockGroups);
510
+ },
511
+ }),
512
+ );
513
+ return result;
514
+ }
515
+
516
+ export function captureRrsiNativeBatchEvidence(value) {
517
+ const captured = BATCHES.get(value);
518
+ if (!captured) rrsiFail("a live branded native batch census is required");
519
+ return captured;
520
+ }