@sourcey/catalog-verifier 1.1.3 → 1.1.5

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 (488) hide show
  1. package/SBOM.cdx.json +16 -16
  2. package/SOURCEY-CLOSURE.json +580 -580
  3. package/SOURCEY-DISTRIBUTION.json +1 -1
  4. package/THIRD_PARTY_NOTICES.json +6 -6
  5. package/dist/contracts/agent-readiness/src/authority.d.ts +51 -0
  6. package/dist/contracts/agent-readiness/src/authority.d.ts.map +1 -0
  7. package/dist/contracts/agent-readiness/src/authority.js +36 -0
  8. package/dist/contracts/agent-readiness/src/authority.js.map +1 -0
  9. package/dist/contracts/agent-readiness/src/binding.d.ts +600 -0
  10. package/dist/contracts/agent-readiness/src/binding.d.ts.map +1 -0
  11. package/dist/contracts/agent-readiness/src/binding.js +466 -0
  12. package/dist/contracts/agent-readiness/src/binding.js.map +1 -0
  13. package/dist/contracts/agent-readiness/src/declaration-acquisition.d.ts +484 -202
  14. package/dist/contracts/agent-readiness/src/declaration-acquisition.d.ts.map +1 -1
  15. package/dist/contracts/agent-readiness/src/declaration-acquisition.js +13 -11
  16. package/dist/contracts/agent-readiness/src/declaration-acquisition.js.map +1 -1
  17. package/dist/contracts/agent-readiness/src/declaration-reference.d.ts +4 -7
  18. package/dist/contracts/agent-readiness/src/declaration-reference.d.ts.map +1 -1
  19. package/dist/contracts/agent-readiness/src/declaration-reference.js +3 -6
  20. package/dist/contracts/agent-readiness/src/declaration-reference.js.map +1 -1
  21. package/dist/contracts/agent-readiness/src/declaration.d.ts +1930 -334
  22. package/dist/contracts/agent-readiness/src/declaration.d.ts.map +1 -1
  23. package/dist/contracts/agent-readiness/src/declaration.js +73 -78
  24. package/dist/contracts/agent-readiness/src/declaration.js.map +1 -1
  25. package/dist/contracts/agent-readiness/src/index.d.ts +3512 -4412
  26. package/dist/contracts/agent-readiness/src/index.d.ts.map +1 -1
  27. package/dist/contracts/agent-readiness/src/index.js +227 -936
  28. package/dist/contracts/agent-readiness/src/index.js.map +1 -1
  29. package/dist/contracts/agent-readiness/src/jobs.d.ts +199 -0
  30. package/dist/contracts/agent-readiness/src/jobs.d.ts.map +1 -0
  31. package/dist/contracts/agent-readiness/src/jobs.js +125 -0
  32. package/dist/contracts/agent-readiness/src/jobs.js.map +1 -0
  33. package/dist/contracts/agent-readiness/src/operate-policy.d.ts +251 -0
  34. package/dist/contracts/agent-readiness/src/operate-policy.d.ts.map +1 -0
  35. package/dist/contracts/agent-readiness/src/operate-policy.js +86 -0
  36. package/dist/contracts/agent-readiness/src/operate-policy.js.map +1 -0
  37. package/dist/contracts/agent-readiness/src/run.d.ts +485 -0
  38. package/dist/contracts/agent-readiness/src/run.d.ts.map +1 -0
  39. package/dist/contracts/agent-readiness/src/run.js +308 -0
  40. package/dist/contracts/agent-readiness/src/run.js.map +1 -0
  41. package/dist/contracts/agent-readiness/src/shared.d.ts +53 -62
  42. package/dist/contracts/agent-readiness/src/shared.d.ts.map +1 -1
  43. package/dist/contracts/agent-readiness/src/shared.js +51 -85
  44. package/dist/contracts/agent-readiness/src/shared.js.map +1 -1
  45. package/dist/contracts/api/src/index.d.ts +15206 -15810
  46. package/dist/contracts/api/src/index.d.ts.map +1 -1
  47. package/dist/contracts/api/src/index.js +93 -80
  48. package/dist/contracts/api/src/index.js.map +1 -1
  49. package/dist/contracts/artifact/src/index.d.ts +135 -71
  50. package/dist/contracts/artifact/src/index.d.ts.map +1 -1
  51. package/dist/contracts/artifact/src/index.js +16 -12
  52. package/dist/contracts/artifact/src/index.js.map +1 -1
  53. package/dist/contracts/assets/src/index.d.ts +0 -129
  54. package/dist/contracts/assets/src/index.d.ts.map +1 -1
  55. package/dist/contracts/assets/src/index.js +4 -4
  56. package/dist/contracts/assets/src/index.js.map +1 -1
  57. package/dist/contracts/assurance/src/index.d.ts +0 -1
  58. package/dist/contracts/assurance/src/index.d.ts.map +1 -1
  59. package/dist/contracts/authoring/src/index.d.ts +48 -247
  60. package/dist/contracts/authoring/src/index.d.ts.map +1 -1
  61. package/dist/contracts/authoring/src/index.js +4 -7
  62. package/dist/contracts/authoring/src/index.js.map +1 -1
  63. package/dist/contracts/authority/src/index.d.ts +0 -3
  64. package/dist/contracts/authority/src/index.d.ts.map +1 -1
  65. package/dist/contracts/authority/src/index.js +1 -2
  66. package/dist/contracts/authority/src/index.js.map +1 -1
  67. package/dist/contracts/billing/src/index.d.ts +0 -124
  68. package/dist/contracts/billing/src/index.d.ts.map +1 -1
  69. package/dist/contracts/billing/src/index.js +2 -58
  70. package/dist/contracts/billing/src/index.js.map +1 -1
  71. package/dist/contracts/catalog-verifier/src/index.d.ts +0 -3
  72. package/dist/contracts/catalog-verifier/src/index.d.ts.map +1 -1
  73. package/dist/contracts/company-authoring/src/index.d.ts +72 -0
  74. package/dist/contracts/company-authoring/src/index.d.ts.map +1 -0
  75. package/dist/contracts/company-authoring/src/index.js +41 -0
  76. package/dist/contracts/company-authoring/src/index.js.map +1 -0
  77. package/dist/contracts/company-standing/src/index.d.ts +106 -0
  78. package/dist/contracts/company-standing/src/index.d.ts.map +1 -0
  79. package/dist/contracts/company-standing/src/index.js +114 -0
  80. package/dist/contracts/company-standing/src/index.js.map +1 -0
  81. package/dist/contracts/company-verification/src/index.d.ts +94 -0
  82. package/dist/contracts/company-verification/src/index.d.ts.map +1 -0
  83. package/dist/contracts/company-verification/src/index.js +138 -0
  84. package/dist/contracts/company-verification/src/index.js.map +1 -0
  85. package/dist/contracts/datasets/src/index.d.ts +80 -129
  86. package/dist/contracts/datasets/src/index.d.ts.map +1 -1
  87. package/dist/contracts/events/src/index.d.ts +41 -5
  88. package/dist/contracts/events/src/index.d.ts.map +1 -1
  89. package/dist/contracts/events/src/index.js +51 -12
  90. package/dist/contracts/events/src/index.js.map +1 -1
  91. package/dist/contracts/evidence/src/index.d.ts +10 -267
  92. package/dist/contracts/evidence/src/index.d.ts.map +1 -1
  93. package/dist/contracts/evidence/src/index.js +29 -93
  94. package/dist/contracts/evidence/src/index.js.map +1 -1
  95. package/dist/contracts/feed/src/index.d.ts +0 -3
  96. package/dist/contracts/feed/src/index.d.ts.map +1 -1
  97. package/dist/contracts/observations/src/index.d.ts +0 -1
  98. package/dist/contracts/observations/src/index.d.ts.map +1 -1
  99. package/dist/contracts/observations/src/index.js +1 -4
  100. package/dist/contracts/observations/src/index.js.map +1 -1
  101. package/dist/contracts/policies/src/index.d.ts +0 -13
  102. package/dist/contracts/policies/src/index.d.ts.map +1 -1
  103. package/dist/contracts/policies/src/index.js +3 -2
  104. package/dist/contracts/policies/src/index.js.map +1 -1
  105. package/dist/contracts/publication/src/index.d.ts +282 -1285
  106. package/dist/contracts/publication/src/index.d.ts.map +1 -1
  107. package/dist/contracts/publication/src/index.js +22 -162
  108. package/dist/contracts/publication/src/index.js.map +1 -1
  109. package/dist/contracts/release/src/index.d.ts +120 -21
  110. package/dist/contracts/release/src/index.d.ts.map +1 -1
  111. package/dist/contracts/release/src/index.js +14 -2
  112. package/dist/contracts/release/src/index.js.map +1 -1
  113. package/dist/contracts/revisions/src/index.d.ts +107 -69
  114. package/dist/contracts/revisions/src/index.d.ts.map +1 -1
  115. package/dist/contracts/revisions/src/index.js +26 -8
  116. package/dist/contracts/revisions/src/index.js.map +1 -1
  117. package/dist/contracts/routes/src/index.d.ts +1 -17
  118. package/dist/contracts/routes/src/index.d.ts.map +1 -1
  119. package/dist/contracts/routes/src/index.js +7 -7
  120. package/dist/contracts/routes/src/index.js.map +1 -1
  121. package/dist/contracts/sourcey-publication/src/ownership.d.ts.map +1 -1
  122. package/dist/contracts/sourcey-publication/src/ownership.js +3 -1
  123. package/dist/contracts/sourcey-publication/src/ownership.js.map +1 -1
  124. package/dist/contracts/standards/src/index.d.ts +0 -1552
  125. package/dist/contracts/standards/src/index.d.ts.map +1 -1
  126. package/dist/contracts/standards/src/index.js +1 -723
  127. package/dist/contracts/standards/src/index.js.map +1 -1
  128. package/dist/contracts/startup-credits-commercial/src/index.d.ts +53 -382
  129. package/dist/contracts/startup-credits-commercial/src/index.d.ts.map +1 -1
  130. package/dist/contracts/startup-credits-commercial/src/index.js +30 -267
  131. package/dist/contracts/startup-credits-commercial/src/index.js.map +1 -1
  132. package/dist/modules/agent-readiness-engine/src/assertions.d.ts +24 -0
  133. package/dist/modules/agent-readiness-engine/src/assertions.d.ts.map +1 -0
  134. package/dist/modules/agent-readiness-engine/src/assertions.js +145 -0
  135. package/dist/modules/agent-readiness-engine/src/assertions.js.map +1 -0
  136. package/dist/modules/agent-readiness-engine/src/binding.d.ts +12 -0
  137. package/dist/modules/agent-readiness-engine/src/binding.d.ts.map +1 -0
  138. package/dist/modules/agent-readiness-engine/src/binding.js +104 -0
  139. package/dist/modules/agent-readiness-engine/src/binding.js.map +1 -0
  140. package/dist/modules/agent-readiness-engine/src/checks.d.ts +57 -0
  141. package/dist/modules/agent-readiness-engine/src/checks.d.ts.map +1 -0
  142. package/dist/modules/agent-readiness-engine/src/checks.js +126 -0
  143. package/dist/modules/agent-readiness-engine/src/checks.js.map +1 -0
  144. package/dist/modules/agent-readiness-engine/src/path.d.ts +24 -0
  145. package/dist/modules/agent-readiness-engine/src/path.d.ts.map +1 -0
  146. package/dist/modules/agent-readiness-engine/src/path.js +308 -0
  147. package/dist/modules/agent-readiness-engine/src/path.js.map +1 -0
  148. package/dist/modules/agent-readiness-engine/src/rate.d.ts +23 -0
  149. package/dist/modules/agent-readiness-engine/src/rate.d.ts.map +1 -0
  150. package/dist/modules/agent-readiness-engine/src/rate.js +57 -0
  151. package/dist/modules/agent-readiness-engine/src/rate.js.map +1 -0
  152. package/dist/modules/agent-readiness-engine/src/run.d.ts +9 -0
  153. package/dist/modules/agent-readiness-engine/src/run.d.ts.map +1 -0
  154. package/dist/modules/agent-readiness-engine/src/run.js +45 -0
  155. package/dist/modules/agent-readiness-engine/src/run.js.map +1 -0
  156. package/dist/modules/agent-readiness-engine/src/templates.d.ts +21 -0
  157. package/dist/modules/agent-readiness-engine/src/templates.d.ts.map +1 -0
  158. package/dist/modules/agent-readiness-engine/src/templates.js +89 -0
  159. package/dist/modules/agent-readiness-engine/src/templates.js.map +1 -0
  160. package/dist/modules/agent-readiness-jobs/src/index.d.ts +196 -0
  161. package/dist/modules/agent-readiness-jobs/src/index.d.ts.map +1 -0
  162. package/dist/modules/agent-readiness-jobs/src/index.js +186 -0
  163. package/dist/modules/agent-readiness-jobs/src/index.js.map +1 -0
  164. package/dist/modules/agent-readiness-policy/src/current-policy.d.ts +64 -235
  165. package/dist/modules/agent-readiness-policy/src/current-policy.d.ts.map +1 -1
  166. package/dist/modules/agent-readiness-policy/src/current-policy.js +10 -466
  167. package/dist/modules/agent-readiness-policy/src/current-policy.js.map +1 -1
  168. package/dist/modules/agent-readiness-policy/src/declaration-jobs.d.ts +20 -0
  169. package/dist/modules/agent-readiness-policy/src/declaration-jobs.d.ts.map +1 -0
  170. package/dist/modules/agent-readiness-policy/src/declaration-jobs.js +32 -0
  171. package/dist/modules/agent-readiness-policy/src/declaration-jobs.js.map +1 -0
  172. package/dist/modules/agent-readiness-policy/src/impact.d.ts +1 -80
  173. package/dist/modules/agent-readiness-policy/src/impact.d.ts.map +1 -1
  174. package/dist/modules/agent-readiness-policy/src/impact.js +2 -189
  175. package/dist/modules/agent-readiness-policy/src/impact.js.map +1 -1
  176. package/dist/modules/agent-readiness-policy/src/index.d.ts +21 -788
  177. package/dist/modules/agent-readiness-policy/src/index.d.ts.map +1 -1
  178. package/dist/modules/agent-readiness-policy/src/index.js +137 -451
  179. package/dist/modules/agent-readiness-policy/src/index.js.map +1 -1
  180. package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts +0 -5
  181. package/dist/modules/agent-readiness-policy/src/offer-relations.d.ts.map +1 -1
  182. package/dist/modules/agent-readiness-policy/src/offer-relations.js +2 -4
  183. package/dist/modules/agent-readiness-policy/src/offer-relations.js.map +1 -1
  184. package/dist/modules/agent-readiness-policy/src/operate-policy.d.ts +16 -0
  185. package/dist/modules/agent-readiness-policy/src/operate-policy.d.ts.map +1 -0
  186. package/dist/modules/agent-readiness-policy/src/operate-policy.js +110 -0
  187. package/dist/modules/agent-readiness-policy/src/operate-policy.js.map +1 -0
  188. package/dist/modules/agent-readiness-policy/src/prior-projection.d.ts +3 -0
  189. package/dist/modules/agent-readiness-policy/src/prior-projection.d.ts.map +1 -0
  190. package/dist/modules/agent-readiness-policy/src/prior-projection.js +11 -0
  191. package/dist/modules/agent-readiness-policy/src/prior-projection.js.map +1 -0
  192. package/dist/modules/agent-readiness-policy/src/revision.d.ts +13 -2
  193. package/dist/modules/agent-readiness-policy/src/revision.d.ts.map +1 -1
  194. package/dist/modules/agent-readiness-policy/src/revision.js +79 -38
  195. package/dist/modules/agent-readiness-policy/src/revision.js.map +1 -1
  196. package/dist/modules/agent-readiness-repository/src/change.d.ts +3 -4
  197. package/dist/modules/agent-readiness-repository/src/change.d.ts.map +1 -1
  198. package/dist/modules/agent-readiness-repository/src/change.js +4 -4
  199. package/dist/modules/agent-readiness-repository/src/change.js.map +1 -1
  200. package/dist/modules/agent-readiness-repository/src/declaration-blob.d.ts +0 -5
  201. package/dist/modules/agent-readiness-repository/src/declaration-blob.d.ts.map +1 -1
  202. package/dist/modules/agent-readiness-repository/src/declaration-blob.js +2 -9
  203. package/dist/modules/agent-readiness-repository/src/declaration-blob.js.map +1 -1
  204. package/dist/modules/agent-readiness-repository/src/index.d.ts +1 -51
  205. package/dist/modules/agent-readiness-repository/src/index.d.ts.map +1 -1
  206. package/dist/modules/agent-readiness-repository/src/index.js +4 -113
  207. package/dist/modules/agent-readiness-repository/src/index.js.map +1 -1
  208. package/dist/modules/artifact/src/agent-readiness-closure.d.ts +4 -7
  209. package/dist/modules/artifact/src/agent-readiness-closure.d.ts.map +1 -1
  210. package/dist/modules/artifact/src/agent-readiness-closure.js +5 -22
  211. package/dist/modules/artifact/src/agent-readiness-closure.js.map +1 -1
  212. package/dist/modules/artifact/src/index.d.ts +5 -4
  213. package/dist/modules/artifact/src/index.d.ts.map +1 -1
  214. package/dist/modules/artifact/src/index.js +47 -45
  215. package/dist/modules/artifact/src/index.js.map +1 -1
  216. package/dist/modules/artifact/src/policy-closure.js +2 -2
  217. package/dist/modules/artifact/src/policy-closure.js.map +1 -1
  218. package/dist/modules/assets/src/authority-bundle.d.ts +2 -5
  219. package/dist/modules/assets/src/authority-bundle.d.ts.map +1 -1
  220. package/dist/modules/assets/src/authority-bundle.js +1 -9
  221. package/dist/modules/assets/src/authority-bundle.js.map +1 -1
  222. package/dist/modules/assets/src/delta.d.ts +0 -5
  223. package/dist/modules/assets/src/delta.d.ts.map +1 -1
  224. package/dist/modules/assets/src/delta.js +1 -38
  225. package/dist/modules/assets/src/delta.js.map +1 -1
  226. package/dist/modules/assets/src/index.d.ts +1 -1
  227. package/dist/modules/assets/src/index.d.ts.map +1 -1
  228. package/dist/modules/assets/src/ingestion.d.ts +2 -1
  229. package/dist/modules/assets/src/ingestion.d.ts.map +1 -1
  230. package/dist/modules/authority/src/index.d.ts +3 -10
  231. package/dist/modules/authority/src/index.d.ts.map +1 -1
  232. package/dist/modules/authority/src/index.js +113 -201
  233. package/dist/modules/authority/src/index.js.map +1 -1
  234. package/dist/modules/authority-state/src/index.d.ts +2 -1
  235. package/dist/modules/authority-state/src/index.d.ts.map +1 -1
  236. package/dist/modules/catalog-admission/src/admission-conflicts.d.ts +5 -7
  237. package/dist/modules/catalog-admission/src/admission-conflicts.d.ts.map +1 -1
  238. package/dist/modules/catalog-admission/src/admission-conflicts.js +1 -1
  239. package/dist/modules/catalog-admission/src/admission-conflicts.js.map +1 -1
  240. package/dist/modules/catalog-admission/src/change-analysis.d.ts +1 -2
  241. package/dist/modules/catalog-admission/src/change-analysis.d.ts.map +1 -1
  242. package/dist/modules/catalog-admission/src/change-analysis.js +0 -4
  243. package/dist/modules/catalog-admission/src/change-analysis.js.map +1 -1
  244. package/dist/modules/catalog-admission/src/index.d.ts +2 -9
  245. package/dist/modules/catalog-admission/src/index.d.ts.map +1 -1
  246. package/dist/modules/catalog-admission/src/index.js +28 -13
  247. package/dist/modules/catalog-admission/src/index.js.map +1 -1
  248. package/dist/modules/catalog-admission/src/machine-admission.d.ts +65 -19
  249. package/dist/modules/catalog-admission/src/machine-admission.d.ts.map +1 -1
  250. package/dist/modules/catalog-admission/src/machine-admission.js +5 -331
  251. package/dist/modules/catalog-admission/src/machine-admission.js.map +1 -1
  252. package/dist/modules/catalog-admission/src/publication-composition.d.ts +17 -1
  253. package/dist/modules/catalog-admission/src/publication-composition.d.ts.map +1 -1
  254. package/dist/modules/catalog-admission/src/publication-dependencies.d.ts +1 -6
  255. package/dist/modules/catalog-admission/src/publication-dependencies.d.ts.map +1 -1
  256. package/dist/modules/catalog-admission/src/publication-dependencies.js +5 -33
  257. package/dist/modules/catalog-admission/src/publication-dependencies.js.map +1 -1
  258. package/dist/modules/catalog-admission/src/publication-entities.d.ts +0 -1
  259. package/dist/modules/catalog-admission/src/publication-entities.d.ts.map +1 -1
  260. package/dist/modules/catalog-admission/src/publication-entities.js +1 -1
  261. package/dist/modules/catalog-admission/src/publication-entities.js.map +1 -1
  262. package/dist/modules/catalog-admission/src/publication.d.ts +3 -8
  263. package/dist/modules/catalog-admission/src/publication.d.ts.map +1 -1
  264. package/dist/modules/catalog-admission/src/publication.js +0 -13
  265. package/dist/modules/catalog-admission/src/publication.js.map +1 -1
  266. package/dist/modules/catalog-admission/src/submission.js +1 -1
  267. package/dist/modules/catalog-admission/src/submission.js.map +1 -1
  268. package/dist/modules/catalog-admission/src/taxonomy.d.ts +3 -0
  269. package/dist/modules/catalog-admission/src/taxonomy.d.ts.map +1 -0
  270. package/dist/modules/catalog-admission/src/taxonomy.js +7 -0
  271. package/dist/modules/catalog-admission/src/taxonomy.js.map +1 -0
  272. package/dist/modules/catalog-authoring-validation/src/index.d.ts +0 -1
  273. package/dist/modules/catalog-authoring-validation/src/index.d.ts.map +1 -1
  274. package/dist/modules/catalog-authoring-validation/src/index.js +1 -1
  275. package/dist/modules/catalog-authoring-validation/src/index.js.map +1 -1
  276. package/dist/modules/catalog-model/src/index.d.ts +2 -2
  277. package/dist/modules/catalog-model/src/index.d.ts.map +1 -1
  278. package/dist/modules/catalog-primitives/src/index.d.ts +2 -4
  279. package/dist/modules/catalog-primitives/src/index.d.ts.map +1 -1
  280. package/dist/modules/catalog-primitives/src/index.js +24 -0
  281. package/dist/modules/catalog-primitives/src/index.js.map +1 -1
  282. package/dist/modules/catalog-read-port/src/index.d.ts +3 -3
  283. package/dist/modules/catalog-read-port/src/index.d.ts.map +1 -1
  284. package/dist/modules/evidence-comparison/src/domains.d.ts +8 -0
  285. package/dist/modules/evidence-comparison/src/domains.d.ts.map +1 -0
  286. package/dist/modules/evidence-comparison/src/domains.js +16 -0
  287. package/dist/modules/evidence-comparison/src/domains.js.map +1 -0
  288. package/dist/modules/evidence-operations/src/attested-capture.d.ts +75 -0
  289. package/dist/modules/evidence-operations/src/attested-capture.d.ts.map +1 -0
  290. package/dist/modules/evidence-operations/src/attested-capture.js +227 -0
  291. package/dist/modules/evidence-operations/src/attested-capture.js.map +1 -0
  292. package/dist/modules/evidence-operations/src/configuration.d.ts +2 -163
  293. package/dist/modules/evidence-operations/src/configuration.d.ts.map +1 -1
  294. package/dist/modules/evidence-operations/src/configuration.js +7 -7
  295. package/dist/modules/evidence-operations/src/configuration.js.map +1 -1
  296. package/dist/modules/evidence-operations/src/evidence-authority-materialization.d.ts +53 -0
  297. package/dist/modules/evidence-operations/src/evidence-authority-materialization.d.ts.map +1 -0
  298. package/dist/modules/evidence-operations/src/evidence-authority-materialization.js +161 -0
  299. package/dist/modules/evidence-operations/src/evidence-authority-materialization.js.map +1 -0
  300. package/dist/modules/evidence-operations/src/evidence-authority.d.ts +27 -2000
  301. package/dist/modules/evidence-operations/src/evidence-authority.d.ts.map +1 -1
  302. package/dist/modules/evidence-operations/src/evidence-authority.js +46 -206
  303. package/dist/modules/evidence-operations/src/evidence-authority.js.map +1 -1
  304. package/dist/modules/evidence-operations/src/evidence-normalization.d.ts +10 -96
  305. package/dist/modules/evidence-operations/src/evidence-normalization.d.ts.map +1 -1
  306. package/dist/modules/evidence-operations/src/evidence-normalization.js +32 -329
  307. package/dist/modules/evidence-operations/src/evidence-normalization.js.map +1 -1
  308. package/dist/modules/evidence-operations/src/evidence-revision.d.ts +5 -0
  309. package/dist/modules/evidence-operations/src/evidence-revision.d.ts.map +1 -0
  310. package/dist/modules/evidence-operations/src/evidence-revision.js +12 -0
  311. package/dist/modules/evidence-operations/src/evidence-revision.js.map +1 -0
  312. package/dist/modules/evidence-operations/src/proof-graph.d.ts +13 -6
  313. package/dist/modules/evidence-operations/src/proof-graph.d.ts.map +1 -1
  314. package/dist/modules/evidence-operations/src/proof-graph.js +82 -59
  315. package/dist/modules/evidence-operations/src/proof-graph.js.map +1 -1
  316. package/dist/modules/evidence-operations/src/retained-revision.d.ts +7 -5
  317. package/dist/modules/evidence-operations/src/retained-revision.d.ts.map +1 -1
  318. package/dist/modules/evidence-operations/src/retained-revision.js +14 -16
  319. package/dist/modules/evidence-operations/src/retained-revision.js.map +1 -1
  320. package/dist/modules/evidence-operations/src/source-authority.js +1 -1
  321. package/dist/modules/evidence-operations/src/source-authority.js.map +1 -1
  322. package/dist/modules/evidence-operations/src/submission-verifier.d.ts +13 -23
  323. package/dist/modules/evidence-operations/src/submission-verifier.d.ts.map +1 -1
  324. package/dist/modules/evidence-operations/src/submission-verifier.js +5 -20
  325. package/dist/modules/evidence-operations/src/submission-verifier.js.map +1 -1
  326. package/dist/modules/provenance/src/evidence-bindings.d.ts +2 -1
  327. package/dist/modules/provenance/src/evidence-bindings.d.ts.map +1 -1
  328. package/dist/modules/provenance/src/evidence-coverage.d.ts +2 -1
  329. package/dist/modules/provenance/src/evidence-coverage.d.ts.map +1 -1
  330. package/dist/modules/provenance/src/index.d.ts +17 -11
  331. package/dist/modules/provenance/src/index.d.ts.map +1 -1
  332. package/dist/modules/provenance/src/index.js +62 -62
  333. package/dist/modules/provenance/src/index.js.map +1 -1
  334. package/dist/modules/provenance/src/material-claims.d.ts +7 -136
  335. package/dist/modules/provenance/src/material-claims.d.ts.map +1 -1
  336. package/dist/modules/provenance/src/material-claims.js +8 -10
  337. package/dist/modules/provenance/src/material-claims.js.map +1 -1
  338. package/dist/modules/release/src/agent-readiness-authority.d.ts +71 -0
  339. package/dist/modules/release/src/agent-readiness-authority.d.ts.map +1 -0
  340. package/dist/modules/release/src/agent-readiness-authority.js +164 -0
  341. package/dist/modules/release/src/agent-readiness-authority.js.map +1 -0
  342. package/dist/modules/release/src/agent-readiness-publication-inputs.d.ts +1 -2
  343. package/dist/modules/release/src/agent-readiness-publication-inputs.d.ts.map +1 -1
  344. package/dist/modules/release/src/agent-readiness-publication-inputs.js +3 -6
  345. package/dist/modules/release/src/agent-readiness-publication-inputs.js.map +1 -1
  346. package/dist/modules/release/src/agent-readiness-regrade-evidence.d.ts +13 -89
  347. package/dist/modules/release/src/agent-readiness-regrade-evidence.d.ts.map +1 -1
  348. package/dist/modules/release/src/agent-readiness-regrade-evidence.js +14 -46
  349. package/dist/modules/release/src/agent-readiness-regrade-evidence.js.map +1 -1
  350. package/dist/modules/release/src/changes.d.ts +3 -3
  351. package/dist/modules/release/src/changes.d.ts.map +1 -1
  352. package/dist/modules/release/src/changes.js +1 -2
  353. package/dist/modules/release/src/changes.js.map +1 -1
  354. package/dist/modules/release/src/evidence-admission.d.ts +10 -10
  355. package/dist/modules/release/src/evidence-admission.d.ts.map +1 -1
  356. package/dist/modules/release/src/evidence-admission.js +52 -60
  357. package/dist/modules/release/src/evidence-admission.js.map +1 -1
  358. package/dist/modules/release/src/evidence-bundle-tree.d.ts +7 -7
  359. package/dist/modules/release/src/evidence-bundle-tree.d.ts.map +1 -1
  360. package/dist/modules/release/src/evidence-bundle-tree.js +15 -15
  361. package/dist/modules/release/src/evidence-bundle-tree.js.map +1 -1
  362. package/dist/modules/release/src/identity.d.ts +2 -1
  363. package/dist/modules/release/src/identity.d.ts.map +1 -1
  364. package/dist/modules/release/src/identity.js.map +1 -1
  365. package/dist/modules/release/src/inputs.d.ts +12 -11
  366. package/dist/modules/release/src/inputs.d.ts.map +1 -1
  367. package/dist/modules/release/src/inputs.js +30 -202
  368. package/dist/modules/release/src/inputs.js.map +1 -1
  369. package/dist/modules/release/src/publication-inputs.d.ts +2 -1
  370. package/dist/modules/release/src/publication-inputs.d.ts.map +1 -1
  371. package/dist/modules/release/src/transition.d.ts +2 -2
  372. package/dist/modules/release/src/transition.d.ts.map +1 -1
  373. package/dist/modules/release/src/transition.js.map +1 -1
  374. package/dist/modules/release/src/verification-policies.d.ts +59 -232
  375. package/dist/modules/release/src/verification-policies.d.ts.map +1 -1
  376. package/dist/modules/release/src/verification-policies.js +2 -2
  377. package/dist/modules/release/src/verification-policies.js.map +1 -1
  378. package/dist/modules/sourcey-publication/src/verifier.d.ts +4 -3
  379. package/dist/modules/sourcey-publication/src/verifier.d.ts.map +1 -1
  380. package/dist/modules/sourcey-publication/src/verifier.js +53 -50
  381. package/dist/modules/sourcey-publication/src/verifier.js.map +1 -1
  382. package/dist/packages/catalog-verifier/src/application.d.ts +2 -5
  383. package/dist/packages/catalog-verifier/src/application.d.ts.map +1 -1
  384. package/dist/packages/catalog-verifier/src/application.js +2 -5
  385. package/dist/packages/catalog-verifier/src/application.js.map +1 -1
  386. package/dist/packages/catalog-verifier/src/program.js +1 -1
  387. package/dist/packages/catalog-verifier/src/program.js.map +1 -1
  388. package/package.json +2 -3
  389. package/dist/contracts/agent-readiness/src/evidence.d.ts +0 -190
  390. package/dist/contracts/agent-readiness/src/evidence.d.ts.map +0 -1
  391. package/dist/contracts/agent-readiness/src/evidence.js +0 -177
  392. package/dist/contracts/agent-readiness/src/evidence.js.map +0 -1
  393. package/dist/contracts/agent-readiness/src/interaction.d.ts +0 -26
  394. package/dist/contracts/agent-readiness/src/interaction.d.ts.map +0 -1
  395. package/dist/contracts/agent-readiness/src/interaction.js +0 -24
  396. package/dist/contracts/agent-readiness/src/interaction.js.map +0 -1
  397. package/dist/contracts/agent-readiness/src/method-pack.d.ts +0 -386
  398. package/dist/contracts/agent-readiness/src/method-pack.d.ts.map +0 -1
  399. package/dist/contracts/agent-readiness/src/method-pack.js +0 -181
  400. package/dist/contracts/agent-readiness/src/method-pack.js.map +0 -1
  401. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.d.ts +0 -22
  402. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.d.ts.map +0 -1
  403. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js +0 -565
  404. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js.map +0 -1
  405. package/dist/modules/agent-readiness-policy/src/current-policy-standards.d.ts +0 -99
  406. package/dist/modules/agent-readiness-policy/src/current-policy-standards.d.ts.map +0 -1
  407. package/dist/modules/agent-readiness-policy/src/current-policy-standards.js +0 -99
  408. package/dist/modules/agent-readiness-policy/src/current-policy-standards.js.map +0 -1
  409. package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts +0 -4
  410. package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts.map +0 -1
  411. package/dist/modules/agent-readiness-policy/src/current-policy-validation.js +0 -11
  412. package/dist/modules/agent-readiness-policy/src/current-policy-validation.js.map +0 -1
  413. package/dist/modules/agent-readiness-policy/src/grading.d.ts +0 -39
  414. package/dist/modules/agent-readiness-policy/src/grading.d.ts.map +0 -1
  415. package/dist/modules/agent-readiness-policy/src/grading.js +0 -40
  416. package/dist/modules/agent-readiness-policy/src/grading.js.map +0 -1
  417. package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts +0 -3
  418. package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts.map +0 -1
  419. package/dist/modules/agent-readiness-policy/src/policy-validation.js +0 -39
  420. package/dist/modules/agent-readiness-policy/src/policy-validation.js.map +0 -1
  421. package/dist/modules/agent-readiness-policy/src/projection-lineage.d.ts +0 -3
  422. package/dist/modules/agent-readiness-policy/src/projection-lineage.d.ts.map +0 -1
  423. package/dist/modules/agent-readiness-policy/src/projection-lineage.js +0 -12
  424. package/dist/modules/agent-readiness-policy/src/projection-lineage.js.map +0 -1
  425. package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts +0 -7
  426. package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts.map +0 -1
  427. package/dist/modules/agent-readiness-policy/src/standard-mapping.js +0 -14
  428. package/dist/modules/agent-readiness-policy/src/standard-mapping.js.map +0 -1
  429. package/dist/modules/agent-readiness-policy/src/surface-selection.d.ts +0 -53
  430. package/dist/modules/agent-readiness-policy/src/surface-selection.d.ts.map +0 -1
  431. package/dist/modules/agent-readiness-policy/src/surface-selection.js +0 -262
  432. package/dist/modules/agent-readiness-policy/src/surface-selection.js.map +0 -1
  433. package/dist/modules/agent-readiness-repository/src/admission.d.ts +0 -35
  434. package/dist/modules/agent-readiness-repository/src/admission.d.ts.map +0 -1
  435. package/dist/modules/agent-readiness-repository/src/admission.js +0 -56
  436. package/dist/modules/agent-readiness-repository/src/admission.js.map +0 -1
  437. package/dist/modules/authority/src/retained-capture-receipt.d.ts +0 -95
  438. package/dist/modules/authority/src/retained-capture-receipt.d.ts.map +0 -1
  439. package/dist/modules/authority/src/retained-capture-receipt.js +0 -76
  440. package/dist/modules/authority/src/retained-capture-receipt.js.map +0 -1
  441. package/dist/modules/catalog-admission/src/publication-recomposition.d.ts +0 -42
  442. package/dist/modules/catalog-admission/src/publication-recomposition.d.ts.map +0 -1
  443. package/dist/modules/catalog-admission/src/publication-recomposition.js +0 -163
  444. package/dist/modules/catalog-admission/src/publication-recomposition.js.map +0 -1
  445. package/dist/modules/evidence-comparison/src/values.d.ts +0 -75
  446. package/dist/modules/evidence-comparison/src/values.d.ts.map +0 -1
  447. package/dist/modules/evidence-comparison/src/values.js +0 -283
  448. package/dist/modules/evidence-comparison/src/values.js.map +0 -1
  449. package/dist/modules/evidence-grounding/src/figures.d.ts +0 -56
  450. package/dist/modules/evidence-grounding/src/figures.d.ts.map +0 -1
  451. package/dist/modules/evidence-grounding/src/figures.js +0 -727
  452. package/dist/modules/evidence-grounding/src/figures.js.map +0 -1
  453. package/dist/modules/evidence-grounding/src/index.d.ts +0 -4
  454. package/dist/modules/evidence-grounding/src/index.d.ts.map +0 -1
  455. package/dist/modules/evidence-grounding/src/index.js +0 -4
  456. package/dist/modules/evidence-grounding/src/index.js.map +0 -1
  457. package/dist/modules/evidence-grounding/src/locator.d.ts +0 -50
  458. package/dist/modules/evidence-grounding/src/locator.d.ts.map +0 -1
  459. package/dist/modules/evidence-grounding/src/locator.js +0 -162
  460. package/dist/modules/evidence-grounding/src/locator.js.map +0 -1
  461. package/dist/modules/evidence-grounding/src/written.d.ts +0 -29
  462. package/dist/modules/evidence-grounding/src/written.d.ts.map +0 -1
  463. package/dist/modules/evidence-grounding/src/written.js +0 -111
  464. package/dist/modules/evidence-grounding/src/written.js.map +0 -1
  465. package/dist/modules/evidence-operations/src/dependency-versions.d.ts +0 -2
  466. package/dist/modules/evidence-operations/src/dependency-versions.d.ts.map +0 -1
  467. package/dist/modules/evidence-operations/src/dependency-versions.js +0 -17
  468. package/dist/modules/evidence-operations/src/dependency-versions.js.map +0 -1
  469. package/dist/modules/evidence-operations/src/html-document.d.ts +0 -4
  470. package/dist/modules/evidence-operations/src/html-document.d.ts.map +0 -1
  471. package/dist/modules/evidence-operations/src/html-document.js +0 -99
  472. package/dist/modules/evidence-operations/src/html-document.js.map +0 -1
  473. package/dist/modules/policy-identity/src/index.d.ts +0 -7
  474. package/dist/modules/policy-identity/src/index.d.ts.map +0 -1
  475. package/dist/modules/policy-identity/src/index.js +0 -23
  476. package/dist/modules/policy-identity/src/index.js.map +0 -1
  477. package/dist/modules/release/src/publication-authorities.d.ts +0 -271
  478. package/dist/modules/release/src/publication-authorities.d.ts.map +0 -1
  479. package/dist/modules/release/src/publication-authorities.js +0 -56
  480. package/dist/modules/release/src/publication-authorities.js.map +0 -1
  481. package/dist/modules/standard-adapter-runtime/src/index.d.ts +0 -16
  482. package/dist/modules/standard-adapter-runtime/src/index.d.ts.map +0 -1
  483. package/dist/modules/standard-adapter-runtime/src/index.js +0 -43
  484. package/dist/modules/standard-adapter-runtime/src/index.js.map +0 -1
  485. package/dist/modules/standard-evidence/src/index.d.ts +0 -33
  486. package/dist/modules/standard-evidence/src/index.d.ts.map +0 -1
  487. package/dist/modules/standard-evidence/src/index.js +0 -149
  488. package/dist/modules/standard-evidence/src/index.js.map +0 -1
