chainlesschain 0.166.91 → 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 (209) hide show
  1. package/README.md +17 -17
  2. package/package.json +3 -3
  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-DgV7xb8F.js → AIOps-C74YzqwJ.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-CgANpkKu.js → ActionButton-TFef1hOE.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-DnvpX7RB.js → Analytics-CYsWpkkU.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-C2bHccBM.js → AppLayout-CFf9kjwu.js} +3 -3
  9. package/src/assets/web-panel/assets/{Artifacts-BIhijC9g.js → Artifacts-TQqa94YO.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-CKRjWGdp.js → Audit-B79ayqfS.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-CblYtgBE.js → BackgroundAgents-pjkHfLP9.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-Cq35b78a.js → Backup-CE6A-t_r.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-DcB7NoRz.js → BaseInput-CwcgWMBY.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-tc3b-s7i.js → Chat-BIkDNesY.js} +6 -6
  15. package/src/assets/web-panel/assets/ChatBubbleRenderer-DgaokYts.js +1 -0
  16. package/src/assets/web-panel/assets/{Checkbox-BLD5bH5u.js → Checkbox-MbypIy5V.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-BLOsoazN.js → Codegen-DiFHWDnt.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-Bdr7JwIx.js → Col-BNMlYMso.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-C84BsWE0.js → Community-B3HVyHOX.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-Dzdwd04z.js → Compact-C7hlAubb.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-CCG-R0EV.js → Compliance-PaXZu6sE.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-BYj72SK0.js → Cowork-BGiojbm-.js} +3 -3
  23. package/src/assets/web-panel/assets/{Cron-B6iKAwOf.js → Cron-Bmr-1QAx.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-BJ-oDC6u.js → Crosschain-BwUvWCVd.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-BnMckGLr.js → DID-k_4QZocW.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-Cyje-gCO.js → Dashboard-_ieRo2C5.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-BpNlenjK.js → Dropdown-DYHh6T27.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-BhonO7Nv.js → EmailListRenderer-BNlQcWQX.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-DVoNU-Id.js → EvolutionSettings-DIkZ6U2D.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-tdn-KC67.js → FamilyGuardDashboard-Dq7qSr0P.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation--EEVrHhz.js → Federation-C64e3Cbx.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-Cy8zr0-4.js → FormItemContext-D-GE2vUa.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-BuUhpgFi.js → GenericCardRenderer-DO3B2gis.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-Ctd3E5Pe.js → Git-0ETirIQH.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-Ce7dV6aU.js → Governance-C9fnRygX.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-CD1vExIH.js → Inference-CLJ9RTsK.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-Dn64OdQ7.js → KnowledgeGraph-D3C_GxrN.js} +1 -1
  38. package/src/assets/web-panel/assets/{Logs-PmElVRrT.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-OW4jTXwx.js → Marketplace-GF_t6hJ_.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-BEq2Ib4x.js → McpTools-BGsGzgQs.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-Can_P2oK.js → Memory-CcrY2A0j.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-DJ8R-dn3.js → MobileBridge-Bi4T0RlS.js} +1 -1
  44. package/src/assets/web-panel/assets/{MobileProjects-B7kV9GOt.js → MobileProjects-DvjEGyvf.js} +1 -1
  45. package/src/assets/web-panel/assets/{Mtc-BfxamolS.js → Mtc-DL77Vf-k.js} +2 -2
  46. package/src/assets/web-panel/assets/{MtcAudit-DHtuv7av.js → MtcAudit-CDy_Uswb.js} +2 -2
  47. package/src/assets/web-panel/assets/{Multisig-DLkLpvxc.js → Multisig-DL0BAO_c.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-u4XtJTIt.js → NLProgramming-B-woh5IR.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-BwuuPJLS.js → Notes-CEFVCxk7.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-HEeu-E9v.js → NotificationSettings-BqPPMuAP.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer-BtvN-Qwh.js → OrderTableRenderer-GUKQ1xwp.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-Yh-czs3b.js → Organization-B1gX8jlr.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-DmE8mYVM.js → Overflow-CeMxuUZy.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-CWVck8WN.js → P2P-B5aIRWwJ.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-DgFqekod.js → PdhVaultBrowser-6rYgejd4.js} +3 -3
  56. package/src/assets/web-panel/assets/{Permissions-BtJBVOHV.js → Permissions-CqCp2SIl.js} +3 -3
  57. package/src/assets/web-panel/assets/{PersonalDataHub-6VBObXzd.js → PersonalDataHub-BsA7DJWW.js} +3 -3
  58. package/src/assets/web-panel/assets/{Pipeline-D222FmqY.js → Pipeline-CiW6HeZh.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-Bi9FMikp.js → Privacy-DckUOLYq.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-Bo52H47H.js → ProjectInit-CZppOOYR.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-BPkesfOc.js → ProjectSettings-B9QPzhDU.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-GynohSFX.js → Projects-BErjjGha.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-DVdMg04n.js → Providers-DehU6Qiz.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-DqJCb595.js → QrScannerModal-E1SUvv1m.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-J7loQbXi.js → QuickAsk-COWFxyH3.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-BI5aURVc.js → Recommend-D26pWKxX.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-BN2sqGvz.js → RemoteSession-DCOIaId3.js} +2 -2
  68. package/src/assets/web-panel/assets/{Reputation-BGOND-Fi.js → Reputation-DT_AHGAR.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-77dfwaUk.js → Row-B50S-1nl.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-FtBAxS3g.js → RssFeed-BaBnHg3Q.js} +2 -2
  71. package/src/assets/web-panel/assets/{Search-BaYVLFb7.js → Search-BVdnLuuS.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-LE3Vv6ab.js → Security-BnacH74J.js} +3 -3
  73. package/src/assets/web-panel/assets/{Services-C5pP-Whz.js → Services-CxM08Zch.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-CLqKUVsF.js → Skeleton-DE7CIc1N.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-BPjN0SX5.js → Skills-CGI0SJmf.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-14jD70kg.js → Sla-DpEzPcqc.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-Dr9ij42W.js → SpeechSettings-CTmnmMHn.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-BzLHP7B8.js → SyncSettings-Dxgrd9hd.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-YqV9b0rV.js → Tasks-CW4slS0A.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-CxxAE4PK.js → Templates-DxvGWDgB.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-CRb3PcKJ.js → Tenant-_Q0o2tNK.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-CTzPpBaP.js → Terminal-BTZn8pow.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-DjFUj_hy.js → TimelineRenderer-CauL0KFe.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-Bbb8tPvx.js → Tokens-CDoM2qeT.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-CSeWGM0W.js → Trigger-B-QYGEU7.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-JgESMBo3.js → Trust-BD6XJHT-.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-CiObLk0T.js → UkeySign-x4TFwCy0.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-CFEZaQ2x.js → VideoEditing-t3imBK_0.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-DR8ZGDNn.js → Wallet-BCfkWwNC.js} +4 -4
  90. package/src/assets/web-panel/assets/{WebAuthn-DxZukvu7.js → WebAuthn-WH314Mdm.js} +4 -4
  91. package/src/assets/web-panel/assets/{WorkflowEditor-CKgSZQwn.js → WorkflowEditor-jUlcjrUg.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-CTxEQE66.js → chat-Dg3VASTL.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-CAjKMUu3.js → colors-BNvmBRKE.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-BXuz49at.js → compact-item-BGOfoqf4.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-CFN_Hwr9.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-BwoSBSfP.js → hasIn-Bg3AjCrq.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-u9_DM3ZC.js → index--I3UF5t1.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-IahILygB.js → index-2D04Zltx.js} +3 -3
  100. package/src/assets/web-panel/assets/{index-Bqv_Cray.js → index-60AnjUTX.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CSmFby3Q.js → index-7QJUWemf.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-DTX9CJPx.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-C8er4W9u.js → index-B0mgngoB.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DViK2bkv.js → index-BBCMulQ-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DmkbAADP.js → index-BSNhW95G.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-B2tEnBPx.js → index-B_JmInC0.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-_ZtCyUdz.js → index-BaPvEvB4.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-CN53dE_u.js → index-Bkz1tgFR.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Bj4hIiLW.js → index-BmTacaQV.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-Tz5dheZa.js → index-CCFZN66A.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-Dv7V2kg6.js → index-COol3xfA.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-Bu2P6u8m.js → index-CY8cRKHR.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Bw9s2d3c.js → index-Cbp-wp-U.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-B9yR7zqr.js → index-Co_LnCWD.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-BK4ftQ4d.js → index-Cx2EXRfr.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-DxunxaTw.js → index-D-mSvCQK.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-B7kp-zRE.js → index-D072oLjp.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CB3kVd9c.js → index-D6UqK83L.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CF9lWi1o.js → index-DF_FKSVH.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-IY9bd5az.js → index-DLwEXRrb.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-F2E5RCwz.js → index-DO0VlNtc.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-B2o_BBjg.js → index-DS04wRll.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DY-gBSm8.js → index-DYn5DnDk.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-B0QbLlWn.js → index-D_O2ZjPk.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-DjF5BOZx.js → index-DcCnO0RU.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CehdwJ_Q.js → index-Dkp-okWa.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BmXpdcHI.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-t2Ch_JKn.js → index-Wo0f2iqb.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-T3MTE6jB.js → index-ZD5Kd8tx.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-Cp5y7lX_.js → index-fOwii3LP.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-Cgk0YEiq.js → index-hG7jXGEW.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-DpdDnZX_.js → index-pVdQieac.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-o9DpkZKf.js → index-uH2LnAs_.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-BmQITjMU.js → index-xzaUx19r.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-BoiGJDoO.js → initDefaultProps-B8PN9AxJ.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-5eL4E0pA.js → motion-BHivfw5Q.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-DjggDi_1.js → move-B0QU5nDd.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-Ce8Vo2T3.js → mtc-parser-DRwRM3PE.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-D1yOBaO2.js → omit-SHt2rV2p.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-8NLceQe8.js → pickAttrs-CcmDlEb2.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-CsIdBRmQ.js → placementArrow-DYatmXDS.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-GM5NE8En.js → responsiveObserve-B7qrsXq5.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-44yj3u49.js → slide-BRGhlOWd.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-B8tqtWcX.js → statusUtils-CT-7NXsQ.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-NhDPBbyB.js → styleChecker-rZdw_Yyp.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-C8Qz1GtN.js → useFlexGapSupport-D8YNIP4P.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-ClUv4kih.js → useFs-B8pt0Gu-.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-BwkOVEh6.js → usePersonalDataHub-VMmYM1tt.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode--gMF33R0.js → vnode-UNDuoPoq.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-DXg3TqOP.js → zoom-dN-u667S.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/data/changelog.json +39 -0
  155. package/src/lib/evolution/evolution-artifact-ports.js +26 -0
  156. package/src/lib/evolution/evolution-eval-cohort-enrollment.js +713 -47
  157. package/src/lib/evolution/evolution-eval-gate.js +146 -0
  158. package/src/lib/evolution/evolution-eval-launch-admission.js +168 -90
  159. package/src/lib/evolution/evolution-eval-ledger-capture.js +50 -0
  160. package/src/lib/evolution/evolution-eval-readonly-audit.js +106 -0
  161. package/src/lib/evolution/evolution-ledger-file-backend.js +20 -0
  162. package/src/lib/evolution/evolution-ledger-ports.js +59 -27
  163. package/src/lib/evolution/evolution-ledger-v2-journal.js +55 -18
  164. package/src/lib/evolution/evolution-workbench-file-resources.js +19 -1
  165. package/src/lib/evolution/rrsi-cohort-registration.js +275 -0
  166. package/src/lib/evolution/rrsi-contracts.js +742 -0
  167. package/src/lib/evolution/rrsi-data.js +196 -0
  168. package/src/lib/evolution/rrsi-evaluation-adapter.js +275 -0
  169. package/src/lib/evolution/rrsi-evaluation-variants.js +267 -0
  170. package/src/lib/evolution/rrsi-group-statistics.js +553 -0
  171. package/src/lib/evolution/rrsi-history-ledger-adapter.js +3261 -0
  172. package/src/lib/evolution/rrsi-native-batch-evidence.js +520 -0
  173. package/src/lib/evolution/rrsi-native-eval-row-collector.js +538 -0
  174. package/src/lib/evolution/rrsi-native-evaluation-batch.js +547 -0
  175. package/src/lib/evolution/rrsi-native-evaluation-plan.js +431 -0
  176. package/src/lib/evolution/rrsi-native-group-statistics-plan.js +121 -0
  177. package/src/lib/evolution/rrsi-native-group-statistics.js +482 -0
  178. package/src/lib/evolution/rrsi-native-quality-receipt-contracts.js +321 -0
  179. package/src/lib/evolution/rrsi-native-quality-receipt.js +256 -0
  180. package/src/lib/evolution/rrsi-native-statistics-protocol.js +330 -0
  181. package/src/lib/evolution/rrsi-parent-binding.js +290 -0
  182. package/src/lib/evolution/rrsi-pm-execution-bridge.js +500 -0
  183. package/src/lib/evolution/rrsi-pm-training-mapping.js +134 -0
  184. package/src/lib/evolution/rrsi-preparation-contracts.js +213 -0
  185. package/src/lib/evolution/rrsi-registry-history-binding.js +193 -0
  186. package/src/lib/evolution/rrsi-registry-store-policy.js +1191 -0
  187. package/src/lib/evolution/rrsi-runtime-composition.js +79 -0
  188. package/src/lib/evolution/rrsi-selector.js +434 -0
  189. package/src/lib/evolution/rrsi-statistics-simulation.js +354 -0
  190. package/src/lib/evolution/skill-candidate-registry.js +216 -29
  191. package/src/lib/evolution/skill-registry-maintenance.js +80 -0
  192. package/src/lib/evolution/skill-registry-writer-control.js +138 -0
  193. package/src/lib/evolution/skill-release-registry.js +399 -169
  194. package/src/lib/formal-quality-eval-runtime.js +2 -14
  195. package/src/lib/goal-store.js +225 -16
  196. package/src/lib/record-replay/skill-recorder.js +38 -3
  197. package/src/lib/scheduler-kernel/authority-resolver.js +12 -163
  198. package/src/lib/scheduler-kernel/contract.js +27 -414
  199. package/src/lib/scheduler-kernel/runtime.js +21 -823
  200. package/src/lib/scheduler-kernel/service.js +11 -328
  201. package/src/lib/scheduler-kernel/source-locator-path.js +7 -142
  202. package/src/lib/scheduler-kernel/store.js +67 -5931
  203. package/src/lib/secure-fs.js +16 -1314
  204. package/src/lib/with-file-lock.js +122 -20
  205. package/src/assets/web-panel/assets/ChatBubbleRenderer-fcc_Tvqu.js +0 -1
  206. package/src/assets/web-panel/assets/MarkdownRenderer-BFiVKf5t.js +0 -1
  207. package/src/assets/web-panel/assets/devWarning-CfB8DxT2.js +0 -1
  208. package/src/assets/web-panel/assets/index-CCsRfd0k.js +0 -1
  209. package/src/assets/web-panel/assets/index-CsmiZIQ4.js +0 -1
@@ -0,0 +1,547 @@
1
+ /** Frozen native request inventory. Declarations do not authenticate provider billing. */
2
+ import { isProxy } from "node:util/types";
3
+ import {
4
+ RRSI_BUDGET_FIELDS,
5
+ verifyRrsiCampaign,
6
+ verifyRrsiCandidate,
7
+ } from "./rrsi-contracts.js";
8
+ import { buildRrsiNativeEvaluationPlan } from "./rrsi-native-evaluation-plan.js";
9
+ import {
10
+ computeEvolutionEvalLaunchRequestDigest,
11
+ computeEvolutionEvalContextDigest,
12
+ } from "./evolution-eval-gate.js";
13
+ import {
14
+ snapshotRrsiData,
15
+ rrsiExact,
16
+ rrsiId,
17
+ rrsiDigest,
18
+ rrsiInteger,
19
+ rrsiHash,
20
+ rrsiCanonical,
21
+ rrsiEnvelope,
22
+ rrsiFail,
23
+ } from "./rrsi-data.js";
24
+
25
+ export const RRSI_NATIVE_BATCH_SCHEMA =
26
+ "chainlesschain.rrsi-native-evaluation-batch/v1";
27
+ export const RRSI_NATIVE_RESERVATION_SCHEMA =
28
+ "chainlesschain.rrsi-native-reservation/v1";
29
+ export const RRSI_NATIVE_SETTLEMENT_SCHEMA =
30
+ "chainlesschain.rrsi-native-settlement/v1";
31
+ export const RRSI_NATIVE_EXECUTION_UNITS = Object.freeze([
32
+ "actorInvocations",
33
+ "gradeInvocations",
34
+ "safetyInvocations",
35
+ "resetOperations",
36
+ "providerRequests",
37
+ ]);
38
+ export const RRSI_NATIVE_BINDING_FIELDS = Object.freeze([
39
+ "queryId",
40
+ "childId",
41
+ "batchDigest",
42
+ "stage",
43
+ "role",
44
+ "variant",
45
+ "pairId",
46
+ "arm",
47
+ "cohortId",
48
+ "nativePlanDigest",
49
+ "requestDigest",
50
+ "evaluationContextDigest",
51
+ "invocationDigest",
52
+ "nativeArtifactId",
53
+ "nativeContentDigest",
54
+ "lifecycleDigest",
55
+ "executionUnitsDigest",
56
+ "costInventoryDigest",
57
+ ]);
58
+ const PAIRS = {
59
+ "rrsi-vs-rsi": ["rrsi", "rsi"],
60
+ "rrsi-vs-baseline": ["rrsi", "baseline"],
61
+ "rsi-vs-baseline": ["rsi", "baseline"],
62
+ };
63
+ const ROLES = { selection: ["selection"], generalization: ["gate", "audit"] };
64
+ const key = (value) =>
65
+ JSON.stringify([value.role, value.variant, value.pairId, value.slotId]);
66
+ const childId = (queryId, cohortId, slotId) =>
67
+ `child.${rrsiHash("chainlesschain.rrsi-native-child/v1", { queryId, cohortId, slotId }).slice(7)}`;
68
+ const same = (left, right, label) => {
69
+ if (rrsiCanonical(left) !== rrsiCanonical(right))
70
+ rrsiFail(`${label} differs`);
71
+ };
72
+
73
+ export function isRrsiNativeReservation(value) {
74
+ return value.schema === RRSI_NATIVE_RESERVATION_SCHEMA;
75
+ }
76
+
77
+ export function rrsiNativeUnitCount(units) {
78
+ return rrsiInteger(
79
+ RRSI_NATIVE_EXECUTION_UNITS.reduce((sum, name) => sum + units[name], 0),
80
+ "charged execution unit count",
81
+ );
82
+ }
83
+
84
+ function textField(value, label) {
85
+ if (typeof value !== "string" || value.length < 1 || value.length > 256)
86
+ rrsiFail(`${label} must be a bounded string`);
87
+ }
88
+
89
+ function allocation(value, actorCount) {
90
+ rrsiExact(
91
+ value,
92
+ ["budget", "executionUnits", "costInventoryDigest"],
93
+ "native per-arm allocation",
94
+ );
95
+ rrsiExact(value.budget, RRSI_BUDGET_FIELDS, "native resource ceilings");
96
+ for (const field of RRSI_BUDGET_FIELDS)
97
+ rrsiInteger(value.budget[field], field);
98
+ rrsiExact(
99
+ value.executionUnits,
100
+ RRSI_NATIVE_EXECUTION_UNITS,
101
+ "native execution units",
102
+ );
103
+ for (const name of RRSI_NATIVE_EXECUTION_UNITS)
104
+ rrsiInteger(value.executionUnits[name], name);
105
+ if (
106
+ value.executionUnits.actorInvocations !== actorCount ||
107
+ value.executionUnits.gradeInvocations !== actorCount ||
108
+ value.executionUnits.safetyInvocations !== actorCount
109
+ )
110
+ rrsiFail(
111
+ "native allocation must retain every actor, grade and safety invocation",
112
+ );
113
+ rrsiDigest(value.costInventoryDigest, "frozen per-arm cost inventory");
114
+ if (value.budget.maxExecutions < rrsiNativeUnitCount(value.executionUnits))
115
+ rrsiFail("native allocation cannot cover all charged execution units");
116
+ return value;
117
+ }
118
+
119
+ /** The live API always compiles the contextual native graph with its static validators. */
120
+ export function buildRrsiNativeEvaluationBatch(input) {
121
+ const fields = ["planContext", "candidate", "queryId", "allocations"];
122
+ if (
123
+ !input ||
124
+ typeof input !== "object" ||
125
+ isProxy(input) ||
126
+ Object.getPrototypeOf(input) !== Object.prototype ||
127
+ Reflect.ownKeys(input).length !== fields.length
128
+ )
129
+ rrsiFail("native batch requires plain own fields");
130
+ const options = Object.fromEntries(
131
+ fields.map((name) => {
132
+ const field = Object.getOwnPropertyDescriptor(input, name);
133
+ if (!field?.enumerable || !("value" in field))
134
+ rrsiFail("native batch cannot use accessors");
135
+ return [name, field.value];
136
+ }),
137
+ );
138
+ const plan = buildRrsiNativeEvaluationPlan(options.planContext);
139
+ const campaign = verifyRrsiCampaign(options.planContext.context.campaign);
140
+ const candidate = verifyRrsiCandidate(campaign, options.candidate);
141
+ const queryId = rrsiId(options.queryId, "native query ID");
142
+ const allocations = snapshotRrsiData(options.allocations);
143
+ if (!Array.isArray(allocations))
144
+ rrsiFail("native allocations must be an array");
145
+ const bySlot = new Map();
146
+ for (const value of allocations) {
147
+ rrsiExact(
148
+ value,
149
+ ["cohortId", "slotId", "byArm"],
150
+ "native child allocation",
151
+ );
152
+ const id = JSON.stringify([value.cohortId, value.slotId]);
153
+ if (bySlot.has(id)) rrsiFail("native allocations duplicate a child");
154
+ bySlot.set(id, value.byArm);
155
+ }
156
+ const nativeCandidateContents = Object.fromEntries(
157
+ ["rsi", "rrsi"].map((arm) => [
158
+ arm,
159
+ plan.cases.find((entry) => entry.candidateArm === arm).nativePlan
160
+ .candidateContentDigest,
161
+ ]),
162
+ );
163
+ const children = plan.cases.flatMap((entry) =>
164
+ entry.slots.map((slot, index) => {
165
+ const cell = entry.nativePlan.cells[index];
166
+ const arms = bySlot.get(JSON.stringify([slot.cohortId, slot.slotId]));
167
+ if (!arms) rrsiFail("native allocation omits a complete paired attempt");
168
+ return {
169
+ childId: childId(queryId, slot.cohortId, slot.slotId),
170
+ role: entry.role,
171
+ variant: entry.variant,
172
+ pairId: entry.pairId,
173
+ candidateArm: entry.candidateArm,
174
+ baselineArm: entry.baselineArm,
175
+ variantMappingDigest: entry.variantMappingDigest,
176
+ recipeDigest: entry.recipeDigest,
177
+ ...slot,
178
+ invocationDigest: rrsiHash("chainlesschain.rrsi-native-invocation/v1", {
179
+ invocationId: cell.invocationId,
180
+ invocationNonce: cell.invocationNonce,
181
+ }),
182
+ invocationIdDigest: rrsiHash(
183
+ "chainlesschain.rrsi-native-invocation-id/v1",
184
+ cell.invocationId,
185
+ ),
186
+ invocationNonceDigest: rrsiHash(
187
+ "chainlesschain.rrsi-native-invocation-nonce/v1",
188
+ cell.invocationNonce,
189
+ ),
190
+ byArm: arms,
191
+ };
192
+ }),
193
+ );
194
+ if (bySlot.size !== children.length)
195
+ rrsiFail("native allocation includes foreign attempts");
196
+ const result = rrsiEnvelope(RRSI_NATIVE_BATCH_SCHEMA, "batchDigest", {
197
+ queryId,
198
+ campaignDigest: plan.campaignDigest,
199
+ candidate,
200
+ nativeEvaluationPlanDigest: plan.nativeEvaluationPlanDigest,
201
+ evaluationMappingDigest: plan.evaluationMappingDigest,
202
+ stage: plan.stage,
203
+ versions: plan.versions,
204
+ nativeCandidateContents,
205
+ lifecycleDigests: plan.lifecycleDigests,
206
+ parentIdentity: plan.parentIdentity,
207
+ targetIdentity: plan.targetIdentity,
208
+ children,
209
+ costAttribution: "frozen-per-arm-request-inventory/v1",
210
+ executionCountSemantics: "actor-grade-safety-reset-and-provider-nodes/v1",
211
+ legacyCostsChargedToEveryArm: true,
212
+ nativeContentDerivationVerified: false,
213
+ requestCostGraphVerified: false,
214
+ billingComplete: false,
215
+ lifecycleProvenanceVerified: false,
216
+ sourceProvenanceVerified: false,
217
+ readyForNativeAdmission: false,
218
+ });
219
+ return normalizeRrsiNativeEvaluationBatch(result, campaign);
220
+ }
221
+
222
+ /** Static readback of a declaration accepted by the contextual compiler and retained in History. */
223
+ export function normalizeRrsiNativeEvaluationBatch(input, campaignInput) {
224
+ const value = snapshotRrsiData(input);
225
+ const campaign = verifyRrsiCampaign(campaignInput);
226
+ const coreFields = [
227
+ "queryId",
228
+ "campaignDigest",
229
+ "candidate",
230
+ "nativeEvaluationPlanDigest",
231
+ "evaluationMappingDigest",
232
+ "stage",
233
+ "versions",
234
+ "nativeCandidateContents",
235
+ "lifecycleDigests",
236
+ "parentIdentity",
237
+ "targetIdentity",
238
+ "children",
239
+ "costAttribution",
240
+ "executionCountSemantics",
241
+ "legacyCostsChargedToEveryArm",
242
+ "nativeContentDerivationVerified",
243
+ "requestCostGraphVerified",
244
+ "billingComplete",
245
+ "lifecycleProvenanceVerified",
246
+ "sourceProvenanceVerified",
247
+ "readyForNativeAdmission",
248
+ ];
249
+ rrsiExact(
250
+ value,
251
+ [
252
+ "schema",
253
+ ...coreFields,
254
+ "structuralOnly",
255
+ "authenticated",
256
+ "readyForExecution",
257
+ "qualifiesForPromotion",
258
+ "batchDigest",
259
+ ],
260
+ "native batch declaration",
261
+ );
262
+ rrsiId(value.queryId, "native query ID");
263
+ if (
264
+ value.campaignDigest !== campaign.campaignDigest ||
265
+ campaign.candidateKind !== "skill"
266
+ )
267
+ rrsiFail("native batch campaign differs");
268
+ verifyRrsiCandidate(campaign, value.candidate);
269
+ for (const name of ["nativeEvaluationPlanDigest", "evaluationMappingDigest"])
270
+ rrsiDigest(value[name], name);
271
+ if (typeof value.stage !== "string" || !Object.hasOwn(ROLES, value.stage))
272
+ rrsiFail("native batch stage differs");
273
+ if (
274
+ value.costAttribution !== "frozen-per-arm-request-inventory/v1" ||
275
+ value.executionCountSemantics !==
276
+ "actor-grade-safety-reset-and-provider-nodes/v1" ||
277
+ value.legacyCostsChargedToEveryArm !== true
278
+ )
279
+ rrsiFail("native batch accounting protocol differs");
280
+ for (const name of [
281
+ "nativeContentDerivationVerified",
282
+ "requestCostGraphVerified",
283
+ "billingComplete",
284
+ "lifecycleProvenanceVerified",
285
+ "sourceProvenanceVerified",
286
+ "readyForNativeAdmission",
287
+ ])
288
+ if (value[name] !== false)
289
+ rrsiFail("native declaration cannot claim execution authority");
290
+ for (const name of ["versions", "lifecycleDigests"]) {
291
+ rrsiExact(value[name], campaign.experiment.arms, name);
292
+ for (const arm of campaign.experiment.arms)
293
+ rrsiDigest(value[name][arm], `${name}.${arm}`);
294
+ }
295
+ rrsiExact(
296
+ value.nativeCandidateContents,
297
+ ["rsi", "rrsi"],
298
+ "native candidate content identities",
299
+ );
300
+ for (const digest of Object.values(value.nativeCandidateContents))
301
+ rrsiDigest(digest, "native content digest");
302
+ rrsiExact(
303
+ value.parentIdentity,
304
+ [
305
+ "contentDigest",
306
+ "revision",
307
+ "dependencyLockDigest",
308
+ "runtimeManifestDigest",
309
+ "targetMatrixRoot",
310
+ ],
311
+ "native parent identity",
312
+ );
313
+ for (const [name, field] of Object.entries(value.parentIdentity))
314
+ if (name === "revision") rrsiInteger(field, name);
315
+ else rrsiDigest(field, name);
316
+ if (!Array.isArray(value.targetIdentity) || !value.targetIdentity.length)
317
+ rrsiFail("native target identities are missing");
318
+ const targets = new Map();
319
+ for (const target of value.targetIdentity) {
320
+ if (!Array.isArray(target) || target.length !== 4 || targets.has(target[0]))
321
+ rrsiFail("native target identities are duplicated or invalid");
322
+ target
323
+ .slice(0, 3)
324
+ .forEach((field) => textField(field, "native target identity"));
325
+ rrsiDigest(target[3], "target environment digest");
326
+ targets.set(target[0], target);
327
+ }
328
+ const variants = ["clean", ...campaign.experiment.perturbations];
329
+ if (
330
+ !Array.isArray(value.children) ||
331
+ value.children.length !==
332
+ ROLES[value.stage].length *
333
+ variants.length *
334
+ Object.keys(PAIRS).length *
335
+ targets.size
336
+ )
337
+ rrsiFail("native batch omits the full triangle denominator");
338
+ const seen = new Set(),
339
+ invocations = new Set(),
340
+ invocationIds = new Set(),
341
+ invocationNonces = new Set(),
342
+ plans = new Map();
343
+ const childFields = [
344
+ "childId",
345
+ "role",
346
+ "variant",
347
+ "pairId",
348
+ "candidateArm",
349
+ "baselineArm",
350
+ "variantMappingDigest",
351
+ "recipeDigest",
352
+ "cohortId",
353
+ "slotId",
354
+ "nativePlanDigest",
355
+ "request",
356
+ "requestDigest",
357
+ "expectedContext",
358
+ "evaluationContextDigest",
359
+ "plannedObservationsPerArmByPartition",
360
+ "pmTrainingPartitionDigest",
361
+ "invocationDigest",
362
+ "invocationIdDigest",
363
+ "invocationNonceDigest",
364
+ "byArm",
365
+ ];
366
+ const totals = Object.fromEntries(
367
+ campaign.experiment.arms.map((arm) => [
368
+ arm,
369
+ Object.fromEntries(RRSI_BUDGET_FIELDS.map((name) => [name, 0])),
370
+ ]),
371
+ );
372
+ for (const child of value.children) {
373
+ rrsiExact(child, childFields, "native paired child");
374
+ if (
375
+ !ROLES[value.stage].includes(child.role) ||
376
+ !variants.includes(child.variant) ||
377
+ !Object.hasOwn(PAIRS, child.pairId) ||
378
+ !targets.has(child.slotId) ||
379
+ seen.has(key(child))
380
+ )
381
+ rrsiFail("native batch contains foreign or duplicate children");
382
+ seen.add(key(child));
383
+ same(
384
+ [child.candidateArm, child.baselineArm],
385
+ PAIRS[child.pairId],
386
+ "native pair arms",
387
+ );
388
+ for (const name of [
389
+ "variantMappingDigest",
390
+ "recipeDigest",
391
+ "nativePlanDigest",
392
+ "requestDigest",
393
+ "evaluationContextDigest",
394
+ "pmTrainingPartitionDigest",
395
+ "invocationDigest",
396
+ "invocationIdDigest",
397
+ "invocationNonceDigest",
398
+ ])
399
+ rrsiDigest(child[name], name);
400
+ const caseKey = JSON.stringify([child.role, child.variant, child.pairId]);
401
+ const cohortId = `rrsi-eval.${rrsiHash("chainlesschain.rrsi-native-cohort-identity/v1", { campaignDigest: value.campaignDigest, stage: value.stage, role: child.role, variant: child.variant, pairId: child.pairId, nativePlanDigest: child.nativePlanDigest }).slice(7)}`;
402
+ if (
403
+ child.cohortId !== cohortId ||
404
+ child.childId !== childId(value.queryId, cohortId, child.slotId)
405
+ )
406
+ rrsiFail("native child identity differs");
407
+ if (plans.has(caseKey) && plans.get(caseKey) !== child.nativePlanDigest)
408
+ rrsiFail("native target children change their original plan");
409
+ if (
410
+ !plans.has(caseKey) &&
411
+ [...plans.values()].includes(child.nativePlanDigest)
412
+ )
413
+ rrsiFail("native cases reuse their original plan");
414
+ plans.set(caseKey, child.nativePlanDigest);
415
+ if (
416
+ invocations.has(child.invocationDigest) ||
417
+ invocationIds.has(child.invocationIdDigest) ||
418
+ invocationNonces.has(child.invocationNonceDigest)
419
+ )
420
+ rrsiFail("native children reuse invocation identities");
421
+ invocations.add(child.invocationDigest);
422
+ invocationIds.add(child.invocationIdDigest);
423
+ invocationNonces.add(child.invocationNonceDigest);
424
+ const target = targets.get(child.slotId);
425
+ const context = {
426
+ planDigest: child.nativePlanDigest,
427
+ targetMatrixRoot: value.parentIdentity.targetMatrixRoot,
428
+ cellId: child.slotId,
429
+ runtimeId: target[1],
430
+ };
431
+ rrsiExact(
432
+ child.request,
433
+ [
434
+ "suiteRef",
435
+ "candidateId",
436
+ "baselineId",
437
+ "targetEnvironmentRef",
438
+ "evaluationContext",
439
+ ],
440
+ "native launch request",
441
+ );
442
+ textField(child.request.suiteRef, "native suite reference");
443
+ same(child.request.evaluationContext, context, "native request context");
444
+ if (
445
+ child.request.candidateId !== value.versions[child.candidateArm] ||
446
+ child.request.baselineId !== value.versions[child.baselineArm] ||
447
+ child.request.targetEnvironmentRef !== target[2]
448
+ )
449
+ rrsiFail("native request changes its arm or target");
450
+ if (
451
+ computeEvolutionEvalLaunchRequestDigest(child.request) !==
452
+ child.requestDigest
453
+ )
454
+ rrsiFail("native launch request digest differs");
455
+ rrsiExact(
456
+ child.expectedContext,
457
+ [
458
+ "planDigest",
459
+ "targetMatrixRoot",
460
+ "cellId",
461
+ "runtimeId",
462
+ "tenantId",
463
+ "targetEnvironmentRef",
464
+ "environmentDigest",
465
+ "candidateId",
466
+ "baselineId",
467
+ "suiteDigest",
468
+ "policyDigest",
469
+ "evaluationAuthorityRoot",
470
+ ],
471
+ "native expected context",
472
+ );
473
+ const expected = {
474
+ ...context,
475
+ tenantId: campaign.tenantId,
476
+ targetEnvironmentRef: target[2],
477
+ environmentDigest: target[3],
478
+ candidateId: child.request.candidateId,
479
+ baselineId: child.request.baselineId,
480
+ };
481
+ for (const [name, field] of Object.entries(expected))
482
+ if (child.expectedContext[name] !== field)
483
+ rrsiFail("native expected context changes request scope");
484
+ for (const name of [
485
+ "suiteDigest",
486
+ "policyDigest",
487
+ "evaluationAuthorityRoot",
488
+ ])
489
+ rrsiDigest(child.expectedContext[name], name);
490
+ if (
491
+ computeEvolutionEvalContextDigest(child.expectedContext) !==
492
+ child.evaluationContextDigest
493
+ )
494
+ rrsiFail("native evaluation context digest differs");
495
+ const partitions =
496
+ child.role === "gate"
497
+ ? ["gate-validation", "gate-test"]
498
+ : child.role === "selection"
499
+ ? ["select"]
500
+ : ["audit"];
501
+ rrsiExact(
502
+ child.plannedObservationsPerArmByPartition,
503
+ partitions,
504
+ "native partition denominator",
505
+ );
506
+ for (const partition of partitions)
507
+ if (
508
+ child.plannedObservationsPerArmByPartition[partition] !==
509
+ campaign.dataset.pools[partition].taskCount *
510
+ campaign.experiment.seeds.length
511
+ )
512
+ rrsiFail("native partition observation denominator differs");
513
+ const actorCount = Object.values(
514
+ child.plannedObservationsPerArmByPartition,
515
+ ).reduce((sum, count) => sum + count, 0);
516
+ rrsiExact(child.byArm, PAIRS[child.pairId], "native child arms");
517
+ for (const [arm, entry] of Object.entries(child.byArm)) {
518
+ allocation(entry, actorCount);
519
+ for (const field of RRSI_BUDGET_FIELDS)
520
+ totals[arm][field] = rrsiInteger(
521
+ totals[arm][field] + entry.budget[field],
522
+ "native per-arm total",
523
+ );
524
+ }
525
+ }
526
+ const cap =
527
+ value.stage === "selection"
528
+ ? campaign.budget.selectionPerExploringArm
529
+ : campaign.budget.finalEvaluationPerArm;
530
+ for (const arm of campaign.experiment.arms)
531
+ for (const name of RRSI_BUDGET_FIELDS)
532
+ if (
533
+ totals[arm][name] > cap[name] ||
534
+ totals[arm][name] > campaign.budget.totalPerArm[name]
535
+ )
536
+ rrsiFail(
537
+ "native batch exceeds a frozen per-arm budget",
538
+ "CC_RRSI_BUDGET_EXCEEDED",
539
+ );
540
+ const rebuilt = rrsiEnvelope(
541
+ RRSI_NATIVE_BATCH_SCHEMA,
542
+ "batchDigest",
543
+ Object.fromEntries(coreFields.map((name) => [name, value[name]])),
544
+ );
545
+ same(value, rebuilt, "native batch envelope");
546
+ return rebuilt;
547
+ }