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,354 @@
1
+ /** Preregistered synthetic coverage/power checks, not production calibration. */
2
+ import {
3
+ computeRrsiBoundedClusterInterval,
4
+ computeRrsiClusterEnvelopeInterval,
5
+ RRSI_BOUNDED_CLUSTER_METHOD,
6
+ RRSI_CLUSTER_ENVELOPE_METHOD,
7
+ } from "./rrsi-group-statistics.js";
8
+ import {
9
+ snapshotRrsiData,
10
+ rrsiExact,
11
+ rrsiInteger,
12
+ rrsiFinite,
13
+ rrsiDigest,
14
+ rrsiHash,
15
+ rrsiCanonical,
16
+ rrsiEnvelope,
17
+ rrsiFail,
18
+ } from "./rrsi-data.js";
19
+
20
+ export const RRSI_STATISTICS_SIMULATION_PLAN_SCHEMA =
21
+ "chainlesschain.rrsi-statistics-simulation-plan/v1";
22
+ export const RRSI_STATISTICS_SIMULATION_REPORT_SCHEMA =
23
+ "chainlesschain.rrsi-statistics-simulation-report/v1";
24
+ const KEYS = [
25
+ "intervalMethod",
26
+ "bootstrapSamples",
27
+ "trialCount",
28
+ "clusterCounts",
29
+ "comparisonCount",
30
+ "familyAlpha",
31
+ "qualityThreshold",
32
+ "targetPower",
33
+ "randomnessSeedDigest",
34
+ ];
35
+ const LAWS = [
36
+ {
37
+ id: "symmetric-null",
38
+ negative: -1,
39
+ positive: 1,
40
+ positiveProbability: 0.5,
41
+ mean: 0,
42
+ },
43
+ {
44
+ id: "rare-negative-null",
45
+ negative: -0.95,
46
+ positive: 0.05,
47
+ positiveProbability: 0.95,
48
+ mean: 0,
49
+ },
50
+ {
51
+ id: "moderate-positive",
52
+ negative: -0.25,
53
+ positive: 0.75,
54
+ positiveProbability: 0.5,
55
+ mean: 0.25,
56
+ },
57
+ {
58
+ id: "strong-positive",
59
+ negative: 0.6,
60
+ positive: 1,
61
+ positiveProbability: 0.5,
62
+ mean: 0.8,
63
+ },
64
+ ];
65
+
66
+ export function buildRrsiStatisticsSimulationPlan(input) {
67
+ const value = snapshotRrsiData(input);
68
+ rrsiExact(value, KEYS, "statistics simulation plan");
69
+ rrsiInteger(value.trialCount, "Monte Carlo trials", 100, 10000);
70
+ rrsiInteger(value.comparisonCount, "simulation comparison family", 1, 32);
71
+ rrsiFinite(value.familyAlpha, "simulation family alpha", 0.0001, 0.05);
72
+ rrsiFinite(value.qualityThreshold, "simulation quality threshold", 0, 0.5);
73
+ rrsiFinite(value.targetPower, "simulation planned power", 0.8, 0.99);
74
+ rrsiDigest(value.randomnessSeedDigest, "simulation randomness seed");
75
+ if (
76
+ ![RRSI_BOUNDED_CLUSTER_METHOD, RRSI_CLUSTER_ENVELOPE_METHOD].includes(
77
+ value.intervalMethod,
78
+ )
79
+ )
80
+ rrsiFail("simulation must freeze the actual interval method");
81
+ const fullMethod = value.intervalMethod === RRSI_CLUSTER_ENVELOPE_METHOD;
82
+ if (fullMethod) {
83
+ rrsiInteger(
84
+ value.bootstrapSamples,
85
+ "simulation bootstrap samples",
86
+ 1000,
87
+ 1_000_000,
88
+ );
89
+ if (
90
+ (value.bootstrapSamples * value.familyAlpha) / value.comparisonCount / 2 <
91
+ 25
92
+ )
93
+ rrsiFail("simulation has insufficient bootstrap tail resolution");
94
+ } else if (value.bootstrapSamples !== null)
95
+ rrsiFail("Hoeffding-only simulation must not claim bootstrap samples");
96
+ if (
97
+ !Array.isArray(value.clusterCounts) ||
98
+ value.clusterCounts.length < 1 ||
99
+ value.clusterCounts.length > 6
100
+ )
101
+ rrsiFail("simulation cluster counts must be a bounded nonempty grid");
102
+ value.clusterCounts.forEach((count) =>
103
+ rrsiInteger(count, "simulation cluster count", 20, 4000),
104
+ );
105
+ if (new Set(value.clusterCounts).size !== value.clusterCounts.length)
106
+ rrsiFail("simulation sample grid has duplicate counts");
107
+ const operations =
108
+ value.trialCount *
109
+ value.comparisonCount *
110
+ LAWS.length *
111
+ 2 *
112
+ value.clusterCounts.reduce((sum, count) => sum + count, 0) *
113
+ (fullMethod ? value.bootstrapSamples : 1);
114
+ // Full-method simulations use the direct production primitive, not a surrogate.
115
+ const operationLimit = fullMethod ? 500_000_000 : 50_000_000;
116
+ if (operations > operationLimit)
117
+ rrsiFail(
118
+ "Monte Carlo simulation exceeds frozen operation bound",
119
+ "CC_RRSI_BUDGET_EXCEEDED",
120
+ );
121
+ return rrsiEnvelope(
122
+ RRSI_STATISTICS_SIMULATION_PLAN_SCHEMA,
123
+ "simulationPlanDigest",
124
+ {
125
+ ...value,
126
+ clusterCounts: [...value.clusterCounts].sort((a, b) => a - b),
127
+ laws: LAWS,
128
+ weightProfiles: ["equal-task-counts", "one-dominant-component"],
129
+ operations,
130
+ operationLimit,
131
+ bootstrapAlgorithm: fullMethod
132
+ ? "direct-uniform-cluster-picks-xorshift32/v1"
133
+ : null,
134
+ monteCarloIntervalMethod: "wilson-score-95/v1",
135
+ simultaneousMonteCarloMethod: "bonferroni-hoeffding-all-grid-rates-95/v1",
136
+ simultaneousRateCount: value.clusterCounts.length * LAWS.length * 2 * 4,
137
+ contrastJointLaw:
138
+ "independent-synthetic-contrast-deltas-not-three-arm-outcomes",
139
+ hypothesisScope: "one-synthetic-pool-and-variant-per-family",
140
+ bootstrapIndexCoupling: "same-stream-for-contrasts-within-each-trial",
141
+ stoppingRule: "run-every-preregistered-scenario-no-interim-selection",
142
+ },
143
+ );
144
+ }
145
+
146
+ function verifyPlan(input) {
147
+ const value = snapshotRrsiData(input);
148
+ const rebuilt = buildRrsiStatisticsSimulationPlan(
149
+ Object.fromEntries(KEYS.map((key) => [key, value[key]])),
150
+ );
151
+ if (rrsiCanonical(value) !== rrsiCanonical(rebuilt))
152
+ rrsiFail("simulation plan differs from frozen scenarios");
153
+ return rebuilt;
154
+ }
155
+
156
+ function random(digest) {
157
+ let state = Number.parseInt(digest.slice(7, 15), 16) || 0x6d2b79f5;
158
+ return () => {
159
+ state ^= state << 13;
160
+ state ^= state >>> 17;
161
+ state ^= state << 5;
162
+ return (state >>> 0) / 0x1_0000_0000;
163
+ };
164
+ }
165
+
166
+ function rate(successes, trials, rateCount) {
167
+ const value = successes / trials,
168
+ z = 1.959963984540054;
169
+ const denominator = 1 + (z * z) / trials;
170
+ const center = (value + (z * z) / (2 * trials)) / denominator;
171
+ const margin =
172
+ (z *
173
+ Math.sqrt(
174
+ (value * (1 - value)) / trials + (z * z) / (4 * trials * trials),
175
+ )) /
176
+ denominator;
177
+ const simultaneousMargin = Math.sqrt(
178
+ Math.log((2 * rateCount) / 0.05) / (2 * trials),
179
+ );
180
+ return {
181
+ successes,
182
+ trials,
183
+ estimate: value,
184
+ monteCarlo95: {
185
+ lower: Math.max(0, center - margin),
186
+ upper: Math.min(1, center + margin),
187
+ },
188
+ simultaneousGrid95: {
189
+ lower: Math.max(0, value - simultaneousMargin),
190
+ upper: Math.min(1, value + simultaneousMargin),
191
+ },
192
+ };
193
+ }
194
+
195
+ export function runRrsiStatisticsSimulation(input) {
196
+ const plan = verifyPlan(input);
197
+ const scenarios = [];
198
+ for (const groupCount of plan.clusterCounts)
199
+ for (const weightProfile of plan.weightProfiles)
200
+ for (const law of plan.laws) {
201
+ const taskCounts = Array(groupCount).fill(1);
202
+ if (weightProfile === "one-dominant-component") taskCounts[0] = 100;
203
+ const generator = random(
204
+ rrsiHash("chainlesschain.rrsi-simulation-random/v1", {
205
+ seed: plan.randomnessSeedDigest,
206
+ groupCount,
207
+ weightProfile,
208
+ law: law.id,
209
+ }),
210
+ );
211
+ let coverage = 0,
212
+ power = 0,
213
+ unsupportedPositive = 0,
214
+ degenerateMiss = 0;
215
+ let effectiveGroupCount = null;
216
+ for (let trial = 0; trial < plan.trialCount; trial++) {
217
+ let familyCovered = true,
218
+ allAboveThreshold = true,
219
+ anyUnsupportedPositive = false,
220
+ anyDegenerateMiss = false;
221
+ for (
222
+ let comparison = 0;
223
+ comparison < plan.comparisonCount;
224
+ comparison++
225
+ ) {
226
+ const values = taskCounts.map(() =>
227
+ generator() < law.positiveProbability
228
+ ? law.positive
229
+ : law.negative,
230
+ );
231
+ const intervalInput = {
232
+ values,
233
+ taskCounts,
234
+ alpha: plan.familyAlpha / plan.comparisonCount,
235
+ };
236
+ const fullMethod =
237
+ plan.intervalMethod === RRSI_CLUSTER_ENVELOPE_METHOD;
238
+ const result = fullMethod
239
+ ? computeRrsiClusterEnvelopeInterval({
240
+ ...intervalInput,
241
+ bootstrapSamples: plan.bootstrapSamples,
242
+ randomnessSeedDigest: rrsiHash(
243
+ "chainlesschain.rrsi-simulation-bootstrap/v1",
244
+ {
245
+ seed: plan.randomnessSeedDigest,
246
+ groupCount,
247
+ weightProfile,
248
+ law: law.id,
249
+ trial,
250
+ },
251
+ ),
252
+ })
253
+ : computeRrsiBoundedClusterInterval(intervalInput);
254
+ const interval = fullMethod ? result.confidenceInterval : result;
255
+ effectiveGroupCount = fullMethod
256
+ ? result.boundedInterval.effectiveGroupCount
257
+ : result.effectiveGroupCount;
258
+ familyCovered &&=
259
+ interval.lower <= law.mean + 1e-12 &&
260
+ interval.upper >= law.mean - 1e-12;
261
+ allAboveThreshold &&= interval.lower >= plan.qualityThreshold;
262
+ anyUnsupportedPositive ||= law.mean <= 0 && interval.lower > 0;
263
+ anyDegenerateMiss ||=
264
+ values.every((value) => value === values[0]) &&
265
+ Math.abs(values[0] - law.mean) > 1e-12;
266
+ }
267
+ if (familyCovered) coverage++;
268
+ if (allAboveThreshold) power++;
269
+ if (anyUnsupportedPositive) unsupportedPositive++;
270
+ if (anyDegenerateMiss) degenerateMiss++;
271
+ }
272
+ scenarios.push({
273
+ groupCount,
274
+ weightProfile,
275
+ distribution: law.id,
276
+ trueDelta: law.mean,
277
+ effectiveGroupCount,
278
+ taskCount: taskCounts.reduce((sum, count) => sum + count, 0),
279
+ familyCoverage: rate(
280
+ coverage,
281
+ plan.trialCount,
282
+ plan.simultaneousRateCount,
283
+ ),
284
+ familyThresholdPower: rate(
285
+ power,
286
+ plan.trialCount,
287
+ plan.simultaneousRateCount,
288
+ ),
289
+ unsupportedPositiveFamilyRate: rate(
290
+ unsupportedPositive,
291
+ plan.trialCount,
292
+ plan.simultaneousRateCount,
293
+ ),
294
+ zeroSpreadDiagnosticMissRate: rate(
295
+ degenerateMiss,
296
+ plan.trialCount,
297
+ plan.simultaneousRateCount,
298
+ ),
299
+ });
300
+ }
301
+ const powerEstimates = plan.laws
302
+ .filter((law) => law.mean > plan.qualityThreshold)
303
+ .flatMap((law) =>
304
+ plan.weightProfiles.map((profile) => {
305
+ const eligible = scenarios.filter(
306
+ (row) =>
307
+ row.distribution === law.id &&
308
+ row.weightProfile === profile &&
309
+ row.familyThresholdPower.simultaneousGrid95.lower >=
310
+ plan.targetPower,
311
+ );
312
+ return {
313
+ distribution: law.id,
314
+ weightProfile: profile,
315
+ minimumGridGroupCountMeetingPower: eligible[0]?.groupCount ?? null,
316
+ };
317
+ }),
318
+ );
319
+ const coverageCheckedOnGrid = scenarios.every(
320
+ (row) =>
321
+ row.familyCoverage.simultaneousGrid95.lower >= 1 - plan.familyAlpha,
322
+ );
323
+ return rrsiEnvelope(
324
+ RRSI_STATISTICS_SIMULATION_REPORT_SCHEMA,
325
+ "simulationReportDigest",
326
+ {
327
+ simulationPlanDigest: plan.simulationPlanDigest,
328
+ scope: "preregistered-synthetic-independent-cluster-grid-only",
329
+ intervalMethod: plan.intervalMethod,
330
+ fullAnalysisMethodSimulated:
331
+ plan.intervalMethod === RRSI_CLUSTER_ENVELOPE_METHOD,
332
+ hoeffdingOnlyPowerCannotSelectFullMethodSampleSize:
333
+ plan.intervalMethod === RRSI_BOUNDED_CLUSTER_METHOD,
334
+ familyAlpha: plan.familyAlpha,
335
+ comparisonCount: plan.comparisonCount,
336
+ trialCountPerScenario: plan.trialCount,
337
+ status: coverageCheckedOnGrid ? "synthetic-grid-supported" : "hold",
338
+ scenarios,
339
+ powerEstimates,
340
+ coverageCheckedOnGrid,
341
+ monteCarloIntervalsAreApproximate: true,
342
+ pointwiseWilsonIntervalsAreNotSimultaneous: true,
343
+ sampleGridSelectionUsesSimultaneousBounds: true,
344
+ simultaneousBoundsConditionalOnIndependentMonteCarloTrials: true,
345
+ syntheticRngIsNotProductionEvidence: true,
346
+ threeArmExperimentPowerValidated: false,
347
+ mathematicalGuaranteeConditionalOnIndependentBoundedClusters: true,
348
+ productionCoverageValidated: false,
349
+ productionPowerValidated: false,
350
+ sourceIndependenceVerified: false,
351
+ statisticalProtocolValidated: false,
352
+ },
353
+ );
354
+ }