@@ -2,119 +2,35 @@ import { SLUG_PATTERN } from "provenry/primitives";
2
2
  import { z } from "zod";
3
3
  import { provenanceSchema } from "../../artifact/src/index.js";
4
4
  import { entityRevisionSchema, lifecycleStatusSchema, offerRevisionSchema, } from "../../revisions/src/index.js";
5
- import { standardRequirementReferenceSchema } from "../../standards/src/index.js";
6
- import { agentReadinessAssessmentTargetSchema, agentReadinessDeclarationRevisionSchema, agentReadinessDeclaredInterfaceSchema, agentReadinessEndpointRoleSchema, agentReadinessEndpointSchema, agentReadinessInterfaceFunctionSchema, agentReadinessInterfaceModalitySchema, agentReadinessOfferRelationPurposeSchema, agentReadinessParticipantSchema, agentReadinessResourceSchema, agentReadinessSurfaceExclusionSchema, agentReadinessSurfaceRelationKindSchema, agentReadinessSurfaceRelationSchema, } from "./declaration.js";
5
+ import { agentReadinessDeclarationRevisionSchema, agentReadinessDeclaredInterfaceSchema, agentReadinessEndpointSchema, agentReadinessOfferRelationPurposeSchema, agentReadinessParticipantSchema, agentReadinessResourceSchema, agentReadinessSurfaceExclusionSchema, agentReadinessSurfaceRelationSchema, } from "./declaration.js";
7
6
  import { agentReadinessDeclarationStateSchema } from "./declaration-reference.js";
