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,196 @@
1
+ import { createHash } from "node:crypto";
2
+ import { isProxy } from "node:util/types";
3
+
4
+ export const RRSI_STRUCTURAL_FLAGS = Object.freeze({
5
+ structuralOnly: true,
6
+ authenticated: false,
7
+ readyForExecution: false,
8
+ qualifiesForPromotion: false,
9
+ });
10
+
11
+ export class RrsiContractError extends TypeError {
12
+ constructor(message, code = "CC_RRSI_INVALID") {
13
+ super(message);
14
+ this.name = "RrsiContractError";
15
+ this.code = code;
16
+ }
17
+ }
18
+
19
+ export function rrsiFail(message, code) {
20
+ throw new RrsiContractError(message, code);
21
+ }
22
+
23
+ /** Copy descriptors, never call input getters, toJSON, or proxy traps. */
24
+ export function snapshotRrsiData(input) {
25
+ const ancestors = new WeakSet();
26
+ let nodes = 0;
27
+ let bytes = 0;
28
+ const charge = (text) => {
29
+ bytes += Buffer.byteLength(text, "utf8");
30
+ if (bytes > 2 * 1024 * 1024) rrsiFail("RRSI data exceeds byte limit");
31
+ };
32
+ const copy = (value, depth) => {
33
+ if (++nodes > 100_000 || depth > 16)
34
+ rrsiFail("RRSI data exceeds structural limits");
35
+ if (value === null || typeof value === "boolean") return value;
36
+ if (typeof value === "string") {
37
+ if (value.length > 8192) rrsiFail("RRSI string exceeds limit");
38
+ charge(value);
39
+ return value;
40
+ }
41
+ if (typeof value === "number") {
42
+ if (
43
+ !Number.isFinite(value) ||
44
+ Object.is(value, -0) ||
45
+ (Number.isInteger(value) && !Number.isSafeInteger(value))
46
+ )
47
+ rrsiFail("RRSI numbers must be finite and safe");
48
+ return value;
49
+ }
50
+ if (!value || typeof value !== "object" || isProxy(value))
51
+ rrsiFail("RRSI input must be plain data");
52
+ if (ancestors.has(value)) rrsiFail("RRSI data must be acyclic");
53
+ const array = Array.isArray(value);
54
+ if (
55
+ Object.getPrototypeOf(value) !==
56
+ (array ? Array.prototype : Object.prototype)
57
+ )
58
+ rrsiFail("RRSI input has an unsupported prototype");
59
+ if (array && value.length > 5000) rrsiFail("RRSI array exceeds limit");
60
+ const keys = Reflect.ownKeys(value);
61
+ if (
62
+ (!array && keys.length > 64) ||
63
+ (array && keys.length !== value.length + 1)
64
+ )
65
+ rrsiFail("RRSI input has extra fields or array holes");
66
+ ancestors.add(value);
67
+ const result = array ? [] : {};
68
+ for (const key of keys) {
69
+ if (array && key === "length") continue;
70
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
71
+ if (
72
+ typeof key !== "string" ||
73
+ key.length > 128 ||
74
+ !descriptor?.enumerable ||
75
+ !("value" in descriptor) ||
76
+ ["__proto__", "constructor", "prototype"].includes(key) ||
77
+ (array && (!/^(0|[1-9]\d*)$/u.test(key) || Number(key) >= value.length))
78
+ )
79
+ rrsiFail("RRSI input has accessor, symbol, or noncanonical fields");
80
+ charge(key);
81
+ Object.defineProperty(result, key, {
82
+ value: copy(descriptor.value, depth + 1),
83
+ enumerable: true,
84
+ writable: true,
85
+ configurable: true,
86
+ });
87
+ }
88
+ ancestors.delete(value);
89
+ return result;
90
+ };
91
+ return copy(input, 0);
92
+ }
93
+
94
+ export function rrsiExact(value, keys, label) {
95
+ if (!value || typeof value !== "object" || Array.isArray(value))
96
+ rrsiFail(`${label} must be a record`);
97
+ const actual = Object.keys(value);
98
+ if (
99
+ actual.length !== keys.length ||
100
+ actual.some((key) => !keys.includes(key))
101
+ )
102
+ rrsiFail(`${label} has missing or unexpected fields`);
103
+ }
104
+
105
+ export function rrsiId(value, label) {
106
+ if (typeof value !== "string" || !/^[a-z][a-z0-9._:-]{0,127}$/u.test(value))
107
+ rrsiFail(`${label} is invalid`);
108
+ return value;
109
+ }
110
+
111
+ export function rrsiDigest(value, label) {
112
+ if (typeof value !== "string" || !/^sha256:[a-f0-9]{64}$/u.test(value))
113
+ rrsiFail(`${label} must be a sha256 digest`);
114
+ return value;
115
+ }
116
+
117
+ export function rrsiInteger(
118
+ value,
119
+ label,
120
+ min = 0,
121
+ max = Number.MAX_SAFE_INTEGER,
122
+ ) {
123
+ if (!Number.isSafeInteger(value) || value < min || value > max)
124
+ rrsiFail(`${label} is outside its allowed range`);
125
+ return value;
126
+ }
127
+
128
+ export function rrsiFinite(value, label, min = 0, max = 1) {
129
+ if (
130
+ typeof value !== "number" ||
131
+ !Number.isFinite(value) ||
132
+ value < min ||
133
+ value > max
134
+ )
135
+ rrsiFail(`${label} is outside its allowed range`);
136
+ return value;
137
+ }
138
+
139
+ export function rrsiBoolean(value, label) {
140
+ if (typeof value !== "boolean") rrsiFail(`${label} must be boolean`);
141
+ return value;
142
+ }
143
+
144
+ export function rrsiCanonical(value) {
145
+ if (value === null || typeof value !== "object") return JSON.stringify(value);
146
+ if (Array.isArray(value)) return `[${value.map(rrsiCanonical).join(",")}]`;
147
+ return `{${Object.keys(value)
148
+ .sort()
149
+ .map((key) => `${JSON.stringify(key)}:${rrsiCanonical(value[key])}`)
150
+ .join(",")}}`;
151
+ }
152
+
153
+ export function rrsiHash(domain, value) {
154
+ return `sha256:${createHash("sha256").update(domain).update("\0").update(rrsiCanonical(value)).digest("hex")}`;
155
+ }
156
+
157
+ export function freezeRrsiData(value) {
158
+ if (value && typeof value === "object") {
159
+ Object.values(value).forEach(freezeRrsiData);
160
+ Object.freeze(value);
161
+ }
162
+ return value;
163
+ }
164
+
165
+ export function rrsiEnvelope(schema, digestField, core) {
166
+ const record = { schema, ...core, ...RRSI_STRUCTURAL_FLAGS };
167
+ return freezeRrsiData({ ...record, [digestField]: rrsiHash(schema, record) });
168
+ }
169
+
170
+ export function verifyRrsiEnvelope(
171
+ input,
172
+ schema,
173
+ digestField,
174
+ inputKeys,
175
+ rebuild,
176
+ derivedKeys = [],
177
+ ) {
178
+ const value = snapshotRrsiData(input);
179
+ rrsiExact(
180
+ value,
181
+ [
182
+ "schema",
183
+ ...inputKeys,
184
+ ...derivedKeys,
185
+ ...Object.keys(RRSI_STRUCTURAL_FLAGS),
186
+ digestField,
187
+ ],
188
+ schema,
189
+ );
190
+ if (value.schema !== schema) rrsiFail("RRSI schema mismatch");
191
+ const core = Object.fromEntries(inputKeys.map((key) => [key, value[key]]));
192
+ const result = rebuild(core);
193
+ if (rrsiCanonical(result) !== rrsiCanonical(value))
194
+ rrsiFail("RRSI envelope, digest, or structural flags mismatch");
195
+ return result;
196
+ }
@@ -0,0 +1,275 @@
1
+ /** Five RRSI pools over existing strict Eval Suites; no runner or signing factory. */
2
+ import { verifyRrsiCampaign } from "./rrsi-contracts.js";
3
+ import {
4
+ verifyEvolutionEvalPolicy,
5
+ isEvolutionEvalReceiptVerifier,
6
+ verifyEvolutionEvalResultEvidence,
7
+ computeEvolutionEvalContextDigest,
8
+ } from "./evolution-eval-gate.js";
9
+ import { projectRrsiPmTaskReferences } from "./rrsi-pm-training-mapping.js";
10
+ import {
11
+ snapshotRrsiData,
12
+ rrsiExact,
13
+ rrsiDigest,
14
+ rrsiCanonical,
15
+ rrsiHash,
16
+ rrsiEnvelope,
17
+ freezeRrsiData,
18
+ rrsiFail,
19
+ } from "./rrsi-data.js";
20
+
21
+ export const RRSI_EVALUATION_MAPPING_SCHEMA =
22
+ "chainlesschain.rrsi-evaluation-mapping/v1";
23
+ export const RRSI_EVAL_ROW_EVIDENCE_SCHEMA =
24
+ "chainlesschain.rrsi-eval-row-evidence/v1";
25
+ const ROLES = ["gate", "selection", "audit"];
26
+ const MAPPINGS = new WeakSet();
27
+ const PARTITIONS = {
28
+ gate: { training: "train", validation: "gate-validation", test: "gate-test" },
29
+ selection: { training: "train", validation: "select", test: "select" },
30
+ audit: { training: "train", validation: "audit", test: "audit" },
31
+ };
32
+
33
+ /** Selection and audit use disjoint whole components within their own pool. */
34
+ export function buildRrsiEvaluationMapping(input) {
35
+ const value = snapshotRrsiData(input);
36
+ rrsiExact(
37
+ value,
38
+ ["campaign", "suites", "policies", "versions"],
39
+ "five-pool mapping input",
40
+ );
41
+ const campaign = verifyRrsiCampaign(value.campaign);
42
+ rrsiExact(
43
+ value.versions,
44
+ campaign.experiment.arms,
45
+ "frozen evaluation arm artifacts",
46
+ );
47
+ for (const arm of campaign.experiment.arms)
48
+ rrsiDigest(value.versions[arm], `${arm} evaluation artifact`);
49
+ rrsiExact(value.suites, ROLES, "independent evaluation suites");
50
+ rrsiExact(value.policies, ROLES, "frozen evaluation policies");
51
+ const sources = new Map(
52
+ campaign.dataset.tasks.map((task) => [task.contentDigest, task]),
53
+ );
54
+ const roles = ROLES.map((role) => {
55
+ const projection = projectRrsiPmTaskReferences(value.suites[role]);
56
+ const policy = verifyEvolutionEvalPolicy(value.policies[role]);
57
+ if (
58
+ rrsiCanonical([...policy.seeds].sort((a, b) => a - b)) !==
59
+ rrsiCanonical(campaign.experiment.seeds)
60
+ )
61
+ rrsiFail("Eval repeats differ from the frozen RRSI denominator");
62
+ const counts = Object.fromEntries(
63
+ ["training", "validation", "test"].map((split) => [
64
+ split,
65
+ projection.tasks.filter((task) => task.split === split).length,
66
+ ]),
67
+ );
68
+ for (const [split, field, floor] of [
69
+ ["training", "minTrainingTasks", 30],
70
+ ["validation", "minValidationTasks", 20],
71
+ ["test", "minTestTasks", 20],
72
+ ])
73
+ if (counts[split] < Math.max(floor, policy[field]))
74
+ rrsiFail("Eval Suite does not satisfy the original sample floors");
75
+ const mappings = projection.tasks.map((task) => {
76
+ const source = sources.get(task.contentDigest);
77
+ if (
78
+ !source ||
79
+ source.partition !== PARTITIONS[role][task.split] ||
80
+ rrsiCanonical(source.groups) !== rrsiCanonical(task.groups)
81
+ )
82
+ rrsiFail(
83
+ "Eval task content, source or pool differs from RRSI",
84
+ "CC_RRSI_DATA_LEAKAGE",
85
+ );
86
+ return {
87
+ ...task,
88
+ rrsiTaskId: source.id,
89
+ rrsiPartition: source.partition,
90
+ };
91
+ });
92
+ if (new Set(mappings.map((row) => row.rrsiTaskId)).size !== mappings.length)
93
+ rrsiFail("evaluation suite maps multiple aliases to one RRSI task");
94
+ const expectedPartitions = new Set(Object.values(PARTITIONS[role]));
95
+ const expectedIds = campaign.dataset.tasks
96
+ .filter((task) => expectedPartitions.has(task.partition))
97
+ .map((task) => task.id)
98
+ .sort();
99
+ if (
100
+ rrsiCanonical(mappings.map((row) => row.rrsiTaskId).sort()) !==
101
+ rrsiCanonical(expectedIds)
102
+ )
103
+ rrsiFail("evaluation mapping omits part of the frozen pool denominator");
104
+ return {
105
+ role,
106
+ suiteDigest: projection.suiteDigest,
107
+ policyDigest: policy.policyDigest,
108
+ pmTrainingPartitionDigest: projection.pmTrainingPartitionDigest,
109
+ splitCounts: counts,
110
+ mappings,
111
+ };
112
+ });
113
+ const mapping = rrsiEnvelope(
114
+ RRSI_EVALUATION_MAPPING_SCHEMA,
115
+ "evaluationMappingDigest",
116
+ {
117
+ campaignDigest: campaign.campaignDigest,
118
+ datasetDigest: campaign.dataset.datasetDigest,
119
+ versions: value.versions,
120
+ rrsiTrainingPartitionDigest: campaign.dataset.pools.train.partitionDigest,
121
+ roles,
122
+ sourceProvenanceVerified: false,
123
+ independentExecutionContextsVerified: false,
124
+ mappingAuthenticated: false,
125
+ },
126
+ );
127
+ MAPPINGS.add(mapping);
128
+ return mapping;
129
+ }
130
+
131
+ export function verifyRrsiEvaluationMapping(mapping, context) {
132
+ const rebuilt = buildRrsiEvaluationMapping(context);
133
+ if (rrsiCanonical(snapshotRrsiData(mapping)) !== rrsiCanonical(rebuilt))
134
+ rrsiFail("five-pool mapping differs from frozen sources or policy");
135
+ return rebuilt;
136
+ }
137
+
138
+ /** Explicit training-only data plane. Selection/Gate/audit summaries are absent. */
139
+ export function projectRrsiEvaluationTrainingView(input) {
140
+ if (!MAPPINGS.has(input))
141
+ rrsiFail("training projection requires a verified evaluation mapping");
142
+ const mapping = snapshotRrsiData(input);
143
+ if (mapping.schema !== RRSI_EVALUATION_MAPPING_SCHEMA)
144
+ rrsiFail("unknown evaluation mapping schema");
145
+ const gate = mapping.roles.find((role) => role.role === "gate");
146
+ if (!gate) rrsiFail("evaluation mapping has no gate training view");
147
+ return freezeRrsiData({
148
+ trainingPartitionDigest: mapping.rrsiTrainingPartitionDigest,
149
+ tasks: gate.mappings
150
+ .filter((row) => row.rrsiPartition === "train")
151
+ .map((row) => ({
152
+ taskId: row.rrsiTaskId,
153
+ contentDigest: row.contentDigest,
154
+ })),
155
+ sourceProvenanceVerified: false,
156
+ qualifiesForPromotion: false,
157
+ });
158
+ }
159
+
160
+ /** Authenticate raw rows through the existing branded final-receipt verifier. */
161
+ export async function collectRrsiEvalRowEvidence(verifier, input) {
162
+ if (!isEvolutionEvalReceiptVerifier(verifier))
163
+ rrsiFail("RRSI evaluation requires the existing branded Eval verifier");
164
+ const value = snapshotRrsiData(input);
165
+ rrsiExact(
166
+ value,
167
+ [
168
+ "context",
169
+ "mapping",
170
+ "role",
171
+ "bundle",
172
+ "expectedReceipt",
173
+ "evaluationContext",
174
+ "armBindings",
175
+ ],
176
+ "RRSI signed row collection",
177
+ );
178
+ const mapping = verifyRrsiEvaluationMapping(value.mapping, value.context);
179
+ if (
180
+ value.evaluationContext.planDigest !== mapping.evaluationMappingDigest ||
181
+ computeEvolutionEvalContextDigest(value.evaluationContext) !==
182
+ value.expectedReceipt.evaluationContextDigest
183
+ )
184
+ rrsiFail("Eval run context was not bound to the frozen RRSI mapping");
185
+ const role = mapping.roles.find((entry) => entry.role === value.role);
186
+ if (!role) rrsiFail("unknown evaluation evidence role");
187
+ rrsiExact(
188
+ value.armBindings,
189
+ ["baseline", "candidate"],
190
+ "paired Eval arm binding",
191
+ );
192
+ if (
193
+ !Object.values(value.armBindings).every((arm) =>
194
+ ["baseline", "rsi", "rrsi"].includes(arm),
195
+ ) ||
196
+ value.armBindings.baseline === value.armBindings.candidate
197
+ )
198
+ rrsiFail("Eval evidence requires two different preregistered arms");
199
+ rrsiExact(
200
+ value.bundle,
201
+ ["receipt", "resultEvidence", "suite", "policy"],
202
+ "existing Eval evidence bundle",
203
+ );
204
+ if (
205
+ value.bundle.suite.suiteDigest !== role.suiteDigest ||
206
+ value.bundle.policy.policyDigest !== role.policyDigest
207
+ )
208
+ rrsiFail("signed Eval evidence differs from frozen five-pool mapping");
209
+ if (
210
+ value.bundle.receipt.baselineId !==
211
+ mapping.versions[value.armBindings.baseline] ||
212
+ value.bundle.receipt.candidateId !==
213
+ mapping.versions[value.armBindings.candidate] ||
214
+ value.bundle.receipt.environmentDigest !==
215
+ value.context.campaign.execution.environmentDigest ||
216
+ value.bundle.receipt.tenantId !== value.context.campaign.tenantId ||
217
+ value.bundle.receipt.trainingPartitionDigest !==
218
+ role.pmTrainingPartitionDigest
219
+ )
220
+ rrsiFail(
221
+ "signed Eval arms, tenant, environment or training binding differ",
222
+ );
223
+ const evidence = await verifyEvolutionEvalResultEvidence(
224
+ verifier,
225
+ value.bundle,
226
+ value.expectedReceipt,
227
+ );
228
+ const indexed = new Map(role.mappings.map((row) => [row.pmTaskDigest, row]));
229
+ const rows = ["validation", "test"].flatMap((split) =>
230
+ ["baseline", "candidate"].flatMap((arm) =>
231
+ evidence[split][arm].map((row) => {
232
+ const task = indexed.get(row.taskDigest);
233
+ if (!task || task.split !== split)
234
+ rrsiFail("signed row has foreign task mapping");
235
+ return {
236
+ rrsiTaskId: task.rrsiTaskId,
237
+ rrsiPartition: task.rrsiPartition,
238
+ pmTaskDigest: row.taskDigest,
239
+ seed: row.seed,
240
+ arm: value.armBindings[arm],
241
+ versionDigest: mapping.versions[value.armBindings[arm]],
242
+ reportedPass: row.pass,
243
+ strictPass:
244
+ row.pass &&
245
+ row.securityViolations === 0 &&
246
+ row.permissionViolations === 0,
247
+ securityViolations: row.securityViolations,
248
+ permissionViolations: row.permissionViolations,
249
+ executionDigest: row.executionDigest,
250
+ gradeDigest: row.gradeDigest,
251
+ safetyDigest: row.safetyDigest,
252
+ metrics: row.metrics,
253
+ rowDigest: rrsiHash("chainlesschain.rrsi-signed-eval-row/v1", row),
254
+ };
255
+ }),
256
+ ),
257
+ );
258
+ return rrsiEnvelope(RRSI_EVAL_ROW_EVIDENCE_SCHEMA, "rowEvidenceDigest", {
259
+ evaluationMappingDigest: mapping.evaluationMappingDigest,
260
+ role: role.role,
261
+ finalReceiptDigest: evidence.receiptDigest,
262
+ rows,
263
+ finalReceiptRowsAuthenticated: true,
264
+ runContextBoundToMapping: true,
265
+ ledgerReservationVerified: false,
266
+ armLifecycleVerified: false,
267
+ perturbationIdentityVerified: false,
268
+ launchSlotVerified: false,
269
+ underlyingExecutionReceiptsReverified: false,
270
+ sourceProvenanceVerified: false,
271
+ completeLifecycleCostVerified: false,
272
+ cleanupReverified: false,
273
+ qualityVerdictVerified: false,
274
+ });
275
+ }