chainlesschain 0.166.74 → 0.166.77

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 (166) hide show
  1. package/README.md +4 -2
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/assets/{AIOps-BlIvP3k1.js → AIOps-CpiCBhRh.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-DYF7atSV.js → ActionButton-CnU-Xvx-.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-LZYaYek6.js → Analytics-BJW-CNtf.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-BJxrjNbj.js → AppLayout-UFQJL3G9.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-gEDhxhmE.js → Artifacts-Dr_IUDoY.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-B0MR950Q.js → Audit-aglWo6rr.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-3e6Os_Kl.js → BackgroundAgents-Dm_TCiXC.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-DB_X8KUg.js → Backup-DUdX4-gA.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-DTNcvNeG.js → BaseInput-BTcLjy1o.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-SnqdA62j.js → Chat-Bhy9qZrl.js} +5 -5
  13. package/src/assets/web-panel/assets/{ChatBubbleRenderer-BaiWNH_V.js → ChatBubbleRenderer-D0WrJQaQ.js} +1 -1
  14. package/src/assets/web-panel/assets/{Checkbox-Dj0O4dyP.js → Checkbox-CblrPa21.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-BeelW3dx.js → Codegen-SEAHzOlr.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-BmstiyBM.js → Col-DJz8iFOR.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-CrbmFk3f.js → Community-RufKhcQt.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-DCg5ZPIw.js → Compact-Dlifx08U.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-B3sajhq7.js → Compliance-DdhQWcHh.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-DWcdvrDK.js → Cowork-BLNn6oOm.js} +4 -4
  21. package/src/assets/web-panel/assets/{Cron-Bjwp_NDf.js → Cron-Dv-JWY2d.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-BXTLC9o8.js → Crosschain-k7Pz7O-b.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-Di62M46b.js → DID-C_10syUW.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-BQED8Rkt.js → Dashboard-CMyH6Szx.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-DEf9VYaj.js → Dropdown-DjmD2Saa.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-DhFpPMAM.js → EmailListRenderer-36_IRUSo.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-BOqmzkpS.js → EvolutionSettings-CmtU0XmM.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-BxBnJ4fe.js → FamilyGuardDashboard-DEgf9kyP.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-BN9Q8nsZ.js → Federation-DGO1wQls.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-CGeqFEd-.js → FormItemContext-Doj1FmKW.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-DElmWQTc.js → GenericCardRenderer-GzOU27iT.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-BHBSgKck.js → Git-Dd7D1EDK.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-Breo3NTU.js → Governance-6IY8LcjI.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-CCABy4E0.js → Inference-BB9gl8q1.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-B6_ryn-X.js → KnowledgeGraph-CeCed5wd.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-CkmJjJok.js → Logs-CYOeHuaI.js} +2 -2
  37. package/src/assets/web-panel/assets/{MarkdownRenderer-DQEQBaRu.js → MarkdownRenderer-Bk8Zqc2R.js} +1 -1
  38. package/src/assets/web-panel/assets/{Marketplace-iip65jxv.js → Marketplace-D-_xgHgM.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-DDwp_QLb.js → McpTools-NnaUTF5t.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-2ZmNDRkC.js → Memory-CndN9pMt.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-C6HilwZl.js → MobileBridge-BXblFmhY.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-BeMtYRhx.js → MobileProjects-CC26Dm2k.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-Bp-FEcoo.js → Mtc-BhaqWCiW.js} +2 -2
  44. package/src/assets/web-panel/assets/{MtcAudit-DNdkTCe5.js → MtcAudit-D6fktM2w.js} +5 -5
  45. package/src/assets/web-panel/assets/{Multisig-PnKg2_Eo.js → Multisig-CFvahz7s.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-DDp4lZeG.js → NLProgramming-Co73Ivya.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes-DEjFktcO.js → Notes-B4g33L1o.js} +4 -4
  48. package/src/assets/web-panel/assets/{NotificationSettings-FR8fJDAn.js → NotificationSettings-lXd17EbN.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-Cyc-XI0L.js → OrderTableRenderer-BiOB0GIi.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-DNW2E_JU.js → Organization-JQ7_wQIA.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-BHfd6wk6.js → Overflow-gwgJgozQ.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P-COIkaXH4.js → P2P-D9L_0gie.js} +2 -2
  53. package/src/assets/web-panel/assets/{PdhVaultBrowser-DuRP0UeX.js → PdhVaultBrowser-CbOPsFE9.js} +3 -3
  54. package/src/assets/web-panel/assets/{Permissions-BfVRGMy8.js → Permissions-Cz42HNQf.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-BWYjO6Aa.js → PersonalDataHub-DjorYtrF.js} +5 -5
  56. package/src/assets/web-panel/assets/{Pipeline-C0e0fPBW.js → Pipeline-DyWPhmm5.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-CnId4Jv-.js → Privacy-DyfLMl2j.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-CYf1grXg.js → ProjectInit-CyqDx1OE.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-HsXgJdiH.js → ProjectSettings-DsBw0Csy.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-Bi0r9QcC.js → Projects-CRaSI25Z.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-B-Tu_-_4.js → Providers-CCI_klN-.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-CPDqYT2F.js → QrScannerModal-DNsnlDdS.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-Df6qcjXy.js → QuickAsk-B9r2iaee.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-dP6sfGSY.js → Recommend-BJDe03GR.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-VAt9-tM3.js → RemoteSession-J7JR3rRo.js} +3 -3
  66. package/src/assets/web-panel/assets/{Reputation-DtRVRiLI.js → Reputation-DR39AJeV.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-B6Ukqvli.js → Row-Dh77m3NZ.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-DfVRQMrZ.js → RssFeed-BUdg28nJ.js} +2 -2
  69. package/src/assets/web-panel/assets/{Search-CyncAiqQ.js → Search-BNC7sGhj.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-DEO7nrkb.js → Security-DISENGI7.js} +3 -3
  71. package/src/assets/web-panel/assets/{Services-CkusQEhN.js → Services-BBBGpJ1-.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-CbGtO3kc.js → Skeleton-DMcIoIv2.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-diOh0gAr.js → Skills-QAyFbI3r.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-CIu9Ahak.js → Sla-CSg5wLH7.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-_Nzyi4K9.js → SpeechSettings-DMPxTc5x.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-BAOLFlRq.js → SyncSettings-CPG7l30y.js} +2 -2
  77. package/src/assets/web-panel/assets/{Tasks-BpmvL1Eq.js → Tasks-Y1kOVvVL.js} +1 -1
  78. package/src/assets/web-panel/assets/{Templates-Dkr_vRdJ.js → Templates-jt9NagL0.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-kM7lHUFR.js → Tenant-DauuJICx.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-9zfc41aU.js → Terminal-E9rnKeGq.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-Cg_7j6cj.js → TimelineRenderer-Cc7z2APG.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-Cs1aikaM.js → Tokens-CV0UthRA.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-DKYPJ9gl.js → Trigger-BFcJJGfu.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-BFy1Sm8B.js → Trust-BAydbNJA.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-B31L9NBH.js → UkeySign-DcOS6sqL.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-OMmUYdIC.js → VideoEditing-BLHJZvif.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-y3aE7oru.js → Wallet-4QFLKHwW.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-C0ICKvpu.js → WebAuthn-BocEOOSj.js} +5 -5
  89. package/src/assets/web-panel/assets/{WorkflowEditor-Cq5UYbr5.js → WorkflowEditor-DCfF7D0B.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-B1ijaKFv.js → chat-CxvfsYGr.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-CHkI8PDg.js → colors-KtQB9DmQ.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-1BYvgWEs.js → compact-item-Dx4J6arN.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-BGti56u4.js → createContext-Cq0olgzo.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-CmgDNkoO.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-Cr87Fph1.js → hasIn-Bf9-h3D-.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-CS0MIE2C.js → index-0fi8DIVQ.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-DJjnXDAD.js → index-6dDDSCHD.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-tY479EoQ.js → index-B3xfiItB.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BjgtiMdY.js → index-B8WuPI-h.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CQWMHlY7.js → index-BHmdMKYl.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-Bdkrut2A.js → index-BKtQyb2o.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-6Ta8Pg47.js → index-BMcC4cbj.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BA0FMuDX.js → index-BO6XvO-C.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-B4BSM3BK.js → index-B_8UcDan.js} +1 -1
  105. package/src/assets/web-panel/assets/index-BpIZ2S01.js +1 -0
  106. package/src/assets/web-panel/assets/{index-BkFXPrdx.js → index-Br1mDMfO.js} +1 -1
  107. package/src/assets/web-panel/assets/index-C-VmKuyv.js +1 -0
  108. package/src/assets/web-panel/assets/{index-CkcWhgLB.js → index-C9yaUHm9.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DzevrmLK.js → index-CK2U_AHi.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-D6g4jxdE.js → index-CaIclw-E.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CmmSJBNi.js → index-CeYP_kT9.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-BKb16YKp.js → index-Cfsn7N18.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-B1yur8MU.js → index-ClUfSChI.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-1WxCzqYq.js → index-CmQuG0fr.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BYpqBWlt.js → index-CpO6DKuu.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DcoI3ENn.js → index-CqnggDos.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-Bni5GodE.js → index-Cy865Hhq.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CbkGda_k.js → index-Cz7f4Jaq.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-Dam-LB_J.js → index-D2BfSIrn.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-fhpMyq0u.js → index-DBRlZdZj.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CevUJTXd.js → index-DDAe1UmZ.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-Cvu95WPI.js → index-DFdEDvFn.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-CDTNnQDz.js → index-DI5bRqNG.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-B8Jb_cGt.js → index-DMR-keCL.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DCkvhzaY.js → index-DQDR-_ai.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-rVnXNFST.js → index-DZWjYfWt.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-Dnp-4yPc.js → index-DfrFNMvz.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CjBkVrq9.js → index-DnU-dUWd.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-Duv0TfJa.js → index-DsCdl2Od.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-rO6VKJv5.js → index-_FIz-0tp.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-DHJtAEx8.js → index-gt5N6VM_.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-BOjTRSHE.js → index-hSzyoXri.js} +3 -3
  133. package/src/assets/web-panel/assets/{index-CvcpesEZ.js → index-iE9tqEN5.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-C_lEztok.js → index-nmyDOh_b.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-DAGtnwoX.js → initDefaultProps-DvzKJ6o5.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-02FXBi5C.js → motion-D1yTvmxW.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-BLf7rhzJ.js → move-DxtSIF8K.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-Ct6i1vqQ.js → mtc-parser-BDsQgIHY.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-DKvTU8IT.js → omit-UVBJW8kh.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-DqDsKoMe.js → pickAttrs-D4QqtTyX.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-kae6Cnwx.js → placementArrow-QXmu6vBf.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-DzFM_TQf.js → responsiveObserve-D-PmXO9M.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-qDjNFPuM.js → slide-CKbGxEZJ.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-BihSr7G3.js → statusUtils-BbgXPkXm.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-BzoT0TfJ.js → styleChecker-DOr9rk68.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-CjXXcU1j.js → useFlexGapSupport-B2wO2r36.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-DrWcbDJ1.js → useFs-SeVGBK34.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-DO1oBNTE.js → usePersonalDataHub-DUJBCxjD.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-BR6crWko.js → vnode-CF4EYsig.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-DmKLfw6W.js → zoom-pRUs5pqI.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/data/changelog.json +39 -0
  153. package/src/lib/decision-layer/providers.js +84 -9
  154. package/src/lib/decision-layer/runtime.js +86 -49
  155. package/src/lib/direct-model-usage.js +14 -3
  156. package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +2 -0
  157. package/src/lib/evolution/evolution-eval-cohort-enrollment.js +770 -0
  158. package/src/lib/evolution/evolution-eval-contracts.js +86 -0
  159. package/src/lib/evolution/evolution-eval-gate.js +136 -85
  160. package/src/lib/evolution/evolution-eval-launch-admission.js +505 -0
  161. package/src/lib/evolution/skill-target-matrix-eval.js +84 -3
  162. package/src/lib/with-file-lock.js +81 -16
  163. package/src/runtime/headless-runner.js +8 -0
  164. package/src/assets/web-panel/assets/devWarning-Isft1nEX.js +0 -1
  165. package/src/assets/web-panel/assets/index-B_T9NUk7.js +0 -1
  166. package/src/assets/web-panel/assets/index-DBqUxaat.js +0 -1
@@ -0,0 +1,86 @@
1
+ /** Shared evaluation contracts; keep this module free of runtime dependencies. */
2
+
3
+ export const EVOLUTION_EVAL_TASK_SCHEMA =
4
+ "chainlesschain.evolution-eval-task/v1";
5
+ export const EVOLUTION_EVAL_SUITE_SCHEMA =
6
+ "chainlesschain.evolution-eval-suite/v1";
7
+ export const EVOLUTION_EVAL_POLICY_SCHEMA =
8
+ "chainlesschain.evolution-eval-policy/v2";
9
+ export const EVOLUTION_EVAL_RECEIPT_SCHEMA =
10
+ "chainlesschain.evolution-eval-receipt/v4";
11
+ export const EVOLUTION_EVAL_RESULT_EVIDENCE_SCHEMA =
12
+ "chainlesschain.evolution-eval-result-evidence/v1";
13
+ export const EVOLUTION_EVAL_SUITE_AUTHORITY_SCHEMA =
14
+ "chainlesschain.evolution-eval-suite-authority-receipt/v1";
15
+ export const EVOLUTION_EVAL_ENVIRONMENT_SCHEMA =
16
+ "chainlesschain.evolution-eval-environment-receipt/v1";
17
+ export const EVOLUTION_EVAL_ARTIFACT_SCHEMA =
18
+ "chainlesschain.evolution-eval-artifact-resolution-receipt/v1";
19
+ export const EVOLUTION_EVAL_PROVENANCE_SCHEMA =
20
+ "chainlesschain.evolution-eval-provenance-binding-receipt/v1";
21
+ export const EVOLUTION_EVAL_SUBJECT_SCHEMA =
22
+ "chainlesschain.evolution-eval-subject-handle-receipt/v1";
23
+ export const EVOLUTION_EVAL_REPLAY_SCHEMA =
24
+ "chainlesschain.evolution-eval-handle-reservation-receipt/v1";
25
+ export const EVOLUTION_EVAL_SUPERVISION_SCHEMA =
26
+ "chainlesschain.evolution-eval-deadline-enforcement-receipt/v3";
27
+ export const EVOLUTION_EVAL_ISOLATED_TARGET_SCHEMA =
28
+ "chainlesschain.evolution-eval-isolated-target/v2";
29
+ export const EVOLUTION_EVAL_AUTHORITY_DESCRIPTOR_SCHEMA =
30
+ "chainlesschain.evolution-eval-authority-descriptor/v1";
31
+ /**
32
+ * Authority roots commit configuration supplied by a trusted composition
33
+ * boundary. They are not local proofs that JavaScript callable bytes match a
34
+ * declared handlerArtifactDigest. Production must use an attested loader that
35
+ * binds each descriptor to the loaded callable; requests and plugins must not
36
+ * construct Gate/Verifier authority ports.
37
+ */
38
+ export const EVOLUTION_EVAL_AUTHORITY_ROOT_SEMANTICS = Object.freeze({
39
+ kind: "trusted-composition-configuration-commitment",
40
+ callableBinding: "attested-loader-required",
41
+ requestConstructedAuthorities: "forbidden",
42
+ });
43
+ export const EVOLUTION_EVAL_TARGET_INVOCATION_SCHEMA =
44
+ "chainlesschain.evolution-eval-target-invocation/v2";
45
+ export const EVOLUTION_EVAL_TARGET_REVOCATION_SCHEMA =
46
+ "chainlesschain.evolution-eval-target-revocation/v2";
47
+ export const EVOLUTION_EVAL_EXECUTION_SCHEMA =
48
+ "chainlesschain.evolution-eval-execution-receipt/v1";
49
+ export const EVOLUTION_EVAL_GRADE_SCHEMA =
50
+ "chainlesschain.evolution-eval-grade-receipt/v1";
51
+ export const EVOLUTION_EVAL_SAFETY_SCHEMA =
52
+ "chainlesschain.evolution-eval-safety-receipt/v1";
53
+
54
+ export const EVOLUTION_EVAL_INVALID_CODE = "CC_EVOLUTION_EVAL_INVALID";
55
+ export const EVOLUTION_EVAL_LEAKAGE_CODE = "CC_EVOLUTION_EVAL_LEAKAGE";
56
+ export const EVOLUTION_EVAL_AUTHORITY_FAILED_CODE =
57
+ "CC_EVOLUTION_EVAL_AUTHORITY_FAILED";
58
+ export const EVOLUTION_EVAL_EXECUTION_FAILED_CODE =
59
+ "CC_EVOLUTION_EVAL_EXECUTION_FAILED";
60
+ export const EVOLUTION_EVAL_GRADER_FAILED_CODE =
61
+ "CC_EVOLUTION_EVAL_GRADER_FAILED";
62
+ export const EVOLUTION_EVAL_SAFETY_FAILED_CODE =
63
+ "CC_EVOLUTION_EVAL_SAFETY_FAILED";
64
+ export const EVOLUTION_EVAL_SUPERVISOR_UNRESPONSIVE_CODE =
65
+ "CC_EVOLUTION_EVAL_SUPERVISOR_UNRESPONSIVE";
66
+ export const EVOLUTION_EVAL_TARGET_SETTLEMENT_UNCONFIRMED_CODE =
67
+ "CC_EVOLUTION_EVAL_TARGET_SETTLEMENT_UNCONFIRMED";
68
+
69
+ export const EVOLUTION_EVAL_ATTESTATION_PURPOSES = Object.freeze({
70
+ suite: "chainlesschain.evolution-eval.suite-authority/v1",
71
+ environment: "chainlesschain.evolution-eval.environment/v1",
72
+ artifact: "chainlesschain.evolution-eval.artifact/v1",
73
+ provenance: "chainlesschain.evolution-eval.provenance/v1",
74
+ subject: "chainlesschain.evolution-eval.subject/v1",
75
+ replay: "chainlesschain.evolution-eval.handle-replay/v1",
76
+ supervisor: "chainlesschain.evolution-eval.deadline-supervisor/v3",
77
+ targetInvocation:
78
+ "chainlesschain.evolution-eval.target-invocation-evidence/v1",
79
+ targetRevocation:
80
+ "chainlesschain.evolution-eval.target-revocation-evidence/v1",
81
+ execution: "chainlesschain.evolution-eval.execution/v1",
82
+ grade: "chainlesschain.evolution-eval.grade/v1",
83
+ safety: "chainlesschain.evolution-eval.safety/v1",
84
+ receipt: "chainlesschain.evolution-eval.receipt/v3",
85
+ clock: "chainlesschain.evolution-eval.trusted-clock/v1",
86
+ });
@@ -9,91 +9,44 @@
9
9
 
10
10
  import { createHash, randomBytes } from "node:crypto";
11
11
  import { isProxy } from "node:util/types";
12
-
13
- export const EVOLUTION_EVAL_TASK_SCHEMA =
14
- "chainlesschain.evolution-eval-task/v1";
15
- export const EVOLUTION_EVAL_SUITE_SCHEMA =
16
- "chainlesschain.evolution-eval-suite/v1";
17
- export const EVOLUTION_EVAL_POLICY_SCHEMA =
18
- "chainlesschain.evolution-eval-policy/v2";
19
- export const EVOLUTION_EVAL_RECEIPT_SCHEMA =
20
- "chainlesschain.evolution-eval-receipt/v4";
21
- export const EVOLUTION_EVAL_RESULT_EVIDENCE_SCHEMA =
22
- "chainlesschain.evolution-eval-result-evidence/v1";
23
- export const EVOLUTION_EVAL_SUITE_AUTHORITY_SCHEMA =
24
- "chainlesschain.evolution-eval-suite-authority-receipt/v1";
25
- export const EVOLUTION_EVAL_ENVIRONMENT_SCHEMA =
26
- "chainlesschain.evolution-eval-environment-receipt/v1";
27
- export const EVOLUTION_EVAL_ARTIFACT_SCHEMA =
28
- "chainlesschain.evolution-eval-artifact-resolution-receipt/v1";
29
- export const EVOLUTION_EVAL_PROVENANCE_SCHEMA =
30
- "chainlesschain.evolution-eval-provenance-binding-receipt/v1";
31
- export const EVOLUTION_EVAL_SUBJECT_SCHEMA =
32
- "chainlesschain.evolution-eval-subject-handle-receipt/v1";
33
- export const EVOLUTION_EVAL_REPLAY_SCHEMA =
34
- "chainlesschain.evolution-eval-handle-reservation-receipt/v1";
35
- export const EVOLUTION_EVAL_SUPERVISION_SCHEMA =
36
- "chainlesschain.evolution-eval-deadline-enforcement-receipt/v3";
37
- export const EVOLUTION_EVAL_ISOLATED_TARGET_SCHEMA =
38
- "chainlesschain.evolution-eval-isolated-target/v2";
39
- export const EVOLUTION_EVAL_AUTHORITY_DESCRIPTOR_SCHEMA =
40
- "chainlesschain.evolution-eval-authority-descriptor/v1";
41
- /**
42
- * Authority roots commit configuration supplied by a trusted composition
43
- * boundary. They are not local proofs that JavaScript callable bytes match a
44
- * declared handlerArtifactDigest. Production must use an attested loader that
45
- * binds each descriptor to the loaded callable; requests and plugins must not
46
- * construct Gate/Verifier authority ports.
47
- */
48
- export const EVOLUTION_EVAL_AUTHORITY_ROOT_SEMANTICS = Object.freeze({
49
- kind: "trusted-composition-configuration-commitment",
50
- callableBinding: "attested-loader-required",
51
- requestConstructedAuthorities: "forbidden",
52
- });
53
- export const EVOLUTION_EVAL_TARGET_INVOCATION_SCHEMA =
54
- "chainlesschain.evolution-eval-target-invocation/v2";
55
- export const EVOLUTION_EVAL_TARGET_REVOCATION_SCHEMA =
56
- "chainlesschain.evolution-eval-target-revocation/v2";
57
- export const EVOLUTION_EVAL_EXECUTION_SCHEMA =
58
- "chainlesschain.evolution-eval-execution-receipt/v1";
59
- export const EVOLUTION_EVAL_GRADE_SCHEMA =
60
- "chainlesschain.evolution-eval-grade-receipt/v1";
61
- export const EVOLUTION_EVAL_SAFETY_SCHEMA =
62
- "chainlesschain.evolution-eval-safety-receipt/v1";
63
-
64
- export const EVOLUTION_EVAL_INVALID_CODE = "CC_EVOLUTION_EVAL_INVALID";
65
- export const EVOLUTION_EVAL_LEAKAGE_CODE = "CC_EVOLUTION_EVAL_LEAKAGE";
66
- export const EVOLUTION_EVAL_AUTHORITY_FAILED_CODE =
67
- "CC_EVOLUTION_EVAL_AUTHORITY_FAILED";
68
- export const EVOLUTION_EVAL_EXECUTION_FAILED_CODE =
69
- "CC_EVOLUTION_EVAL_EXECUTION_FAILED";
70
- export const EVOLUTION_EVAL_GRADER_FAILED_CODE =
71
- "CC_EVOLUTION_EVAL_GRADER_FAILED";
72
- export const EVOLUTION_EVAL_SAFETY_FAILED_CODE =
73
- "CC_EVOLUTION_EVAL_SAFETY_FAILED";
74
- export const EVOLUTION_EVAL_SUPERVISOR_UNRESPONSIVE_CODE =
75
- "CC_EVOLUTION_EVAL_SUPERVISOR_UNRESPONSIVE";
76
- export const EVOLUTION_EVAL_TARGET_SETTLEMENT_UNCONFIRMED_CODE =
77
- "CC_EVOLUTION_EVAL_TARGET_SETTLEMENT_UNCONFIRMED";
78
-
79
- export const EVOLUTION_EVAL_ATTESTATION_PURPOSES = Object.freeze({
80
- suite: "chainlesschain.evolution-eval.suite-authority/v1",
81
- environment: "chainlesschain.evolution-eval.environment/v1",
82
- artifact: "chainlesschain.evolution-eval.artifact/v1",
83
- provenance: "chainlesschain.evolution-eval.provenance/v1",
84
- subject: "chainlesschain.evolution-eval.subject/v1",
85
- replay: "chainlesschain.evolution-eval.handle-replay/v1",
86
- supervisor: "chainlesschain.evolution-eval.deadline-supervisor/v3",
87
- targetInvocation:
88
- "chainlesschain.evolution-eval.target-invocation-evidence/v1",
89
- targetRevocation:
90
- "chainlesschain.evolution-eval.target-revocation-evidence/v1",
91
- execution: "chainlesschain.evolution-eval.execution/v1",
92
- grade: "chainlesschain.evolution-eval.grade/v1",
93
- safety: "chainlesschain.evolution-eval.safety/v1",
94
- receipt: "chainlesschain.evolution-eval.receipt/v3",
95
- clock: "chainlesschain.evolution-eval.trusted-clock/v1",
96
- });
12
+ import {
13
+ admitEvolutionEvalLaunch,
14
+ captureEvolutionEvalLaunchAdmissionBinding,
15
+ isEvolutionEvalLaunchAdmissionAuthority,
16
+ } from "./evolution-eval-launch-admission.js";
17
+
18
+ import {
19
+ EVOLUTION_EVAL_TASK_SCHEMA,
20
+ EVOLUTION_EVAL_SUITE_SCHEMA,
21
+ EVOLUTION_EVAL_POLICY_SCHEMA,
22
+ EVOLUTION_EVAL_RECEIPT_SCHEMA,
23
+ EVOLUTION_EVAL_RESULT_EVIDENCE_SCHEMA,
24
+ EVOLUTION_EVAL_SUITE_AUTHORITY_SCHEMA,
25
+ EVOLUTION_EVAL_ENVIRONMENT_SCHEMA,
26
+ EVOLUTION_EVAL_ARTIFACT_SCHEMA,
27
+ EVOLUTION_EVAL_PROVENANCE_SCHEMA,
28
+ EVOLUTION_EVAL_SUBJECT_SCHEMA,
29
+ EVOLUTION_EVAL_REPLAY_SCHEMA,
30
+ EVOLUTION_EVAL_SUPERVISION_SCHEMA,
31
+ EVOLUTION_EVAL_ISOLATED_TARGET_SCHEMA,
32
+ EVOLUTION_EVAL_AUTHORITY_DESCRIPTOR_SCHEMA,
33
+ EVOLUTION_EVAL_AUTHORITY_ROOT_SEMANTICS,
34
+ EVOLUTION_EVAL_TARGET_INVOCATION_SCHEMA,
35
+ EVOLUTION_EVAL_TARGET_REVOCATION_SCHEMA,
36
+ EVOLUTION_EVAL_EXECUTION_SCHEMA,
37
+ EVOLUTION_EVAL_GRADE_SCHEMA,
38
+ EVOLUTION_EVAL_SAFETY_SCHEMA,
39
+ EVOLUTION_EVAL_INVALID_CODE,
40
+ EVOLUTION_EVAL_LEAKAGE_CODE,
41
+ EVOLUTION_EVAL_AUTHORITY_FAILED_CODE,
42
+ EVOLUTION_EVAL_EXECUTION_FAILED_CODE,
43
+ EVOLUTION_EVAL_GRADER_FAILED_CODE,
44
+ EVOLUTION_EVAL_SAFETY_FAILED_CODE,
45
+ EVOLUTION_EVAL_SUPERVISOR_UNRESPONSIVE_CODE,
46
+ EVOLUTION_EVAL_TARGET_SETTLEMENT_UNCONFIRMED_CODE,
47
+ EVOLUTION_EVAL_ATTESTATION_PURPOSES,
48
+ } from "./evolution-eval-contracts.js";
49
+ export * from "./evolution-eval-contracts.js";
97
50
 
98
51
  const DIGEST_PATTERN = /^sha256:[a-f0-9]{64}$/u;
99
52
  const TASK_BINDING_NONCE_PATTERN = /^task-binding-[a-f0-9]{48,128}$/u;
@@ -713,6 +666,7 @@ const RECEIPT_KEYS = new Set([
713
666
  const SPLIT_COUNT_KEYS = new Set(SPLITS);
714
667
 
715
668
  const GATE_INSTANCES = new WeakSet();
669
+ const GATE_LAUNCH_BINDINGS = new WeakMap();
716
670
  const RECEIPT_VERIFIER_INSTANCES = new WeakSet();
717
671
  const IMMUTABLE_ISOLATED_TARGET_BINDINGS = new WeakMap();
718
672
 
@@ -1813,6 +1767,26 @@ function normalizeRunEvaluationContext(value) {
1813
1767
  });
1814
1768
  }
1815
1769
 
1770
+ /** Freeze the exact caller-controlled part of a launch before a run ID exists. */
1771
+ export function computeEvolutionEvalLaunchRequestDigest(input) {
1772
+ preflightCanonicalStructure(input);
1773
+ assertExactRecord(input, RUN_REQUEST_KEYS, "evaluation launch request");
1774
+ return digest(
1775
+ {
1776
+ suiteRef: normalizeId(input.suiteRef, "suiteRef", 256),
1777
+ candidateId: normalizeDigest(input.candidateId, "candidateId"),
1778
+ baselineId: normalizeDigest(input.baselineId, "baselineId"),
1779
+ targetEnvironmentRef: normalizeId(
1780
+ input.targetEnvironmentRef,
1781
+ "targetEnvironmentRef",
1782
+ 256,
1783
+ ),
1784
+ evaluationContext: normalizeRunEvaluationContext(input.evaluationContext),
1785
+ },
1786
+ "chainlesschain.evolution-eval-launch-request/v1",
1787
+ );
1788
+ }
1789
+
1816
1790
  function normalizeEvaluationContext(value) {
1817
1791
  preflightCanonicalStructure(value);
1818
1792
  assertExactRecord(value, EVALUATION_CONTEXT_KEYS, "evaluation context");
@@ -3631,6 +3605,7 @@ export class EvolutionEvalGate {
3631
3605
  #authorityPolicies;
3632
3606
  #supervision;
3633
3607
  #clock;
3608
+ #launchAdmission;
3634
3609
 
3635
3610
  constructor({
3636
3611
  policy,
@@ -3655,7 +3630,24 @@ export class EvolutionEvalGate {
3655
3630
  invocationEvidenceVerifier,
3656
3631
  revocationEvidenceVerifier,
3657
3632
  clock,
3633
+ launchAdmission,
3658
3634
  }) {
3635
+ if (
3636
+ launchAdmission !== undefined &&
3637
+ !isEvolutionEvalLaunchAdmissionAuthority(launchAdmission)
3638
+ ) {
3639
+ throw evalError(
3640
+ EVOLUTION_EVAL_INVALID_CODE,
3641
+ "launchAdmission must be a trusted admission authority",
3642
+ );
3643
+ }
3644
+ this.#launchAdmission = launchAdmission;
3645
+ GATE_LAUNCH_BINDINGS.set(
3646
+ this,
3647
+ launchAdmission === undefined
3648
+ ? null
3649
+ : captureEvolutionEvalLaunchAdmissionBinding(launchAdmission),
3650
+ );
3659
3651
  this.#policy = verifyEvolutionEvalPolicy(policy);
3660
3652
  this.#authorityPolicies = normalizeAuthorityPolicies(authorityPolicies);
3661
3653
  const supervisorPolicy = this.#authorityPolicies.supervisor;
@@ -5440,6 +5432,54 @@ export class EvolutionEvalGate {
5440
5432
  const deadlineMs = started.milliseconds + this.#policy.maxWallClockMs;
5441
5433
  const deadlineAt = new Date(deadlineMs).toISOString();
5442
5434
 
5435
+ if (this.#launchAdmission) {
5436
+ const binding = GATE_LAUNCH_BINDINGS.get(this);
5437
+ const requestDigest = computeEvolutionEvalLaunchRequestDigest({
5438
+ suiteRef,
5439
+ candidateId,
5440
+ baselineId,
5441
+ targetEnvironmentRef,
5442
+ evaluationContext,
5443
+ });
5444
+ if (binding.descriptor.planDigest !== evaluationContext.planDigest) {
5445
+ throw evalError(
5446
+ EVOLUTION_EVAL_INVALID_CODE,
5447
+ "launch admission plan differs from the evaluation run context",
5448
+ );
5449
+ }
5450
+ if (
5451
+ binding.expectedRequest &&
5452
+ (binding.expectedRequest.requestDigest !== requestDigest ||
5453
+ binding.expectedRequest.policyDigest !== this.#policy.policyDigest ||
5454
+ binding.expectedRequest.evaluationAuthorityRoot !==
5455
+ this.#evaluationAuthorityRoot)
5456
+ ) {
5457
+ throw evalError(
5458
+ EVOLUTION_EVAL_INVALID_CODE,
5459
+ "evaluation run differs from its enrolled launch request",
5460
+ );
5461
+ }
5462
+ await admitEvolutionEvalLaunch(this.#launchAdmission, {
5463
+ runId,
5464
+ runNonce,
5465
+ requestDigest,
5466
+ policyDigest: this.#policy.policyDigest,
5467
+ evaluationAuthorityRoot: this.#evaluationAuthorityRoot,
5468
+ tenantId: this.#tenantId,
5469
+ admittedAt: started.timestamp,
5470
+ deadlineAt,
5471
+ });
5472
+ if (
5473
+ NATIVE_MONOTONIC_NOW() >= runLocalDeadlineMs ||
5474
+ readClock(this.#clock).milliseconds >= deadlineMs
5475
+ ) {
5476
+ throw evalError(
5477
+ EVOLUTION_EVAL_AUTHORITY_FAILED_CODE,
5478
+ "launch admission crossed the evaluation deadline",
5479
+ );
5480
+ }
5481
+ }
5482
+
5443
5483
  const suiteRequest = deepFreeze({
5444
5484
  runId,
5445
5485
  runNonce,
@@ -6535,6 +6575,17 @@ export function isEvolutionEvalGate(value) {
6535
6575
  return GATE_INSTANCES.has(value);
6536
6576
  }
6537
6577
 
6578
+ /** Read-only composition check; the authority capability itself stays private. */
6579
+ export function captureEvolutionEvalGateLaunchAdmissionBinding(gate) {
6580
+ if (!GATE_INSTANCES.has(gate)) {
6581
+ throw evalError(
6582
+ EVOLUTION_EVAL_INVALID_CODE,
6583
+ "a branded EvolutionEvalGate is required",
6584
+ );
6585
+ }
6586
+ return GATE_LAUNCH_BINDINGS.get(gate);
6587
+ }
6588
+
6538
6589
  export function isEvolutionEvalReceiptVerifier(value) {
6539
6590
  return RECEIPT_VERIFIER_INSTANCES.has(value);
6540
6591
  }