8
- import { agentReadinessCorroborationAlternativeSchema, agentReadinessDeterminationBasisSchema, } from "./evidence.js";
9
- import { agentReadinessAssessmentMethodPackSchema } from "./method-pack.js";
10
- import { agentReadinessAssessmentMethodSchema, agentReadinessCatalogBindingSchema, agentReadinessDigestSchema, agentReadinessEntityIdSchema, agentReadinessEvaluationRoleSchema, agentReadinessFreshnessSchema, agentReadinessGradeSchema, agentReadinessIdentifierSchema, agentReadinessInstantSchema, agentReadinessOfferIdSchema, agentReadinessProfileIdSchema, agentReadinessPublicStateSchema, agentReadinessResourceRoleSchema, agentReadinessScopeSchema, agentReadinessSignalCodeSchema, agentReadinessSignalValueSchema, agentReadinessStageOutcomeSchema, agentReadinessStageSchema, agentReadinessSurfaceReferenceSchema, sameAgentReadinessScopeIdentity, } from "./shared.js";
7
+ import { agentReadinessAssertionResultSchema, agentReadinessDiscoveryFactSchema, agentReadinessRunKindSchema, agentReadinessRunRecordSchema, agentReadinessRunSummarySchema, agentReadinessStepResultSchema, } from "./run.js";
8
+ import { AGENT_READINESS_MAXIMUM_REVISION_RUNS, AGENT_READINESS_STEPS, agentReadinessCatalogBindingSchema, agentReadinessDigestSchema, agentReadinessEntityIdSchema, agentReadinessEvidenceLabelSchema, agentReadinessFreshnessSchema, agentReadinessHandoffTimingSchema, agentReadinessIdentifierSchema, agentReadinessInstantSchema, agentReadinessOfferIdSchema, agentReadinessOnboardLevelSchema, agentReadinessOperateLetterSchema, agentReadinessProfileIdSchema, agentReadinessScopeKeySchema, agentReadinessScopeSchema, agentReadinessStepOutcomeSchema, agentReadinessStepSchema, sameAgentReadinessScopeIdentity, } from "./shared.js";
9
+ export * from "./authority.js";
10
+ export * from "./binding.js";
11
11
  export * from "./declaration.js";
12
12
  export * from "./declaration-acquisition.js";
13
13
  export * from "./declaration-reference.js";
14
- export * from "./evidence.js";
15
- export * from "./interaction.js";
16
- export * from "./method-pack.js";
14
+ export * from "./jobs.js";
15
+ export * from "./operate-policy.js";
16
+ export * from "./run.js";
17
17
  export * from "./shared.js";
18
18
  /** Canonical discriminant for a published Agent Readiness revision. */
19
19
  export const agentReadinessRevisionContract = "sourcey.agent-readiness-revision/v1alpha1";
20
- /**
21
- * Runtime residue that proves a document failed to render: serialized
22
- * JavaScript values, replacement characters, and a sentence whose interpolated
23
- * value is missing. These disqualify a captured segment as evidence for a
24
- * known finding and can never appear in a public claim.
25
- */
26
- const unresolvedRenderingPatterns = [
27
- /\bundefined\b/iu,
28
- /\[object Object\]/u,
29
- /\bNaN\b/u,
30
- /\uFFFD/u,
31
- /\b(?:amount|cost|currency|date|duration|fee|limit|number|percentage|period|price|quantity|rate|time|total|value)\s+(?:at|by|for|from|is|of|to|with)\s*[.,;:!?](?:\s|$)/iu,
32
- ];
33
- /**
34
- * Template syntax that must not reach a public claim, but is ordinary literal
35
- * content in the documentation Sourcey assesses: vendors write
36
- * `PINECONE_API_KEY="{{YOUR_API_KEY}}"` and `${{ secrets.GITHUB_TOKEN }}` as
37
- * reader placeholders, and `${API_KEY}` is shell interpolation in every curl
38
- * sample. A quote may carry them; a note may not. GitHub Actions expressions
39
- * are excluded from the Mustache form because they are not template output.
40
- */
41
- const unresolvedTemplatePatterns = [/(?<!\$)\{\{[^}]*\}\}/u, /<%[^%]*%>/u];
42
- /** Rendering residue in a captured segment: the surface did not render. */
43
- export function agentReadinessRenderingResidue(value) {
44
- const text = value.trim();
45
- return unresolvedRenderingPatterns.some((pattern) => pattern.test(text))
46
- ? "Captured evidence carries unresolved rendered content."
47
- : null;
48
- }
49
- /**
50
- * Finds deterministic evidence of unresolved runtime or interpolation residue
51
- * in text that would otherwise become a public factual claim.
52
- */
53
- export function agentReadinessPublicClaimResidue(value) {
54
- const text = value.trim();
55
- return [...unresolvedRenderingPatterns, ...unresolvedTemplatePatterns].some((pattern) => pattern.test(text))
56
- ? "Public Agent Readiness claims cannot contain unresolved rendered content."
57
- : null;
58
- }
59
- /** The one bound on public claim text: observation notes, the fact response schema and its prompt share it. */
60
- export const AGENT_READINESS_PUBLIC_CLAIM_TEXT_MAXIMUM_CHARACTERS = 500;
61
- export const agentReadinessPublicClaimTextSchema = z
62
- .string()
63
- .trim()
64
- .min(1)
65
- .max(AGENT_READINESS_PUBLIC_CLAIM_TEXT_MAXIMUM_CHARACTERS)
66
- .superRefine((value, context) => {
67
- const issue = agentReadinessPublicClaimResidue(value);
68
- if (issue)
69
- context.addIssue({ code: "custom", message: issue });
70
- });
71
- export const agentReadinessSignalInputSchema = z
20
+ /** A run the revision rests on: the latest, and earlier ones a reproduced refusal needs. */
21
+ const agentReadinessRunReferenceSchema = z
72
22
  .object({
73
- stage: agentReadinessStageSchema,
74
- signal_code: agentReadinessSignalCodeSchema,
75
- selector_group_id: agentReadinessIdentifierSchema,
76
- value: agentReadinessSignalValueSchema,
77
- observed_at: agentReadinessInstantSchema,
78
- tested_surfaces: z.array(agentReadinessSurfaceReferenceSchema).min(1),
79
- assessment_method: agentReadinessAssessmentMethodSchema,
80
- determination_bases: z.array(agentReadinessDeterminationBasisSchema),
81
- note: agentReadinessPublicClaimTextSchema.optional(),
23
+ run_digest: agentReadinessDigestSchema,
24
+ label: agentReadinessEvidenceLabelSchema,
25
+ run_kind: agentReadinessRunKindSchema,
26
+ finished_at: agentReadinessInstantSchema,
82
27
  })
83
- .strict()
84
- .superRefine((value, context) => {
85
- assertUniqueSurfaceReferences(value.tested_surfaces, context, ["tested_surfaces"]);
86
- if ((value.value === "unknown") !== (value.determination_bases.length === 0)) {
87
- context.addIssue({
88
- code: "custom",
89
- path: ["determination_bases"],
90
- message: "Every factual signal requires a determination basis; unknown signals cannot claim one.",
91
- });
92
- }
93
- if (new Set(value.determination_bases.map((basis) => JSON.stringify(basis))).size !==
94
- value.determination_bases.length) {
95
- context.addIssue({
96
- code: "custom",
97
- path: ["determination_bases"],
98
- message: "A signal cannot repeat a determination basis.",
99
- });
100
- }
101
- for (const [index, basis] of value.determination_bases.entries()) {
102
- if (basis.kind === "bounded_absence" &&
103
- basis.covered_surfaces.some((covered) => !value.tested_surfaces.some((tested) => sameSurface(covered, tested)))) {
104
- context.addIssue({
105
- code: "custom",
106
- path: ["determination_bases", index, "covered_surfaces"],
107
- message: "Bounded absence must cover tested surfaces from the same signal.",
108
- });
109
- }
110
- }
111
- });
112
- export const agentReadinessEvidenceBindingSchema = z
28
+ .strict();
29
+ export const agentReadinessEngineIdentitySchema = z
113
30
  .object({
114
- stage: agentReadinessStageSchema,
115
- signal_code: agentReadinessSignalCodeSchema,
116
- evidence_event_ids: z.array(agentReadinessDigestSchema).min(1),
117
- observation_ids: z.array(agentReadinessDigestSchema).min(1),
31
+ name: z.string().min(1).max(80),
32
+ version: z.string().min(1).max(80),
33
+ engine_digest: agentReadinessDigestSchema,
118
34
  })
119
35
  .strict();
120
36
  const agentReadinessRevisionFields = {
@@ -127,17 +43,72 @@ const agentReadinessRevisionFields = {
127
43
  lifecycle: lifecycleStatusSchema,
128
44
  effective_from: agentReadinessInstantSchema,
129
45
  effective_until: agentReadinessInstantSchema.optional(),
130
- signals: z.array(agentReadinessSignalInputSchema).min(1),
46
+ /** The exact library job the runs performed; a changed job needs new runs. */
47
+ job_digest: agentReadinessDigestSchema,
48
+ engine: agentReadinessEngineIdentitySchema,
49
+ /** The binding the rating rests on; null for a listing no binding has run yet. */
50
+ binding_id: agentReadinessScopeKeySchema.nullable(),
51
+ binding_digest: agentReadinessDigestSchema.nullable(),
52
+ /** Oldest first; the last is the run every step's outcome is read from. */
53
+ runs: z.array(agentReadinessRunReferenceSchema).min(1).max(AGENT_READINESS_MAXIMUM_REVISION_RUNS),
54
+ /** One result per step, in path order. */
55
+ steps: z.array(agentReadinessStepResultSchema).length(AGENT_READINESS_STEPS.length),
56
+ onboard_level: agentReadinessOnboardLevelSchema.nullable(),
57
+ /** What the latest run found on the service's own descriptors. */
58
+ discovery: z.array(agentReadinessDiscoveryFactSchema).max(64),
59
+ /** What the latest run asked and what came back, as the card shows it. */
60
+ latest_run: agentReadinessRunSummarySchema,
131
61
  };
132
- function validateAgentReadinessProfile(value, context) {
133
- const keys = value.signals.map((signal) => `${signal.stage}:${signal.signal_code}`);
134
- if (new Set(keys).size !== keys.length) {
62
+ function validateAgentReadinessRevision(value, context) {
63
+ if ((value.binding_id === null) !== (value.binding_digest === null)) {
64
+ context.addIssue({
65
+ code: "custom",
66
+ path: ["binding_digest"],
67
+ message: "A revision names its binding and its digest together, or neither.",
68
+ });
69
+ }
70
+ if (value.binding_id === null &&
71
+ (value.onboard_level !== null || value.steps.some(({ outcome }) => outcome !== "not_assessed"))) {
72
+ context.addIssue({
73
+ code: "custom",
74
+ path: ["steps"],
75
+ message: "A listing no binding has run assesses no step and no Onboard level.",
76
+ });
77
+ }
78
+ if (value.latest_run.finished_at !== value.runs.at(-1)?.finished_at) {
79
+ context.addIssue({
80
+ code: "custom",
81
+ path: ["latest_run"],
82
+ message: "A revision summarises its latest run.",
83
+ });
84
+ }
85
+ if (value.steps.some(({ step }, index) => step !== AGENT_READINESS_STEPS[index])) {
86
+ context.addIssue({
87
+ code: "custom",
88
+ path: ["steps"],
89
+ message: "A revision lists one result per step, in path order.",
90
+ });
91
+ }
92
+ const digests = value.runs.map(({ run_digest }) => run_digest);
93
+ if (new Set(digests).size !== digests.length ||
94
+ value.runs.some((run, index) => index > 0 &&
95
+ Date.parse(run.finished_at) < Date.parse(value.runs[index - 1]?.finished_at ?? ""))) {
135
96
  context.addIssue({
136
97
  code: "custom",
137
- path: ["signals"],
138
- message: "An agent readiness profile cannot repeat a stage signal.",
98
+ path: ["runs"],
99
+ message: "A revision's runs are unique and ordered oldest first.",
139
100
  });
140
101
  }
102
+ const runs = new Set(digests);
103
+ for (const [index, step] of value.steps.entries()) {
104
+ if (step.evidence.some(({ run_digest }) => !runs.has(run_digest))) {
105
+ context.addIssue({
106
+ code: "custom",
107
+ path: ["steps", index, "evidence"],
108
+ message: "Step evidence rests only on the revision's own runs.",
109
+ });
110
+ }
111
+ }
141
112
  if (value.effective_until &&
142
113
  Date.parse(value.effective_until) <= Date.parse(value.effective_from)) {
143
114
  context.addIssue({
@@ -147,24 +118,39 @@ function validateAgentReadinessProfile(value, context) {
147
118
  });
148
119
  }
149
120
  }
121
+ /** A revision's exact input: its fields and the run records they rest on, oldest first. */
150
122
  export const agentReadinessProfileInputSchema = z
151
123
  .object({
152
124
  input_contract: z.literal("sourcey.agent-readiness-input/v1alpha1"),
153
125
  ...agentReadinessRevisionFields,
154
- evidence_bindings: z.array(agentReadinessEvidenceBindingSchema).min(1),
126
+ run_records: z
127
+ .array(agentReadinessRunRecordSchema)
128
+ .min(1)
129
+ .max(AGENT_READINESS_MAXIMUM_REVISION_RUNS),
155
130
  })
156
131
  .strict()
157
132
  .superRefine((value, context) => {
158
- validateAgentReadinessProfile(value, context);
159
- const signalKeys = new Set(value.signals.map((signal) => `${signal.stage}:${signal.signal_code}`));
160
- const bindingKeys = value.evidence_bindings.map((binding) => `${binding.stage}:${binding.signal_code}`);
161
- if (new Set(bindingKeys).size !== bindingKeys.length ||
162
- bindingKeys.some((key) => !signalKeys.has(key)) ||
163
- bindingKeys.length !== signalKeys.size) {
164
- context.addIssue({
165
- code: "custom",
166
- path: ["evidence_bindings"],
167
- message: "Every agent readiness signal requires exactly one separate evidence binding.",
133
+ validateAgentReadinessRevision(value, context);
134
+ const records = value.run_records;
135
+ if (records.length !== value.runs.length ||
136
+ records.some((record, index) => {
137
+ const reference = value.runs[index];
138
+ return (!reference ||
139
+ record.run_digest !== reference.run_digest ||
140
+ record.label !== reference.label ||
141
+ record.run_kind !== reference.run_kind ||
142
+ record.finished_at !== reference.finished_at ||
143
+ record.entity_id !== value.entity_id ||
144
+ record.product_key !== value.scope.product.key ||
145
+ record.job_id !== value.scope.job.key ||
146
+ record.binding_id !== value.binding_id ||
147
+ record.binding_digest !== value.binding_digest ||
148
+ record.job_digest !== value.job_digest);
149
+ })) {
150
+ context.addIssue({
151
+ code: "custom",
152
+ path: ["run_records"],
153
+ message: "Each run record is exactly the run its revision names, for this profile.",
168
154
  });
169
155
  }
170
156
  });
@@ -174,7 +160,6 @@ export const agentReadinessOfferRelationInputSchema = z
174
160
  agent_readiness_profile_id: agentReadinessProfileIdSchema,
175
161
  offer_id: agentReadinessOfferIdSchema,
176
162
  purpose: agentReadinessOfferRelationPurposeSchema,
177
- applicable_stages: z.array(agentReadinessStageSchema).min(1),
178
163
  effective_from: agentReadinessInstantSchema,
179
164
  effective_until: agentReadinessInstantSchema.optional(),
180
165
  declaration_revision_digest: agentReadinessDigestSchema,
@@ -182,16 +167,7 @@ export const agentReadinessOfferRelationInputSchema = z
182
167
  admitted_offer_revision_digest: agentReadinessDigestSchema,
183
168
  })
184
169
  .strict()
185
- .superRefine((value, context) => {
186
- if (new Set(value.applicable_stages).size !== value.applicable_stages.length) {
187
- context.addIssue({
188
- code: "custom",
189
- path: ["applicable_stages"],
190
- message: "Offer relation input stages must be unique.",
191
- });
192
- }
193
- validateOfferRelationInterval(value, context);
194
- });
170
+ .superRefine(validateOfferRelationInterval);
195
171
  export const agentReadinessProfileReleaseInputSchema = z
196
172
  .object({
197
173
  release_input_contract: z.literal("sourcey.agent-readiness-release-input/v1alpha1"),
@@ -230,27 +206,20 @@ export const agentReadinessProfileReleaseInputSchema = z
230
206
  });
231
207
  }
232
208
  });
233
- export const agentReadinessFactualInputSchema = z
234
- .object({
235
- factual_input_contract: z.literal("sourcey.agent-readiness-factual-input/v1alpha1"),
236
- ...agentReadinessRevisionFields,
237
- })
238
- .strict()
239
- .superRefine(validateAgentReadinessProfile);
240
209
  export const agentReadinessRevisionCoreSchema = z
241
210
  .object({
242
211
  revision_contract: z.literal(agentReadinessRevisionContract),
243
212
  ...agentReadinessRevisionFields,
244
213
  })
245
214
  .strict()
246
- .superRefine(validateAgentReadinessProfile);
215
+ .superRefine(validateAgentReadinessRevision);
247
216
  export const agentReadinessRevisionSchema = agentReadinessRevisionCoreSchema
248
217
  .safeExtend({ revision_digest: agentReadinessDigestSchema })
249
218
  .strict();
250
219
  /**
251
220
  * Stable head identity for closure and ownership checks. Historical Agent
252
221
  * Readiness revision bodies remain opaque and are never reparsed through the
253
- * current factual contract.
222
+ * current contract.
254
223
  */
255
224
  export const agentReadinessRevisionHeadSchema = z.object({
256
225
  revision_contract: z.literal(agentReadinessRevisionContract),
@@ -258,646 +227,37 @@ export const agentReadinessRevisionHeadSchema = z.object({
258
227
  entity_id: agentReadinessEntityIdSchema,
259
228
  revision_digest: agentReadinessDigestSchema,
260
229
  });
261
- const publicFindingSchema = z
262
- .object({
263
- condition: z.string().min(1).max(160),
264
- finding: z.string().min(1).max(280),
265
- })
266
- .strict();
267
- const publicFindingByValueSchema = z
268
- .object({
269
- yes: publicFindingSchema,
270
- no: publicFindingSchema,
271
- partial: publicFindingSchema,
272
- unknown: publicFindingSchema,
273
- not_applicable: publicFindingSchema,
274
- })
275
- .strict();
276
- const standardEvidenceSupportSchema = z
277
- .object({
278
- result: z.enum(["satisfied", "not_satisfied"]),
279
- values: z.array(agentReadinessSignalValueSchema.exclude(["unknown"])).min(1),
280
- })
281
- .strict()
282
- .superRefine((value, context) => {
283
- if (new Set(value.values).size !== value.values.length) {
284
- context.addIssue({
285
- code: "custom",
286
- path: ["values"],
287
- message: "Standard evidence support values must be unique.",
288
- });
289
- }
290
- });
291
- const agentReadinessSurfaceSelectorSchema = z.discriminatedUnion("kind", [
292
- z
293
- .object({
294
- kind: z.literal("resource_role"),
295
- roles: z.array(agentReadinessResourceRoleSchema).min(1),
296
- })
297
- .strict(),
298
- z
299
- .object({
300
- kind: z.literal("endpoint_role"),
301
- roles: z.array(agentReadinessEndpointRoleSchema).min(1),
302
- })
303
- .strict(),
304
- z
305
- .object({
306
- kind: z.literal("interface_signature"),
307
- modalities: z.array(agentReadinessInterfaceModalitySchema).min(1),
308
- functions: z.array(agentReadinessInterfaceFunctionSchema).min(1),
309
- })
310
- .strict(),
311
- z
312
- .object({
313
- kind: z.literal("assessment_target_membership"),
314
- membership: z.enum(["direct", "reachable", "selected_path"]),
315
- })
316
- .strict(),
317
- z
318
- .object({
319
- kind: z.literal("target_relation"),
320
- relation_kind: agentReadinessSurfaceRelationKindSchema,
321
- direction: z.enum(["from_target", "to_target"]),
322
- })
323
- .strict(),
324
- z
325
- .object({
326
- kind: z.literal("standard_requirement"),
327
- requirement: standardRequirementReferenceSchema,
328
- })
329
- .strict(),
230
+ export const agentReadinessPublicationVisibilitySchema = z.enum([
231
+ "discoverable",
232
+ "resolvable_only",
233
+ "private",
330
234
  ]);
331
- const agentReadinessSurfaceSelectorAlternativeSchema = z
332
- .object({
333
- alternative_id: agentReadinessIdentifierSchema,
334
- selectors: z.array(agentReadinessSurfaceSelectorSchema).min(1),
335
- })
336
- .strict()
337
- .superRefine((value, context) => {
338
- if (new Set(value.selectors.map((selector) => JSON.stringify(selector))).size !==
339
- value.selectors.length) {
340
- context.addIssue({
341
- code: "custom",
342
- path: ["selectors"],
343
- message: "A surface selector alternative cannot repeat a predicate.",
344
- });
345
- }
346
- });
347
- export const agentReadinessSurfaceSelectorGroupSchema = z
348
- .object({
349
- selector_group_id: agentReadinessIdentifierSchema,
350
- coverage: z.enum(["at_least_one", "all_matches"]),
351
- alternatives: z.array(agentReadinessSurfaceSelectorAlternativeSchema).min(1),
352
- })
353
- .strict()
354
- .superRefine((value, context) => {
355
- const ids = value.alternatives.map((alternative) => alternative.alternative_id);
356
- if (new Set(ids).size !== ids.length) {
357
- context.addIssue({
358
- code: "custom",
359
- path: ["alternatives"],
360
- message: "Surface selector alternative IDs must be unique within a group.",
361
- });
362
- }
363
- });
364
- const agentReadinessValueEvidenceRuleSchema = z
365
- .object({
366
- value: agentReadinessSignalValueSchema.exclude(["unknown"]),
367
- alternatives: z.array(agentReadinessCorroborationAlternativeSchema).min(1),
368
- })
369
- .strict()
370
- .superRefine((value, context) => {
371
- const ids = value.alternatives.map((alternative) => alternative.alternative_id);
372
- if (new Set(ids).size !== ids.length) {
373
- context.addIssue({
374
- code: "custom",
375
- path: ["alternatives"],
376
- message: "Corroboration alternative IDs must be unique for one signal value.",
377
- });
378
- }
379
- });
380
- export const agentReadinessStandardEvidenceMappingSchema = z
381
- .object({
382
- requirement: standardRequirementReferenceSchema,
383
- support: z.array(standardEvidenceSupportSchema).min(1).max(2),
384
- })
385
- .strict()
386
- .superRefine((value, context) => {
387
- if (value.requirement.relation !== "tests") {
388
- context.addIssue({
389
- code: "custom",
390
- path: ["requirement", "relation"],
391
- message: "Standard evidence mappings must test an exact requirement.",
392
- });
393
- }
394
- if (new Set(value.support.map((mapping) => mapping.result)).size !== value.support.length) {
395
- context.addIssue({
396
- code: "custom",
397
- path: ["support"],
398
- message: "A standard result may appear only once per requirement mapping.",
399
- });
400
- }
401
- });
402
- export const agentReadinessPolicySignalRuleSchema = z
403
- .object({
404
- stage: agentReadinessStageSchema,
405
- signal_code: agentReadinessSignalCodeSchema,
406
- evaluation_role: agentReadinessEvaluationRoleSchema,
407
- required: z.boolean(),
408
- pass_values: z.array(agentReadinessSignalValueSchema).min(1),
409
- constrained_values: z.array(agentReadinessSignalValueSchema),
410
- fail_values: z.array(agentReadinessSignalValueSchema),
411
- allow_not_applicable: z.boolean(),
412
- allowed_method_digests: z.array(agentReadinessDigestSchema).min(1),
413
- selector_groups: z.array(agentReadinessSurfaceSelectorGroupSchema).min(1),
414
- evidence_terms: z
415
- .array(z.string().regex(/^[a-z0-9][a-z0-9 .+/_:-]*[a-z0-9+]$/u))
416
- .min(1)
417
- .optional(),
418
- value_evidence: z.array(agentReadinessValueEvidenceRuleSchema).min(1),
419
- priority: z.number().int().nonnegative(),
420
- blocker: z
421
- .object({
422
- code: z.string().min(1).max(160),
423
- explanation: z.string().min(1).max(500),
424
- })
425
- .strict()
426
- .optional(),
427
- remediation: z
428
- .object({
429
- code: z.string().min(1).max(160),
430
- instruction: z.string().min(1).max(500),
431
- })
432
- .strict()
433
- .optional(),
434
- public_findings: publicFindingByValueSchema,
435
- external_references: z.array(standardRequirementReferenceSchema),
436
- standard_evidence: z.array(agentReadinessStandardEvidenceMappingSchema),
437
- })
438
- .strict()
439
- .superRefine((value, context) => {
440
- if (value.evidence_terms &&
441
- new Set(value.evidence_terms).size !== value.evidence_terms.length) {
442
- context.addIssue({
443
- code: "custom",
444
- path: ["evidence_terms"],
445
- message: "Evidence retrieval terms must be unique within a signal rule.",
446
- });
447
- }
448
- const assignments = [...value.pass_values, ...value.constrained_values, ...value.fail_values];
449
- if (new Set(assignments).size !== assignments.length) {
450
- context.addIssue({
451
- code: "custom",
452
- message: "An agent readiness signal value can map to only one outcome.",
453
- });
454
- }
455
- if (assignments.includes("not_applicable") !== value.allow_not_applicable) {
456
- context.addIssue({
457
- code: "custom",
458
- path: ["allow_not_applicable"],
459
- message: "not_applicable must be explicitly allowed and mapped.",
460
- });
461
- }
462
- if (assignments.includes("unknown")) {
463
- context.addIssue({
464
- code: "custom",
465
- message: "unknown is an unevaluated result and cannot be mapped to an outcome.",
466
- });
467
- }
468
- const expected = value.allow_not_applicable
469
- ? ["yes", "no", "partial", "not_applicable"]
470
- : ["yes", "no", "partial"];
471
- if (expected.some((candidate) => !assignments.includes(candidate)) ||
472
- assignments.some((candidate) => !expected.includes(candidate))) {
473
- context.addIssue({
474
- code: "custom",
475
- message: "Each assessable signal value must map to exactly one policy outcome.",
476
- });
477
- }
478
- if (new Set(value.allowed_method_digests).size !== value.allowed_method_digests.length) {
479
- context.addIssue({
480
- code: "custom",
481
- path: ["allowed_method_digests"],
482
- message: "Allowed Agent Readiness method digests must be unique.",
483
- });
484
- }
485
- const selectorGroupIds = value.selector_groups.map((group) => group.selector_group_id);
486
- if (new Set(selectorGroupIds).size !== selectorGroupIds.length) {
487
- context.addIssue({
488
- code: "custom",
489
- path: ["selector_groups"],
490
- message: "Signal selector group IDs must be unique.",
491
- });
492
- }
493
- const evidenceValues = value.value_evidence.map((evidence) => evidence.value);
494
- if (new Set(evidenceValues).size !== evidenceValues.length ||
495
- evidenceValues.length !== assignments.length ||
496
- assignments.some((assignment) => assignment === "unknown" || !evidenceValues.includes(assignment))) {
497
- context.addIssue({
498
- code: "custom",
499
- path: ["value_evidence"],
500
- message: "Every assessable signal value requires exactly one evidence rule.",
501
- });
502
- }
503
- const mappingKeys = value.standard_evidence.map(({ requirement }) => standardRequirementKey(requirement));
504
- if (new Set(mappingKeys).size !== mappingKeys.length) {
505
- context.addIssue({
506
- code: "custom",
507
- path: ["standard_evidence"],
508
- message: "A signal rule cannot repeat an external standard requirement mapping.",
509
- });
510
- }
511
- const testedReferenceKeys = value.external_references
512
- .filter((reference) => reference.relation === "tests")
513
- .map(standardRequirementKey);
514
- if (testedReferenceKeys.length !== mappingKeys.length ||
515
- testedReferenceKeys.some((key) => !mappingKeys.includes(key))) {
516
- context.addIssue({
517
- code: "custom",
518
- path: ["standard_evidence"],
519
- message: "Every tests reference must have exactly one policy-owned standard evidence mapping.",
520
- });
521
- }
522
- const assessableValues = new Set(assignments);
523
- if (value.standard_evidence.some((mapping) => mapping.support.some((support) => support.values.some((candidate) => !assessableValues.has(candidate))))) {
524
- context.addIssue({
525
- code: "custom",
526
- path: ["standard_evidence"],
527
- message: "Standard evidence can support only values assessed by the same signal rule.",
528
- });
529
- }
530
- if (value.evaluation_role === "informational") {
531
- if (value.required || value.blocker !== undefined || value.remediation !== undefined) {
532
- context.addIssue({
533
- code: "custom",
534
- message: "Informational signals must be optional and cannot own blockers or remediation.",
535
- });
536
- }
537
- }
538
- if (value.evaluation_role === "barrier" && value.required) {
539
- context.addIssue({
540
- code: "custom",
541
- path: ["required"],
542
- message: "Barrier signals are assessed but cannot be required for core coverage.",
543
- });
544
- }
545
- if (value.fail_values.length > 0 &&
546
- value.evaluation_role !== "informational" &&
547
- !value.blocker) {
548
- context.addIssue({
549
- code: "custom",
550
- path: ["blocker"],
551
- message: "A failing readiness signal requires a blocker explanation.",
552
- });
553
- }
554
- if ((value.constrained_values.length > 0 || value.fail_values.length > 0) &&
555
- value.evaluation_role !== "informational" &&
556
- !value.remediation) {
557
- context.addIssue({
558
- code: "custom",
559
- path: ["remediation"],
560
- message: "A constrained or failing readiness signal requires remediation.",
561
- });
562
- }
563
- });
564
- function standardRequirementKey(value) {
565
- return `${value.namespace}\u0000${value.version}\u0000${value.requirement_id}`;
566
- }
567
- const stageOutcomePrecedenceSchema = z
568
- .array(agentReadinessStageOutcomeSchema)
569
- .length(agentReadinessStageOutcomeSchema.options.length)
570
- .superRefine((value, context) => {
571
- if (new Set(value).size !== agentReadinessStageOutcomeSchema.options.length ||
572
- agentReadinessStageOutcomeSchema.options.some((outcome) => !value.includes(outcome))) {
573
- context.addIssue({
574
- code: "custom",
575
- message: "Agent readiness outcome precedence must contain every outcome exactly once.",
576
- });
577
- }
578
- });
579
- const publicStateDescriptorSchema = z
580
- .object({
581
- state: agentReadinessPublicStateSchema,
582
- label: z.string().min(1).max(40),
583
- })
584
- .strict();
585
- const agentReadinessGradingSchema = z
586
- .object({
587
- strategy: z.literal("stage-state-cardinality"),
588
- grade_by_limited_stage_count: z
589
- .object({
590
- "0": z.literal("A+"),
591
- "1": z.literal("A"),
592
- "2": z.literal("B+"),
593
- "3": z.literal("B"),
594
- "4": z.literal("C+"),
595
- "5": z.literal("C"),
596
- })
597
- .strict(),
598
- failure_grade_by_stage: z
599
- .object({
600
- evaluate: z.literal("D"),
601
- sign_up: z.literal("D"),
602
- pay: z.literal("D"),
603
- provision: z.literal("F"),
604
- operate: z.literal("F"),
605
- })
606
- .strict(),
607
- unverified_barrier_grade_cap: z.literal("B+").optional(),
608
- not_applicable_signals: z.literal("excluded"),
609
- unrated_when: z
610
- .object({
611
- coverage: z.literal("not-complete"),
612
- freshness: z.literal("not-fresh"),
613
- })
614
- .strict(),
615
- })
616
- .strict();
617
- export const agentReadinessAssessmentBasisSchema = z
618
- .object({
619
- principal: z.literal("authorized_human_or_organization"),
620
- initial_state: z
621
- .object({
622
- product_specific_account: z.literal(false),
623
- product_credentials: z.literal(false),
624
- paid_subscription: z.literal(false),
625
- provisioned_resource: z.literal(false),
626
- external_identity: z.literal("only_when_declared_by_exact_funnel"),
627
- })
628
- .strict(),
629
- permitted_human_boundaries: z.array(z.enum([
630
- "account_ownership_confirmation",
631
- "delegated_identity_consent",
632
- "regulated_approval",
633
- "final_payment_or_irreversible_commitment",
634
- ])),
635
- required_handoff_properties: z.array(z.enum(["exact_disclosure", "resumable_handoff", "deterministic_continuation"])),
636
- forbidden_substitutions: z.array(z.enum([
637
- "captcha_solving",
638
- "human_password_or_session_sharing",
639
- "concealed_agent_identity",
640
- "invented_eligibility",
641
- "unbound_out_of_band_code",
642
- "vendor_policy_bypass",
643
- "unapproved_consequential_action",
644
- ])),
645
- success: z
646
- .object({
647
- target_coverage: z.literal("every_declared_target"),
648
- interface_coverage: z.enum([
649
- "at_least_one_declared_alternative",
650
- "one_selected_interface_per_target",
651
- ]),
652
- authority: z.literal("scoped"),
653
- failure_semantics: z.literal("documented"),
654
- recovery: z.literal("supported"),
655
- })
656
- .strict(),
657
- observed_assessment: z
658
- .object({
659
- allowed_sources: z.array(z.enum([
660
- "public_documentation",
661
- "public_metadata",
662
- "public_endpoints",
663
- "non_mutating_interaction",
664
- "operator_attested_public_observation",
665
- ])),
666
- consequential_claims: z.literal("certification_required"),
667
- })
668
- .strict(),
669
- })
670
- .strict()
671
- .superRefine((value, context) => {
672
- for (const key of [
673
- "permitted_human_boundaries",
674
- "required_handoff_properties",
675
- "forbidden_substitutions",
676
- ]) {
677
- if (new Set(value[key]).size !== value[key].length) {
678
- context.addIssue({
679
- code: "custom",
680
- path: [key],
681
- message: `Assessment basis ${key} must be unique.`,
682
- });
683
- }
684
- }
685
- if (new Set(value.observed_assessment.allowed_sources).size !==
686
- value.observed_assessment.allowed_sources.length) {
687
- context.addIssue({
688
- code: "custom",
689
- path: ["observed_assessment", "allowed_sources"],
690
- message: "Assessment basis allowed sources must be unique.",
691
- });
692
- }
693
- });
694
- export const agentReadinessPolicyCoreSchema = z
695
- .object({
696
- policy_contract: z.literal("sourcey.agent-readiness-policy/v1alpha1"),
697
- policy_version: z.string().min(1),
698
- assessment_basis: agentReadinessAssessmentBasisSchema,
699
- assessment_methods: z.array(agentReadinessAssessmentMethodPackSchema).min(1),
700
- signal_rules: z.array(agentReadinessPolicySignalRuleSchema).min(1),
701
- aggregation: z
702
- .object({
703
- stage: z.literal("worst-signal"),
704
- overall: z.literal("worst-stage"),
705
- outcome_precedence: stageOutcomePrecedenceSchema,
706
- blocker_precedence: z.literal("outcome-then-rule-priority"),
707
- tie_breaker: z.literal("signal-code"),
708
- })
709
- .strict(),
710
- coverage: z
711
- .object({
712
- unknown_signals: z.literal("uncovered"),
713
- contradicted_signals: z.literal("uncovered"),
714
- })
715
- .strict(),
716
- freshness: z
717
- .object({
718
- source: z.literal("observation-freshness-policy"),
719
- aggregation: z.enum(["worst-required-signal", "worst-evaluated-signal", "worst-signal"]),
720
- })
721
- .strict(),
722
- public_states: z
723
- .object({
724
- pass: publicStateDescriptorSchema,
725
- constrained: publicStateDescriptorSchema,
726
- fail: publicStateDescriptorSchema,
727
- unknown: publicStateDescriptorSchema,
728
- not_applicable: publicStateDescriptorSchema,
729
- })
730
- .strict(),
731
- grading: agentReadinessGradingSchema,
732
- grade_derivation: z
733
- .object({
734
- label: z.string().min(1).max(80),
735
- explanation: z.string().min(1).max(500),
736
- coverage_rule: z.string().min(1).max(280),
737
- outcome_rule: z.string().min(1).max(280),
738
- })
739
- .strict(),
740
- })
741
- .strict()
742
- .superRefine((value, context) => {
743
- const keys = value.signal_rules.map((rule) => `${rule.stage}:${rule.signal_code}`);
744
- if (new Set(keys).size !== keys.length) {
745
- context.addIssue({
746
- code: "custom",
747
- path: ["signal_rules"],
748
- message: "An agent readiness policy cannot repeat a stage signal rule.",
749
- });
750
- }
751
- const priorities = value.signal_rules.map((rule) => `${rule.stage}:${rule.priority}`);
752
- if (new Set(priorities).size !== priorities.length) {
753
- context.addIssue({
754
- code: "custom",
755
- path: ["signal_rules"],
756
- message: "Agent readiness rule priorities must be unique within each stage.",
757
- });
758
- }
759
- const methodDigests = new Set(value.assessment_methods.map((method) => method.method_digest));
760
- if (methodDigests.size !== value.assessment_methods.length) {
761
- context.addIssue({
762
- code: "custom",
763
- path: ["assessment_methods"],
764
- message: "Agent readiness policy method digests must be unique.",
765
- });
766
- }
767
- for (const [index, rule] of value.signal_rules.entries()) {
768
- for (const methodDigest of rule.allowed_method_digests) {
769
- if (!methodDigests.has(methodDigest)) {
770
- context.addIssue({
771
- code: "custom",
772
- path: ["signal_rules", index, "allowed_method_digests"],
773
- message: `Agent readiness signal rule references unresolved method ${methodDigest}.`,
774
- });
775
- }
776
- }
777
- if (rule.evaluation_role === "graded" && !rule.required) {
778
- context.addIssue({
779
- code: "custom",
780
- path: ["signal_rules", index, "required"],
781
- message: "Every graded Agent Readiness signal is required for coverage.",
782
- });
783
- }
784
- if (rule.evaluation_role === "informational" && rule.required) {
785
- context.addIssue({
786
- code: "custom",
787
- path: ["signal_rules", index, "required"],
788
- message: "Informational Agent Readiness signals cannot be required for coverage.",
789
- });
790
- }
791
- if (rule.evaluation_role === "barrier" && rule.required) {
792
- context.addIssue({
793
- code: "custom",
794
- path: ["signal_rules", index, "required"],
795
- message: "Barrier Agent Readiness signals cannot be required for core coverage.",
796
- });
797
- }
798
- const standardSelectorKeys = rule.selector_groups.flatMap((group) => group.alternatives.flatMap((alternative) => alternative.selectors
799
- .filter((selector) => selector.kind === "standard_requirement")
800
- .map((selector) => standardRequirementKey(selector.requirement))));
801
- if (standardSelectorKeys.some((key) => !rule.standard_evidence.some(({ requirement }) => standardRequirementKey(requirement) === key))) {
802
- context.addIssue({
803
- code: "custom",
804
- path: ["signal_rules", index, "selector_groups"],
805
- message: "Standard requirement selectors must bind exact policy evidence mappings.",
806
- });
807
- }
808
- }
809
- for (const stage of agentReadinessStageSchema.options) {
810
- if (!value.signal_rules.some((rule) => rule.stage === stage && rule.evaluation_role === "graded" && rule.required)) {
811
- context.addIssue({
812
- code: "custom",
813
- path: ["signal_rules"],
814
- message: `Agent readiness policy has no required graded rules for ${stage}.`,
815
- });
816
- }
817
- }
818
- const expectedStates = {
819
- pass: "ready",
820
- constrained: "limited",
821
- fail: "blocked",
822
- unknown: "unknown",
823
- not_applicable: "not_applicable",
824
- };
825
- for (const [outcome, state] of Object.entries(expectedStates)) {
826
- if (value.public_states[outcome].state !== state) {
827
- context.addIssue({
828
- code: "custom",
829
- path: ["public_states", outcome, "state"],
830
- message: `Outcome ${outcome} must project to public state ${state}.`,
831
- });
832
- }
833
- }
834
- });
835
- export const agentReadinessPolicySchema = agentReadinessPolicyCoreSchema
836
- .safeExtend({ policy_digest: agentReadinessDigestSchema })
837
- .strict();
838
- const projectedBlockerSchema = z
235
+ /** What a reader needs of one step: its outcome and, for a human step, when the human is needed. */
236
+ const agentReadinessProjectedStepSchema = z
839
237
  .object({
840
- signal_code: agentReadinessSignalCodeSchema,
841
- code: z.string().min(1).max(160),
842
- explanation: z.string().min(1).max(500),
238
+ step: agentReadinessStepSchema,
239
+ outcome: agentReadinessStepOutcomeSchema,
240
+ timing: agentReadinessHandoffTimingSchema.nullable(),
843
241
  })
844
242
  .strict();
845
- const projectedRemediationSchema = z
846
- .object({
847
- signal_code: agentReadinessSignalCodeSchema,
848
- code: z.string().min(1).max(160),
849
- instruction: z.string().min(1).max(500),
850
- })
851
- .strict();
852
- const projectedFindingSchema = z
853
- .object({
854
- signal_code: agentReadinessSignalCodeSchema,
855
- condition: z.string().min(1).max(160),
856
- finding: z.string().min(1).max(280),
857
- context: agentReadinessPublicClaimTextSchema.optional(),
858
- })
859
- .strict();
860
- export const agentReadinessProjectedSignalSchema = z
861
- .object({
862
- signal_code: agentReadinessSignalCodeSchema,
863
- evaluation_role: agentReadinessEvaluationRoleSchema,
864
- required: z.boolean(),
865
- value: agentReadinessSignalValueSchema,
866
- value_label: z.string().min(1).max(40),
867
- outcome: agentReadinessStageOutcomeSchema,
868
- public_state: agentReadinessPublicStateSchema,
869
- condition: z.string().min(1).max(160),
870
- finding: z.string().min(1).max(280),
871
- evidence_status: z.enum(["supported", "contradicted", "mixed", "missing"]),
872
- freshness: agentReadinessFreshnessSchema,
873
- observed_at: agentReadinessInstantSchema.optional(),
874
- tested_surfaces: z.array(agentReadinessSurfaceReferenceSchema),
875
- assessment_method: agentReadinessAssessmentMethodSchema.optional(),
876
- determination_bases: z.array(agentReadinessDeterminationBasisSchema),
877
- note: agentReadinessPublicClaimTextSchema.optional(),
878
- blocker: projectedBlockerSchema.optional(),
879
- remediation: projectedRemediationSchema.optional(),
243
+ /** The latest run as the card shows it, each assertion with the job library's statement. */
244
+ const agentReadinessProjectedRunSchema = agentReadinessRunSummarySchema
245
+ .safeExtend({
246
+ assertions: z
247
+ .array(agentReadinessAssertionResultSchema.safeExtend({
248
+ statement: z.string().min(1).max(400),
249
+ }))
250
+ .max(8),
880
251
  })
881
252
  .strict();
882
- export const agentReadinessStageProjectionSchema = z
883
- .object({
884
- stage: agentReadinessStageSchema,
885
- stage_label: z.string().min(1).max(40),
886
- outcome: agentReadinessStageOutcomeSchema,
887
- public_state: agentReadinessPublicStateSchema,
888
- state_label: z.string().min(1).max(40),
889
- primary_finding: projectedFindingSchema,
890
- secondary_context: z.array(projectedFindingSchema),
891
- signals: z.array(agentReadinessProjectedSignalSchema),
892
- blockers: z.array(projectedBlockerSchema),
893
- remediations: z.array(projectedRemediationSchema),
894
- })
253
+ /**
254
+ * The readiness projection's provenance: the profile's dispute state, its Entity's
255
+ * attestation, and the events establishing both. Ratings rest on run records, not
256
+ * on evidence coverage.
257
+ */
258
+ const agentReadinessProvenanceSchema = provenanceSchema
259
+ .pick({ dispute: true, vendor_attestation: true, basis_event_ids: true })
895
260
  .strict();
896
- export const agentReadinessPublicationVisibilitySchema = z.enum([
897
- "discoverable",
898
- "resolvable_only",
899
- "private",
900
- ]);
901
261
  export const agentReadinessProjectionCoreSchema = z
902
262
  .object({
903
263
  projection_contract: z.literal("sourcey.agent-readiness-projection/v1alpha1"),
@@ -909,7 +269,6 @@ export const agentReadinessProjectionCoreSchema = z
909
269
  declaration: agentReadinessDeclarationStateSchema,
910
270
  surface_catalog: z
911
271
  .object({
912
- assessment_targets: z.array(agentReadinessAssessmentTargetSchema),
913
272
  participants: z.array(agentReadinessParticipantSchema),
914
273
  resources: z.array(agentReadinessResourceSchema),
915
274
  endpoints: z.array(agentReadinessEndpointSchema),
@@ -925,98 +284,53 @@ export const agentReadinessProjectionCoreSchema = z
925
284
  policy_digest: agentReadinessDigestSchema,
926
285
  policy_version: z.string().min(1),
927
286
  policy_as_of: agentReadinessInstantSchema,
928
- assessment_basis: agentReadinessAssessmentBasisSchema,
929
- overall_outcome: agentReadinessStageOutcomeSchema,
930
- public_state: agentReadinessPublicStateSchema,
931
- state_label: z.string().min(1).max(40),
932
- grade: agentReadinessGradeSchema,
933
- grade_derivation: z
287
+ job: z
934
288
  .object({
935
- label: z.string().min(1).max(80),
936
- explanation: z.string().min(1).max(500),
937
- coverage_rule: z.string().min(1).max(280),
938
- outcome_rule: z.string().min(1).max(280),
289
+ job_id: agentReadinessScopeKeySchema,
290
+ job_digest: agentReadinessDigestSchema,
291
+ category: agentReadinessScopeKeySchema,
292
+ name: z.string().min(1).max(120),
293
+ statement: z.string().min(1).max(400),
939
294
  })
940
295
  .strict(),
941
- publication: z
296
+ /** The interface the rated binding uses; null until a binding has run. */
297
+ interface_id: agentReadinessScopeKeySchema.nullable(),
298
+ label: agentReadinessEvidenceLabelSchema,
299
+ operate: z
942
300
  .object({
943
- visibility: agentReadinessPublicationVisibilitySchema,
944
- reasons: z.array(z.enum([
945
- "lifecycle_not_active",
946
- "coverage_incomplete",
947
- "required_evidence_not_supported",
948
- "freshness_not_fresh",
949
- "unrated",
950
- "no_useful_finding",
951
- "open_dispute",
952
- ])),
301
+ /** Null shows the dash: not yet exercised, or no letter's coverage met. */
302
+ letter: agentReadinessOperateLetterSchema.nullable(),
303
+ /** The letter's exact definition from the policy; null with the dash. */
304
+ statement: z.string().min(1).max(280).nullable(),
305
+ steps: z.array(agentReadinessProjectedStepSchema).length(AGENT_READINESS_STEPS.length),
306
+ /** Steps not yet assessed. */
307
+ missing: z.array(agentReadinessStepSchema),
308
+ /** Where the principal stays in the loop; never lowers the letter. */
309
+ approvals: z.array(agentReadinessStepSchema),
310
+ /** Where a person does the agent's work, and how often. */
311
+ workarounds: z.array(z
312
+ .object({ step: agentReadinessStepSchema, timing: agentReadinessHandoffTimingSchema })
313
+ .strict()),
953
314
  })
954
315
  .strict(),
955
- primary_finding: z
956
- .object({
957
- stage: agentReadinessStageSchema,
958
- stage_label: z.string().min(1).max(40),
959
- public_state: z.enum(["limited", "blocked"]),
960
- finding: projectedFindingSchema,
961
- blocker: projectedBlockerSchema.optional(),
962
- })
963
- .strict()
964
- .optional(),
965
- first_blocked_stage: z
966
- .object({
967
- stage: agentReadinessStageSchema,
968
- stage_label: z.string().min(1).max(40),
969
- finding: projectedFindingSchema,
970
- blocker: projectedBlockerSchema.optional(),
971
- })
972
- .strict()
973
- .optional(),
974
- limitations: z.array(z
975
- .object({
976
- stage: agentReadinessStageSchema,
977
- stage_label: z.string().min(1).max(40),
978
- finding: projectedFindingSchema,
979
- remediation: projectedRemediationSchema.optional(),
980
- })
981
- .strict()),
982
- stages: z.array(agentReadinessStageProjectionSchema).length(5),
983
- coverage: z
316
+ onboard: z.object({ level: agentReadinessOnboardLevelSchema.nullable() }).strict(),
317
+ discovery: z.array(agentReadinessDiscoveryFactSchema).max(64),
318
+ run: agentReadinessProjectedRunSchema,
319
+ /** When the published facts were established: the revision's latest run. */
320
+ last_run_at: agentReadinessInstantSchema,
321
+ publication: z
984
322
  .object({
985
- status: z.enum(["complete", "incomplete"]),
986
- required_signals: z.number().int().nonnegative(),
987
- covered_signals: z.number().int().nonnegative(),
988
- ratio: z.number().min(0).max(1),
989
- barrier_signals: z.number().int().nonnegative(),
990
- verified_barrier_signals: z.number().int().nonnegative(),
991
- barrier_ratio: z.number().min(0).max(1),
323
+ visibility: agentReadinessPublicationVisibilitySchema,
324
+ reasons: z.array(z.enum(["lifecycle_not_active", "open_dispute"])),
992
325
  })
993
326
  .strict(),
994
- last_tested_at: agentReadinessInstantSchema,
995
- freshness: agentReadinessFreshnessSchema,
996
- provenance: provenanceSchema,
327
+ provenance: agentReadinessProvenanceSchema,
997
328
  canonical_url: z.url(),
998
329
  })
999
330
  .strict();
1000
331
  export const agentReadinessProjectionSchema = agentReadinessProjectionCoreSchema
1001
332
  .safeExtend({ projection_digest: agentReadinessDigestSchema })
1002
333
  .strict();
1003
- export const agentReadinessStageSummarySchema = agentReadinessStageProjectionSchema
1004
- .pick({
1005
- stage: true,
1006
- stage_label: true,
1007
- outcome: true,
1008
- public_state: true,
1009
- state_label: true,
1010
- primary_finding: true,
1011
- })
1012
- .strict();
1013
- export const agentReadinessProvenanceSummarySchema = provenanceSchema
1014
- .pick({
1015
- freshness: true,
1016
- dispute: true,
1017
- vendor_attestation: true,
1018
- })
1019
- .strict();
1020
334
  export const agentReadinessProfileSummarySchema = agentReadinessProjectionSchema
1021
335
  .pick({
1022
336
  agent_readiness_profile_id: true,
@@ -1029,24 +343,61 @@ export const agentReadinessProfileSummarySchema = agentReadinessProjectionSchema
1029
343
  policy_digest: true,
1030
344
  policy_version: true,
1031
345
  policy_as_of: true,
1032
- overall_outcome: true,
1033
- public_state: true,
1034
- state_label: true,
1035
- grade: true,
1036
- grade_derivation: true,
346
+ label: true,
347
+ last_run_at: true,
1037
348
  publication: true,
1038
- primary_finding: true,
1039
- coverage: true,
1040
- last_tested_at: true,
1041
- freshness: true,
349
+ provenance: true,
1042
350
  canonical_url: true,
1043
351
  projection_digest: true,
1044
352
  })
1045
353
  .safeExtend({
1046
- stages: z.array(agentReadinessStageSummarySchema).length(5),
1047
- provenance: agentReadinessProvenanceSummarySchema,
354
+ operate: z
355
+ .object({
356
+ letter: agentReadinessOperateLetterSchema.nullable(),
357
+ steps: z.array(agentReadinessProjectedStepSchema).length(AGENT_READINESS_STEPS.length),
358
+ })
359
+ .strict(),
360
+ onboard: z.object({ level: agentReadinessOnboardLevelSchema.nullable() }).strict(),
361
+ })
362
+ .strict();
363
+ /** The freshness index's namespace for report cards; each subject is a profile id. */
364
+ export const AGENT_READINESS_FRESHNESS_NAMESPACE = "agent-readiness";
365
+ /**
366
+ * A card's freshness as serving reads it from the freshness index, beside the
367
+ * released facts: never released itself, so a recheck that changes nothing
368
+ * publishes nothing.
369
+ */
370
+ export const agentReadinessServedFreshnessSchema = z
371
+ .object({
372
+ /** The last check, successful or not. */
373
+ checked_at: agentReadinessInstantSchema,
374
+ /** The last successful check: the card's "observed" date; null before one. */
375
+ succeeded_at: agentReadinessInstantSchema.nullable(),
376
+ next_due_at: agentReadinessInstantSchema.nullable(),
377
+ /** Stale with no success, or a last success before the policy's window. */
378
+ state: agentReadinessFreshnessSchema,
1048
379
  })
1049
380
  .strict();
381
+ /** Served freshness by profile id: what a response carries beside its released profiles. */
382
+ export const agentReadinessServedFreshnessMapSchema = z.record(agentReadinessProfileIdSchema, agentReadinessServedFreshnessSchema);
383
+ /** The instant before which a card's last success makes it stale, under the policy's window. */
384
+ export function agentReadinessStaleBefore(now, policy) {
385
+ const at = Date.parse(now);
386
+ if (!Number.isFinite(at))
387
+ throw new Error("Agent Readiness freshness needs a valid instant.");
388
+ return new Date(at - policy.fresh_for_days * 86_400_000).toISOString();
389
+ }
390
+ /** The one definition of staleness: no success yet, or the last one before `staleBefore`. */
391
+ export function agentReadinessServedFreshness(record, staleBefore) {
392
+ return agentReadinessServedFreshnessSchema.parse({
393
+ checked_at: record.checkedAt,
394
+ succeeded_at: record.succeededAt,
395
+ next_due_at: record.nextDueAt,
396
+ state: record.succeededAt !== null && Date.parse(record.succeededAt) >= Date.parse(staleBefore)
397
+ ? "fresh"
398
+ : "stale",
399
+ });
400
+ }
1050
401
  /** The one compact public-list projection of a complete released profile. */
1051
402
  export function summarizeAgentReadinessProfile(profile) {
1052
403
  return agentReadinessProfileSummarySchema.parse({
@@ -1060,60 +411,25 @@ export function summarizeAgentReadinessProfile(profile) {
1060
411
  policy_digest: profile.policy_digest,
1061
412
  policy_version: profile.policy_version,
1062
413
  policy_as_of: profile.policy_as_of,
1063
- overall_outcome: profile.overall_outcome,
1064
- public_state: profile.public_state,
1065
- state_label: profile.state_label,
1066
- grade: profile.grade,
1067
- grade_derivation: profile.grade_derivation,
414
+ label: profile.label,
415
+ operate: { letter: profile.operate.letter, steps: profile.operate.steps },
416
+ onboard: profile.onboard,
417
+ last_run_at: profile.last_run_at,
1068
418
  publication: profile.publication,
1069
- primary_finding: profile.primary_finding,
1070
- stages: profile.stages.map((stage) => ({
1071
- stage: stage.stage,
1072
- stage_label: stage.stage_label,
1073
- outcome: stage.outcome,
1074
- public_state: stage.public_state,
1075
- state_label: stage.state_label,
1076
- primary_finding: stage.primary_finding,
1077
- })),
1078
- coverage: profile.coverage,
1079
- last_tested_at: profile.last_tested_at,
1080
- freshness: profile.freshness,
1081
- provenance: {
1082
- freshness: profile.provenance.freshness,
1083
- dispute: profile.provenance.dispute,
1084
- vendor_attestation: profile.provenance.vendor_attestation,
1085
- },
419
+ provenance: profile.provenance,
1086
420
  canonical_url: profile.canonical_url,
1087
421
  projection_digest: profile.projection_digest,
1088
422
  });
1089
423
  }
1090
- /**
1091
- * Stable identity and lineage fields for an immutable projection already admitted by a
1092
- * previous release. Unknown fields are retained so its exact historical bytes remain
1093
- * digest-verifiable; callers must not use this contract for current semantic reads.
1094
- */
1095
- export const agentReadinessProjectionLineageSchema = z
1096
- .object({
1097
- projection_contract: z.literal("sourcey.agent-readiness-projection/v1alpha1"),
1098
- agent_readiness_profile_id: agentReadinessProfileIdSchema,
1099
- entity_id: agentReadinessEntityIdSchema,
1100
- scope: agentReadinessScopeSchema,
1101
- lifecycle: lifecycleStatusSchema,
1102
- revision_digest: agentReadinessDigestSchema,
1103
- policy_digest: agentReadinessDigestSchema,
1104
- policy_as_of: agentReadinessInstantSchema,
1105
- publication: z.object({ visibility: agentReadinessPublicationVisibilitySchema }).passthrough(),
1106
- provenance: z.object({ freshness_policy_digest: agentReadinessDigestSchema }).passthrough(),
1107
- canonical_url: z.url(),
1108
- projection_digest: agentReadinessDigestSchema,
1109
- })
1110
- .passthrough();
424
+ /** Whether two profiles rate the same product and job. */
425
+ export function sameAgentReadinessScope(left, right) {
426
+ return left.product.key === right.product.key && left.job.key === right.job.key;
427
+ }
1111
428
  const agentReadinessOfferRelationRevisionFields = {
1112
429
  relation_id: agentReadinessIdentifierSchema,
1113
430
  agent_readiness_profile_id: agentReadinessProfileIdSchema,
1114
431
  offer_id: agentReadinessOfferIdSchema,
1115
432
  purpose: agentReadinessOfferRelationPurposeSchema,
1116
- applicable_stages: z.array(agentReadinessStageSchema).min(1),
1117
433
  effective_from: agentReadinessInstantSchema,
1118
434
  effective_until: agentReadinessInstantSchema.optional(),
1119
435
  declaration_revision_digest: agentReadinessDigestSchema,
@@ -1126,7 +442,7 @@ const agentReadinessOfferRelationRevisionFieldsSchema = z
1126
442
  ...agentReadinessOfferRelationRevisionFields,
1127
443
  })
1128
444
  .strict();
1129
- export const agentReadinessOfferRelationRevisionCoreSchema = agentReadinessOfferRelationRevisionFieldsSchema.superRefine(validateOfferRelationRevision);
445
+ export const agentReadinessOfferRelationRevisionCoreSchema = agentReadinessOfferRelationRevisionFieldsSchema.superRefine(validateOfferRelationInterval);
1130
446
  export const agentReadinessOfferRelationRevisionSchema = agentReadinessOfferRelationRevisionCoreSchema
1131
447
  .safeExtend({ relation_revision_digest: agentReadinessDigestSchema })
1132
448
  .strict();
@@ -1336,7 +652,7 @@ export const agentReadinessDeltaObjectSchema = z
1336
652
  agent_readiness_profile_id: agentReadinessProfileIdSchema,
1337
653
  profile_input: agentReadinessProfileInputSchema.nullable(),
1338
654
  projection: agentReadinessProjectionSchema.nullable(),
1339
- prior_projection: agentReadinessProjectionLineageSchema.nullable(),
655
+ prior_projection: agentReadinessProjectionSchema.nullable(),
1340
656
  catalog_context: z
1341
657
  .object({
1342
658
  entity_slug: z.string().regex(SLUG_PATTERN),
@@ -1387,11 +703,11 @@ export const agentReadinessDeltaObjectSchema = z
1387
703
  return;
1388
704
  }
1389
705
  if (value.prior_projection &&
1390
- !sameAgentReadinessScopeIdentity(value.prior_projection.scope, current.scope)) {
706
+ !sameAgentReadinessScope(value.prior_projection.scope, current.scope)) {
1391
707
  context.addIssue({
1392
708
  code: "custom",
1393
709
  path: ["projection", "scope"],
1394
- message: "An Agent Readiness profile cannot change product or funnel identity.",
710
+ message: "An Agent Readiness profile cannot change product or job identity.",
1395
711
  });
1396
712
  }
1397
713
  if (!value.prior_projection && !value.profile_input) {
@@ -1434,18 +750,6 @@ export const agentReadinessDeltaObjectSchema = z
1434
750
  });
1435
751
  }
1436
752
  });
1437
- function validateOfferRelationRevision(value, context) {
1438
- const canonicalStages = agentReadinessStageSchema.options.filter((stage) => value.applicable_stages.includes(stage));
1439
- if (canonicalStages.length !== value.applicable_stages.length ||
1440
- canonicalStages.some((stage, index) => value.applicable_stages[index] !== stage)) {
1441
- context.addIssue({
1442
- code: "custom",
1443
- path: ["applicable_stages"],
1444
- message: "Offer relation stages must be unique and ordered by the canonical funnel.",
1445
- });
1446
- }
1447
- validateOfferRelationInterval(value, context);
1448
- }
1449
753
  function validateOfferRelationInterval(value, context) {
1450
754
  if (value.effective_until &&
1451
755
  Date.parse(value.effective_until) <= Date.parse(value.effective_from)) {
@@ -1456,7 +760,7 @@ function validateOfferRelationInterval(value, context) {
1456
760
  });
1457
761
  }
1458
762
  }
1459
- export function sameAgentReadinessOfferRelationIdentity(left, right) {
763
+ function sameAgentReadinessOfferRelationIdentity(left, right) {
1460
764
  return (left.relation_id === right.relation_id &&
1461
765
  left.agent_readiness_profile_id === right.agent_readiness_profile_id &&
1462
766
  left.offer_id === right.offer_id &&
@@ -1497,17 +801,4 @@ function validateRelationMembership(actual, expected, context, path) {
1497
801
  }
1498
802
  }
1499
803
  }
1500
- function sameSurface(left, right) {
1501
- return left.node_kind === right.node_kind && left.node_id === right.node_id;
1502
- }
1503
- function assertUniqueSurfaceReferences(surfaces, context, path) {
1504
- if (new Set(surfaces.map((surface) => `${surface.node_kind}:${surface.node_id}`)).size !==
1505
- surfaces.length) {
1506
- context.addIssue({
1507
- code: "custom",
1508
- path,
1509
- message: "Surface references must be unique.",
1510
- });
1511
- }
1512
- }
1513
804
  //# sourceMappingURL=index.js.map