@sourcey/catalog-verifier 1.1.4 → 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 (492) hide show
  1. package/SBOM.cdx.json +16 -16
  2. package/SOURCEY-CLOSURE.json +572 -588
  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 +3532 -4849
  26. package/dist/contracts/agent-readiness/src/index.d.ts.map +1 -1
  27. package/dist/contracts/agent-readiness/src/index.js +228 -949
  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 +13861 -14913
  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 +6 -291
  92. package/dist/contracts/evidence/src/index.d.ts.map +1 -1
  93. package/dist/contracts/evidence/src/index.js +12 -99
  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 -245
  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 -478
  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 -968
  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 -470
  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 -2128
  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 -242
  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 -245
  390. package/dist/contracts/agent-readiness/src/evidence.d.ts.map +0 -1
  391. package/dist/contracts/agent-readiness/src/evidence.js +0 -213
  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 -389
  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/corroboration.d.ts +0 -38
  402. package/dist/modules/agent-readiness-policy/src/corroboration.d.ts.map +0 -1
  403. package/dist/modules/agent-readiness-policy/src/corroboration.js +0 -66
  404. package/dist/modules/agent-readiness-policy/src/corroboration.js.map +0 -1
  405. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.d.ts +0 -35
  406. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.d.ts.map +0 -1
  407. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js +0 -721
  408. package/dist/modules/agent-readiness-policy/src/current-policy-metrics.js.map +0 -1
  409. package/dist/modules/agent-readiness-policy/src/current-policy-standards.d.ts +0 -99
  410. package/dist/modules/agent-readiness-policy/src/current-policy-standards.d.ts.map +0 -1
  411. package/dist/modules/agent-readiness-policy/src/current-policy-standards.js +0 -99
  412. package/dist/modules/agent-readiness-policy/src/current-policy-standards.js.map +0 -1
  413. package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts +0 -4
  414. package/dist/modules/agent-readiness-policy/src/current-policy-validation.d.ts.map +0 -1
  415. package/dist/modules/agent-readiness-policy/src/current-policy-validation.js +0 -11
  416. package/dist/modules/agent-readiness-policy/src/current-policy-validation.js.map +0 -1
  417. package/dist/modules/agent-readiness-policy/src/grading.d.ts +0 -40
  418. package/dist/modules/agent-readiness-policy/src/grading.d.ts.map +0 -1
  419. package/dist/modules/agent-readiness-policy/src/grading.js +0 -46
  420. package/dist/modules/agent-readiness-policy/src/grading.js.map +0 -1
  421. package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts +0 -3
  422. package/dist/modules/agent-readiness-policy/src/policy-validation.d.ts.map +0 -1
  423. package/dist/modules/agent-readiness-policy/src/policy-validation.js +0 -39
  424. package/dist/modules/agent-readiness-policy/src/policy-validation.js.map +0 -1
  425. package/dist/modules/agent-readiness-policy/src/projection-lineage.d.ts +0 -3
  426. package/dist/modules/agent-readiness-policy/src/projection-lineage.d.ts.map +0 -1
  427. package/dist/modules/agent-readiness-policy/src/projection-lineage.js +0 -12
  428. package/dist/modules/agent-readiness-policy/src/projection-lineage.js.map +0 -1
  429. package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts +0 -7
  430. package/dist/modules/agent-readiness-policy/src/standard-mapping.d.ts.map +0 -1
  431. package/dist/modules/agent-readiness-policy/src/standard-mapping.js +0 -14
  432. package/dist/modules/agent-readiness-policy/src/standard-mapping.js.map +0 -1
  433. package/dist/modules/agent-readiness-policy/src/surface-selection.d.ts +0 -44
  434. package/dist/modules/agent-readiness-policy/src/surface-selection.d.ts.map +0 -1
  435. package/dist/modules/agent-readiness-policy/src/surface-selection.js +0 -238
  436. package/dist/modules/agent-readiness-policy/src/surface-selection.js.map +0 -1
  437. package/dist/modules/agent-readiness-repository/src/admission.d.ts +0 -35
  438. package/dist/modules/agent-readiness-repository/src/admission.d.ts.map +0 -1
  439. package/dist/modules/agent-readiness-repository/src/admission.js +0 -56
  440. package/dist/modules/agent-readiness-repository/src/admission.js.map +0 -1
  441. package/dist/modules/authority/src/retained-capture-receipt.d.ts +0 -95
  442. package/dist/modules/authority/src/retained-capture-receipt.d.ts.map +0 -1
  443. package/dist/modules/authority/src/retained-capture-receipt.js +0 -76
  444. package/dist/modules/authority/src/retained-capture-receipt.js.map +0 -1
  445. package/dist/modules/catalog-admission/src/publication-recomposition.d.ts +0 -42
  446. package/dist/modules/catalog-admission/src/publication-recomposition.d.ts.map +0 -1
  447. package/dist/modules/catalog-admission/src/publication-recomposition.js +0 -163
  448. package/dist/modules/catalog-admission/src/publication-recomposition.js.map +0 -1
  449. package/dist/modules/evidence-comparison/src/values.d.ts +0 -75
  450. package/dist/modules/evidence-comparison/src/values.d.ts.map +0 -1
  451. package/dist/modules/evidence-comparison/src/values.js +0 -283
  452. package/dist/modules/evidence-comparison/src/values.js.map +0 -1
  453. package/dist/modules/evidence-grounding/src/figures.d.ts +0 -56
  454. package/dist/modules/evidence-grounding/src/figures.d.ts.map +0 -1
  455. package/dist/modules/evidence-grounding/src/figures.js +0 -727
  456. package/dist/modules/evidence-grounding/src/figures.js.map +0 -1
  457. package/dist/modules/evidence-grounding/src/index.d.ts +0 -4
  458. package/dist/modules/evidence-grounding/src/index.d.ts.map +0 -1
  459. package/dist/modules/evidence-grounding/src/index.js +0 -4
  460. package/dist/modules/evidence-grounding/src/index.js.map +0 -1
  461. package/dist/modules/evidence-grounding/src/locator.d.ts +0 -50
  462. package/dist/modules/evidence-grounding/src/locator.d.ts.map +0 -1
  463. package/dist/modules/evidence-grounding/src/locator.js +0 -162
  464. package/dist/modules/evidence-grounding/src/locator.js.map +0 -1
  465. package/dist/modules/evidence-grounding/src/written.d.ts +0 -29
  466. package/dist/modules/evidence-grounding/src/written.d.ts.map +0 -1
  467. package/dist/modules/evidence-grounding/src/written.js +0 -111
  468. package/dist/modules/evidence-grounding/src/written.js.map +0 -1
  469. package/dist/modules/evidence-operations/src/dependency-versions.d.ts +0 -2
  470. package/dist/modules/evidence-operations/src/dependency-versions.d.ts.map +0 -1
  471. package/dist/modules/evidence-operations/src/dependency-versions.js +0 -17
  472. package/dist/modules/evidence-operations/src/dependency-versions.js.map +0 -1
  473. package/dist/modules/evidence-operations/src/html-document.d.ts +0 -4
  474. package/dist/modules/evidence-operations/src/html-document.d.ts.map +0 -1
  475. package/dist/modules/evidence-operations/src/html-document.js +0 -99
  476. package/dist/modules/evidence-operations/src/html-document.js.map +0 -1
  477. package/dist/modules/policy-identity/src/index.d.ts +0 -7
  478. package/dist/modules/policy-identity/src/index.d.ts.map +0 -1
  479. package/dist/modules/policy-identity/src/index.js +0 -23
  480. package/dist/modules/policy-identity/src/index.js.map +0 -1
  481. package/dist/modules/release/src/publication-authorities.d.ts +0 -298
  482. package/dist/modules/release/src/publication-authorities.d.ts.map +0 -1
  483. package/dist/modules/release/src/publication-authorities.js +0 -56
  484. package/dist/modules/release/src/publication-authorities.js.map +0 -1
  485. package/dist/modules/standard-adapter-runtime/src/index.d.ts +0 -16
  486. package/dist/modules/standard-adapter-runtime/src/index.d.ts.map +0 -1
  487. package/dist/modules/standard-adapter-runtime/src/index.js +0 -43
  488. package/dist/modules/standard-adapter-runtime/src/index.js.map +0 -1
  489. package/dist/modules/standard-evidence/src/index.d.ts +0 -33
  490. package/dist/modules/standard-evidence/src/index.d.ts.map +0 -1
  491. package/dist/modules/standard-evidence/src/index.js +0 -149
  492. 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)) {
135
64
  context.addIssue({
136
65
  code: "custom",
137
- path: ["signals"],
138
- message: "An agent readiness profile cannot repeat a stage signal.",
66
+ path: ["binding_digest"],
67
+ message: "A revision names its binding and its digest together, or neither.",
139
68
  });
140
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 ?? ""))) {
96
+ context.addIssue({
97
+ code: "custom",
98
+ path: ["runs"],
99
+ message: "A revision's runs are unique and ordered oldest first.",
100
+ });
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,658 +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
- fact_question: z.string().min(1).max(240),
435
- fact_predicates: z
436
- .object({
437
- yes: z.string().min(1).max(800),
438
- partial: z.string().min(1).max(800),
439
- no: z.string().min(1).max(800),
440
- unknown: z.string().min(1).max(800),
441
- not_applicable: z.string().min(1).max(800),
442
- })
443
- .strict(),
444
- public_findings: publicFindingByValueSchema,
445
- external_references: z.array(standardRequirementReferenceSchema),
446
- standard_evidence: z.array(agentReadinessStandardEvidenceMappingSchema),
447
- })
448
- .strict()
449
- .superRefine((value, context) => {
450
- if (value.evidence_terms &&
451
- new Set(value.evidence_terms).size !== value.evidence_terms.length) {
452
- context.addIssue({
453
- code: "custom",
454
- path: ["evidence_terms"],
455
- message: "Evidence retrieval terms must be unique within a signal rule.",
456
- });
457
- }
458
- const assignments = [...value.pass_values, ...value.constrained_values, ...value.fail_values];
459
- if (new Set(assignments).size !== assignments.length) {
460
- context.addIssue({
461
- code: "custom",
462
- message: "An agent readiness signal value can map to only one outcome.",
463
- });
464
- }
465
- if (assignments.includes("not_applicable") !== value.allow_not_applicable) {
466
- context.addIssue({
467
- code: "custom",
468
- path: ["allow_not_applicable"],
469
- message: "not_applicable must be explicitly allowed and mapped.",
470
- });
471
- }
472
- if (assignments.includes("unknown")) {
473
- context.addIssue({
474
- code: "custom",
475
- message: "unknown is an unevaluated result and cannot be mapped to an outcome.",
476
- });
477
- }
478
- const expected = value.allow_not_applicable
479
- ? ["yes", "no", "partial", "not_applicable"]
480
- : ["yes", "no", "partial"];
481
- if (expected.some((candidate) => !assignments.includes(candidate)) ||
482
- assignments.some((candidate) => !expected.includes(candidate))) {
483
- context.addIssue({
484
- code: "custom",
485
- message: "Each assessable signal value must map to exactly one policy outcome.",
486
- });
487
- }
488
- if (new Set(value.allowed_method_digests).size !== value.allowed_method_digests.length) {
489
- context.addIssue({
490
- code: "custom",
491
- path: ["allowed_method_digests"],
492
- message: "Allowed Agent Readiness method digests must be unique.",
493
- });
494
- }
495
- const selectorGroupIds = value.selector_groups.map((group) => group.selector_group_id);
496
- if (new Set(selectorGroupIds).size !== selectorGroupIds.length) {
497
- context.addIssue({
498
- code: "custom",
499
- path: ["selector_groups"],
500
- message: "Signal selector group IDs must be unique.",
501
- });
502
- }
503
- const evidenceValues = value.value_evidence.map((evidence) => evidence.value);
504
- if (new Set(evidenceValues).size !== evidenceValues.length ||
505
- evidenceValues.length !== assignments.length ||
506
- assignments.some((assignment) => assignment === "unknown" || !evidenceValues.includes(assignment))) {
507
- context.addIssue({
508
- code: "custom",
509
- path: ["value_evidence"],
510
- message: "Every assessable signal value requires exactly one evidence rule.",
511
- });
512
- }
513
- const mappingKeys = value.standard_evidence.map(({ requirement }) => standardRequirementKey(requirement));
514
- if (new Set(mappingKeys).size !== mappingKeys.length) {
515
- context.addIssue({
516
- code: "custom",
517
- path: ["standard_evidence"],
518
- message: "A signal rule cannot repeat an external standard requirement mapping.",
519
- });
520
- }
521
- const testedReferenceKeys = value.external_references
522
- .filter((reference) => reference.relation === "tests")
523
- .map(standardRequirementKey);
524
- if (testedReferenceKeys.length !== mappingKeys.length ||
525
- testedReferenceKeys.some((key) => !mappingKeys.includes(key))) {
526
- context.addIssue({
527
- code: "custom",
528
- path: ["standard_evidence"],
529
- message: "Every tests reference must have exactly one policy-owned standard evidence mapping.",
530
- });
531
- }
532
- const assessableValues = new Set(assignments);
533
- if (value.standard_evidence.some((mapping) => mapping.support.some((support) => support.values.some((candidate) => !assessableValues.has(candidate))))) {
534
- context.addIssue({
535
- code: "custom",
536
- path: ["standard_evidence"],
537
- message: "Standard evidence can support only values assessed by the same signal rule.",
538
- });
539
- }
540
- if (value.evaluation_role === "informational") {
541
- if (value.required || value.blocker !== undefined || value.remediation !== undefined) {
542
- context.addIssue({
543
- code: "custom",
544
- message: "Informational signals must be optional and cannot own blockers or remediation.",
545
- });
546
- }
547
- }
548
- if (value.evaluation_role === "barrier" && value.required) {
549
- context.addIssue({
550
- code: "custom",
551
- path: ["required"],
552
- message: "Barrier signals are assessed but cannot be required for core coverage.",
553
- });
554
- }
555
- if (value.fail_values.length > 0 &&
556
- value.evaluation_role !== "informational" &&
557
- !value.blocker) {
558
- context.addIssue({
559
- code: "custom",
560
- path: ["blocker"],
561
- message: "A failing readiness signal requires a blocker explanation.",
562
- });
563
- }
564
- if ((value.constrained_values.length > 0 || value.fail_values.length > 0) &&
565
- value.evaluation_role !== "informational" &&
566
- !value.remediation) {
567
- context.addIssue({
568
- code: "custom",
569
- path: ["remediation"],
570
- message: "A constrained or failing readiness signal requires remediation.",
571
- });
572
- }
573
- });
574
- function standardRequirementKey(value) {
575
- return `${value.namespace}\u0000${value.version}\u0000${value.requirement_id}`;
576
- }
577
- const stageOutcomePrecedenceSchema = z
578
- .array(agentReadinessStageOutcomeSchema)
579
- .length(agentReadinessStageOutcomeSchema.options.length)
580
- .superRefine((value, context) => {
581
- if (new Set(value).size !== agentReadinessStageOutcomeSchema.options.length ||
582
- agentReadinessStageOutcomeSchema.options.some((outcome) => !value.includes(outcome))) {
583
- context.addIssue({
584
- code: "custom",
585
- message: "Agent readiness outcome precedence must contain every outcome exactly once.",
586
- });
587
- }
588
- });
589
- const publicStateDescriptorSchema = z
590
- .object({
591
- state: agentReadinessPublicStateSchema,
592
- label: z.string().min(1).max(40),
593
- })
594
- .strict();
595
- const agentReadinessGradingSchema = z
596
- .object({
597
- strategy: z.literal("stage-state-cardinality"),
598
- grade_by_limited_stage_count: z
599
- .object({
600
- "0": z.literal("A+"),
601
- "1": z.literal("A"),
602
- "2": z.literal("B+"),
603
- "3": z.literal("B"),
604
- "4": z.literal("C+"),
605
- "5": z.literal("C"),
606
- })
607
- .strict(),
608
- failure_grade_by_stage: z
609
- .object({
610
- evaluate: z.literal("D"),
611
- sign_up: z.literal("D"),
612
- pay: z.literal("D"),
613
- provision: z.literal("F"),
614
- operate: z.literal("F"),
615
- })
616
- .strict(),
617
- unverified_barrier_grade_cap: z.literal("B+").optional(),
618
- unobserved_operation_grade_cap: z.literal("B+"),
619
- not_applicable_signals: z.literal("excluded"),
620
- unrated_when: z
621
- .object({
622
- coverage: z.literal("not-complete"),
623
- freshness: z.literal("not-fresh"),
624
- except: z.literal("fresh-supported-essential-failure"),
625
- })
626
- .strict(),
627
- })
628
- .strict();
629
- export const agentReadinessAssessmentBasisSchema = z
630
- .object({
631
- principal: z.literal("authorized_human_or_organization"),
632
- initial_state: z
633
- .object({
634
- product_specific_account: z.literal(false),
635
- product_credentials: z.literal(false),
636
- paid_subscription: z.literal(false),
637
- provisioned_resource: z.literal(false),
638
- external_identity: z.literal("only_when_declared_by_exact_funnel"),
639
- })
640
- .strict(),
641
- permitted_human_boundaries: z.array(z.enum([
642
- "account_ownership_confirmation",
643
- "delegated_identity_consent",
644
- "regulated_approval",
645
- "final_payment_or_irreversible_commitment",
646
- ])),
647
- required_handoff_properties: z.array(z.enum(["exact_disclosure", "resumable_handoff", "deterministic_continuation"])),
648
- forbidden_substitutions: z.array(z.enum([
649
- "captcha_solving",
650
- "human_password_or_session_sharing",
651
- "concealed_agent_identity",
652
- "invented_eligibility",
653
- "unbound_out_of_band_code",
654
- "vendor_policy_bypass",
655
- "unapproved_consequential_action",
656
- ])),
657
- success: z
658
- .object({
659
- target_coverage: z.literal("every_declared_target"),
660
- interface_coverage: z.enum([
661
- "at_least_one_declared_alternative",
662
- "one_selected_interface_per_target",
663
- ]),
664
- authority: z.literal("scoped"),
665
- failure_semantics: z.literal("documented"),
666
- recovery: z.literal("supported"),
667
- })
668
- .strict(),
669
- observed_assessment: z
670
- .object({
671
- allowed_sources: z.array(z.enum([
672
- "public_documentation",
673
- "public_metadata",
674
- "public_endpoints",
675
- "non_mutating_interaction",
676
- "operator_attested_public_observation",
677
- ])),
678
- consequential_claims: z.literal("certification_required"),
679
- })
680
- .strict(),
681
- })
682
- .strict()
683
- .superRefine((value, context) => {
684
- for (const key of [
685
- "permitted_human_boundaries",
686
- "required_handoff_properties",
687
- "forbidden_substitutions",
688
- ]) {
689
- if (new Set(value[key]).size !== value[key].length) {
690
- context.addIssue({
691
- code: "custom",
692
- path: [key],
693
- message: `Assessment basis ${key} must be unique.`,
694
- });
695
- }
696
- }
697
- if (new Set(value.observed_assessment.allowed_sources).size !==
698
- value.observed_assessment.allowed_sources.length) {
699
- context.addIssue({
700
- code: "custom",
701
- path: ["observed_assessment", "allowed_sources"],
702
- message: "Assessment basis allowed sources must be unique.",
703
- });
704
- }
705
- });
706
- export const agentReadinessPolicyCoreSchema = z
707
- .object({
708
- policy_contract: z.literal("sourcey.agent-readiness-policy/v1alpha1"),
709
- policy_version: z.string().min(1),
710
- assessment_basis: agentReadinessAssessmentBasisSchema,
711
- assessment_methods: z.array(agentReadinessAssessmentMethodPackSchema).min(1),
712
- signal_rules: z.array(agentReadinessPolicySignalRuleSchema).min(1),
713
- aggregation: z
714
- .object({
715
- stage: z.literal("worst-signal"),
716
- overall: z.literal("worst-stage"),
717
- outcome_precedence: stageOutcomePrecedenceSchema,
718
- blocker_precedence: z.literal("outcome-then-rule-priority"),
719
- tie_breaker: z.literal("signal-code"),
720
- })
721
- .strict(),
722
- coverage: z
723
- .object({
724
- unknown_signals: z.literal("uncovered"),
725
- contradicted_signals: z.literal("uncovered"),
726
- })
727
- .strict(),
728
- freshness: z
729
- .object({
730
- source: z.literal("observation-freshness-policy"),
731
- aggregation: z.enum(["worst-required-signal", "worst-evaluated-signal", "worst-signal"]),
732
- })
733
- .strict(),
734
- public_states: z
735
- .object({
736
- pass: publicStateDescriptorSchema,
737
- constrained: publicStateDescriptorSchema,
738
- fail: publicStateDescriptorSchema,
739
- unknown: publicStateDescriptorSchema,
740
- not_applicable: publicStateDescriptorSchema,
741
- })
742
- .strict(),
743
- grading: agentReadinessGradingSchema,
744
- grade_derivation: z
745
- .object({
746
- label: z.string().min(1).max(80),
747
- explanation: z.string().min(1).max(500),
748
- coverage_rule: z.string().min(1).max(280),
749
- outcome_rule: z.string().min(1).max(280),
750
- })
751
- .strict(),
752
- })
753
- .strict()
754
- .superRefine((value, context) => {
755
- const keys = value.signal_rules.map((rule) => `${rule.stage}:${rule.signal_code}`);
756
- if (new Set(keys).size !== keys.length) {
757
- context.addIssue({
758
- code: "custom",
759
- path: ["signal_rules"],
760
- message: "An agent readiness policy cannot repeat a stage signal rule.",
761
- });
762
- }
763
- const priorities = value.signal_rules.map((rule) => `${rule.stage}:${rule.priority}`);
764
- if (new Set(priorities).size !== priorities.length) {
765
- context.addIssue({
766
- code: "custom",
767
- path: ["signal_rules"],
768
- message: "Agent readiness rule priorities must be unique within each stage.",
769
- });
770
- }
771
- const methodDigests = new Set(value.assessment_methods.map((method) => method.method_digest));
772
- if (methodDigests.size !== value.assessment_methods.length) {
773
- context.addIssue({
774
- code: "custom",
775
- path: ["assessment_methods"],
776
- message: "Agent readiness policy method digests must be unique.",
777
- });
778
- }
779
- for (const [index, rule] of value.signal_rules.entries()) {
780
- for (const methodDigest of rule.allowed_method_digests) {
781
- if (!methodDigests.has(methodDigest)) {
782
- context.addIssue({
783
- code: "custom",
784
- path: ["signal_rules", index, "allowed_method_digests"],
785
- message: `Agent readiness signal rule references unresolved method ${methodDigest}.`,
786
- });
787
- }
788
- }
789
- if (rule.evaluation_role === "graded" && !rule.required) {
790
- context.addIssue({
791
- code: "custom",
792
- path: ["signal_rules", index, "required"],
793
- message: "Every graded Agent Readiness signal is required for coverage.",
794
- });
795
- }
796
- if (rule.evaluation_role === "informational" && rule.required) {
797
- context.addIssue({
798
- code: "custom",
799
- path: ["signal_rules", index, "required"],
800
- message: "Informational Agent Readiness signals cannot be required for coverage.",
801
- });
802
- }
803
- if (rule.evaluation_role === "barrier" && rule.required) {
804
- context.addIssue({
805
- code: "custom",
806
- path: ["signal_rules", index, "required"],
807
- message: "Barrier Agent Readiness signals cannot be required for core coverage.",
808
- });
809
- }
810
- const standardSelectorKeys = rule.selector_groups.flatMap((group) => group.alternatives.flatMap((alternative) => alternative.selectors
811
- .filter((selector) => selector.kind === "standard_requirement")
812
- .map((selector) => standardRequirementKey(selector.requirement))));
813
- if (standardSelectorKeys.some((key) => !rule.standard_evidence.some(({ requirement }) => standardRequirementKey(requirement) === key))) {
814
- context.addIssue({
815
- code: "custom",
816
- path: ["signal_rules", index, "selector_groups"],
817
- message: "Standard requirement selectors must bind exact policy evidence mappings.",
818
- });
819
- }
820
- }
821
- for (const stage of agentReadinessStageSchema.options) {
822
- if (!value.signal_rules.some((rule) => rule.stage === stage && rule.evaluation_role === "graded" && rule.required)) {
823
- context.addIssue({
824
- code: "custom",
825
- path: ["signal_rules"],
826
- message: `Agent readiness policy has no required graded rules for ${stage}.`,
827
- });
828
- }
829
- }
830
- const expectedStates = {
831
- pass: "ready",
832
- constrained: "limited",
833
- fail: "blocked",
834
- unknown: "unknown",
835
- not_applicable: "not_applicable",
836
- };
837
- for (const [outcome, state] of Object.entries(expectedStates)) {
838
- if (value.public_states[outcome].state !== state) {
839
- context.addIssue({
840
- code: "custom",
841
- path: ["public_states", outcome, "state"],
842
- message: `Outcome ${outcome} must project to public state ${state}.`,
843
- });
844
- }
845
- }
846
- });
847
- export const agentReadinessPolicySchema = agentReadinessPolicyCoreSchema
848
- .safeExtend({ policy_digest: agentReadinessDigestSchema })
849
- .strict();
850
- 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
851
237
  .object({
852
- signal_code: agentReadinessSignalCodeSchema,
853
- code: z.string().min(1).max(160),
854
- explanation: z.string().min(1).max(500),
238
+ step: agentReadinessStepSchema,
239
+ outcome: agentReadinessStepOutcomeSchema,
240
+ timing: agentReadinessHandoffTimingSchema.nullable(),
855
241
  })
856
242
  .strict();
857
- const projectedRemediationSchema = z
858
- .object({
859
- signal_code: agentReadinessSignalCodeSchema,
860
- code: z.string().min(1).max(160),
861
- instruction: z.string().min(1).max(500),
862
- })
863
- .strict();
864
- const projectedFindingSchema = z
865
- .object({
866
- signal_code: agentReadinessSignalCodeSchema,
867
- condition: z.string().min(1).max(160),
868
- finding: z.string().min(1).max(280),
869
- context: agentReadinessPublicClaimTextSchema.optional(),
870
- })
871
- .strict();
872
- export const agentReadinessProjectedSignalSchema = z
873
- .object({
874
- signal_code: agentReadinessSignalCodeSchema,
875
- evaluation_role: agentReadinessEvaluationRoleSchema,
876
- required: z.boolean(),
877
- value: agentReadinessSignalValueSchema,
878
- value_label: z.string().min(1).max(40),
879
- outcome: agentReadinessStageOutcomeSchema,
880
- public_state: agentReadinessPublicStateSchema,
881
- condition: z.string().min(1).max(160),
882
- finding: z.string().min(1).max(280),
883
- evidence_status: z.enum(["supported", "contradicted", "mixed", "missing"]),
884
- freshness: agentReadinessFreshnessSchema,
885
- observed_at: agentReadinessInstantSchema.optional(),
886
- tested_surfaces: z.array(agentReadinessSurfaceReferenceSchema),
887
- assessment_method: agentReadinessAssessmentMethodSchema.optional(),
888
- determination_bases: z.array(agentReadinessDeterminationBasisSchema),
889
- note: agentReadinessPublicClaimTextSchema.optional(),
890
- blocker: projectedBlockerSchema.optional(),
891
- 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),
892
251
  })
893
252
  .strict();
894
- export const agentReadinessStageProjectionSchema = z
895
- .object({
896
- stage: agentReadinessStageSchema,
897
- stage_label: z.string().min(1).max(40),
898
- outcome: agentReadinessStageOutcomeSchema,
899
- public_state: agentReadinessPublicStateSchema,
900
- state_label: z.string().min(1).max(40),
901
- primary_finding: projectedFindingSchema,
902
- secondary_context: z.array(projectedFindingSchema),
903
- signals: z.array(agentReadinessProjectedSignalSchema),
904
- blockers: z.array(projectedBlockerSchema),
905
- remediations: z.array(projectedRemediationSchema),
906
- })
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 })
907
260
  .strict();
908
- export const agentReadinessPublicationVisibilitySchema = z.enum([
909
- "discoverable",
910
- "resolvable_only",
911
- "private",
912
- ]);
913
261
  export const agentReadinessProjectionCoreSchema = z
914
262
  .object({
915
263
  projection_contract: z.literal("sourcey.agent-readiness-projection/v1alpha1"),
@@ -921,7 +269,6 @@ export const agentReadinessProjectionCoreSchema = z
921
269
  declaration: agentReadinessDeclarationStateSchema,
922
270
  surface_catalog: z
923
271
  .object({
924
- assessment_targets: z.array(agentReadinessAssessmentTargetSchema),
925
272
  participants: z.array(agentReadinessParticipantSchema),
926
273
  resources: z.array(agentReadinessResourceSchema),
927
274
  endpoints: z.array(agentReadinessEndpointSchema),
@@ -937,98 +284,53 @@ export const agentReadinessProjectionCoreSchema = z
937
284
  policy_digest: agentReadinessDigestSchema,
938
285
  policy_version: z.string().min(1),
939
286
  policy_as_of: agentReadinessInstantSchema,
940
- assessment_basis: agentReadinessAssessmentBasisSchema,
941
- overall_outcome: agentReadinessStageOutcomeSchema,
942
- public_state: agentReadinessPublicStateSchema,
943
- state_label: z.string().min(1).max(40),
944
- grade: agentReadinessGradeSchema,
945
- grade_derivation: z
287
+ job: z
946
288
  .object({
947
- label: z.string().min(1).max(80),
948
- explanation: z.string().min(1).max(500),
949
- coverage_rule: z.string().min(1).max(280),
950
- 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),
951
294
  })
952
295
  .strict(),
953
- publication: z
954
- .object({
955
- visibility: agentReadinessPublicationVisibilitySchema,
956
- reasons: z.array(z.enum([
957
- "lifecycle_not_active",
958
- "coverage_incomplete",
959
- "required_evidence_not_supported",
960
- "freshness_not_fresh",
961
- "unrated",
962
- "no_useful_finding",
963
- "open_dispute",
964
- ])),
296
+ /** The interface the rated binding uses; null until a binding has run. */
297
+ interface_id: agentReadinessScopeKeySchema.nullable(),
298
+ label: agentReadinessEvidenceLabelSchema,
299
+ operate: z
300
+ .object({
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()),
965
314
  })
966
315
  .strict(),
967
- primary_finding: z
968
- .object({
969
- stage: agentReadinessStageSchema,
970
- stage_label: z.string().min(1).max(40),
971
- public_state: z.enum(["limited", "blocked"]),
972
- finding: projectedFindingSchema,
973
- blocker: projectedBlockerSchema.optional(),
974
- })
975
- .strict()
976
- .optional(),
977
- first_blocked_stage: z
978
- .object({
979
- stage: agentReadinessStageSchema,
980
- stage_label: z.string().min(1).max(40),
981
- finding: projectedFindingSchema,
982
- blocker: projectedBlockerSchema.optional(),
983
- })
984
- .strict()
985
- .optional(),
986
- limitations: z.array(z
987
- .object({
988
- stage: agentReadinessStageSchema,
989
- stage_label: z.string().min(1).max(40),
990
- finding: projectedFindingSchema,
991
- remediation: projectedRemediationSchema.optional(),
992
- })
993
- .strict()),
994
- stages: z.array(agentReadinessStageProjectionSchema).length(5),
995
- 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
996
322
  .object({
997
- status: z.enum(["complete", "incomplete"]),
998
- required_signals: z.number().int().nonnegative(),
999
- covered_signals: z.number().int().nonnegative(),
1000
- ratio: z.number().min(0).max(1),
1001
- barrier_signals: z.number().int().nonnegative(),
1002
- verified_barrier_signals: z.number().int().nonnegative(),
1003
- barrier_ratio: z.number().min(0).max(1),
323
+ visibility: agentReadinessPublicationVisibilitySchema,
324
+ reasons: z.array(z.enum(["lifecycle_not_active", "open_dispute"])),
1004
325
  })
1005
326
  .strict(),
1006
- last_tested_at: agentReadinessInstantSchema,
1007
- freshness: agentReadinessFreshnessSchema,
1008
- provenance: provenanceSchema,
327
+ provenance: agentReadinessProvenanceSchema,
1009
328
  canonical_url: z.url(),
1010
329
  })
1011
330
  .strict();
1012
331
  export const agentReadinessProjectionSchema = agentReadinessProjectionCoreSchema
1013
332
  .safeExtend({ projection_digest: agentReadinessDigestSchema })
1014
333
  .strict();
1015
- export const agentReadinessStageSummarySchema = agentReadinessStageProjectionSchema
1016
- .pick({
1017
- stage: true,
1018
- stage_label: true,
1019
- outcome: true,
1020
- public_state: true,
1021
- state_label: true,
1022
- primary_finding: true,
1023
- })
1024
- .strict();
1025
- export const agentReadinessProvenanceSummarySchema = provenanceSchema
1026
- .pick({
1027
- freshness: true,
1028
- dispute: true,
1029
- vendor_attestation: true,
1030
- })
1031
- .strict();
1032
334
  export const agentReadinessProfileSummarySchema = agentReadinessProjectionSchema
1033
335
  .pick({
1034
336
  agent_readiness_profile_id: true,
@@ -1041,24 +343,61 @@ export const agentReadinessProfileSummarySchema = agentReadinessProjectionSchema
1041
343
  policy_digest: true,
1042
344
  policy_version: true,
1043
345
  policy_as_of: true,
1044
- overall_outcome: true,
1045
- public_state: true,
1046
- state_label: true,
1047
- grade: true,
1048
- grade_derivation: true,
346
+ label: true,
347
+ last_run_at: true,
1049
348
  publication: true,
1050
- primary_finding: true,
1051
- coverage: true,
1052
- last_tested_at: true,
1053
- freshness: true,
349
+ provenance: true,
1054
350
  canonical_url: true,
1055
351
  projection_digest: true,
1056
352
  })
1057
353
  .safeExtend({
1058
- stages: z.array(agentReadinessStageSummarySchema).length(5),
1059
- 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,
1060
379
  })
1061
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
+ }
1062
401
  /** The one compact public-list projection of a complete released profile. */
1063
402
  export function summarizeAgentReadinessProfile(profile) {
1064
403
  return agentReadinessProfileSummarySchema.parse({
@@ -1072,60 +411,25 @@ export function summarizeAgentReadinessProfile(profile) {
1072
411
  policy_digest: profile.policy_digest,
1073
412
  policy_version: profile.policy_version,
1074
413
  policy_as_of: profile.policy_as_of,
1075
- overall_outcome: profile.overall_outcome,
1076
- public_state: profile.public_state,
1077
- state_label: profile.state_label,
1078
- grade: profile.grade,
1079
- 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,
1080
418
  publication: profile.publication,
1081
- primary_finding: profile.primary_finding,
1082
- stages: profile.stages.map((stage) => ({
1083
- stage: stage.stage,
1084
- stage_label: stage.stage_label,
1085
- outcome: stage.outcome,
1086
- public_state: stage.public_state,
1087
- state_label: stage.state_label,
1088
- primary_finding: stage.primary_finding,
1089
- })),
1090
- coverage: profile.coverage,
1091
- last_tested_at: profile.last_tested_at,
1092
- freshness: profile.freshness,
1093
- provenance: {
1094
- freshness: profile.provenance.freshness,
1095
- dispute: profile.provenance.dispute,
1096
- vendor_attestation: profile.provenance.vendor_attestation,
1097
- },
419
+ provenance: profile.provenance,
1098
420
  canonical_url: profile.canonical_url,
1099
421
  projection_digest: profile.projection_digest,
1100
422
  });
1101
423
  }
1102
- /**
1103
- * Stable identity and lineage fields for an immutable projection already admitted by a
1104
- * previous release. Unknown fields are retained so its exact historical bytes remain
1105
- * digest-verifiable; callers must not use this contract for current semantic reads.
1106
- */
1107
- export const agentReadinessProjectionLineageSchema = z
1108
- .object({
1109
- projection_contract: z.literal("sourcey.agent-readiness-projection/v1alpha1"),
1110
- agent_readiness_profile_id: agentReadinessProfileIdSchema,
1111
- entity_id: agentReadinessEntityIdSchema,
1112
- scope: agentReadinessScopeSchema,
1113
- lifecycle: lifecycleStatusSchema,
1114
- revision_digest: agentReadinessDigestSchema,
1115
- policy_digest: agentReadinessDigestSchema,
1116
- policy_as_of: agentReadinessInstantSchema,
1117
- publication: z.object({ visibility: agentReadinessPublicationVisibilitySchema }).passthrough(),
1118
- provenance: z.object({ freshness_policy_digest: agentReadinessDigestSchema }).passthrough(),
1119
- canonical_url: z.url(),
1120
- projection_digest: agentReadinessDigestSchema,
1121
- })
1122
- .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
+ }
1123
428
  const agentReadinessOfferRelationRevisionFields = {
1124
429
  relation_id: agentReadinessIdentifierSchema,
1125
430
  agent_readiness_profile_id: agentReadinessProfileIdSchema,
1126
431
  offer_id: agentReadinessOfferIdSchema,
1127
432
  purpose: agentReadinessOfferRelationPurposeSchema,
1128
- applicable_stages: z.array(agentReadinessStageSchema).min(1),
1129
433
  effective_from: agentReadinessInstantSchema,
1130
434
  effective_until: agentReadinessInstantSchema.optional(),
1131
435
  declaration_revision_digest: agentReadinessDigestSchema,
@@ -1138,7 +442,7 @@ const agentReadinessOfferRelationRevisionFieldsSchema = z
1138
442
  ...agentReadinessOfferRelationRevisionFields,
1139
443
  })
1140
444
  .strict();
1141
- export const agentReadinessOfferRelationRevisionCoreSchema = agentReadinessOfferRelationRevisionFieldsSchema.superRefine(validateOfferRelationRevision);
445
+ export const agentReadinessOfferRelationRevisionCoreSchema = agentReadinessOfferRelationRevisionFieldsSchema.superRefine(validateOfferRelationInterval);
1142
446
  export const agentReadinessOfferRelationRevisionSchema = agentReadinessOfferRelationRevisionCoreSchema
1143
447
  .safeExtend({ relation_revision_digest: agentReadinessDigestSchema })
1144
448
  .strict();
@@ -1348,7 +652,7 @@ export const agentReadinessDeltaObjectSchema = z
1348
652
  agent_readiness_profile_id: agentReadinessProfileIdSchema,
1349
653
  profile_input: agentReadinessProfileInputSchema.nullable(),
1350
654
  projection: agentReadinessProjectionSchema.nullable(),
1351
- prior_projection: agentReadinessProjectionLineageSchema.nullable(),
655
+ prior_projection: agentReadinessProjectionSchema.nullable(),
1352
656
  catalog_context: z
1353
657
  .object({
1354
658
  entity_slug: z.string().regex(SLUG_PATTERN),
@@ -1399,11 +703,11 @@ export const agentReadinessDeltaObjectSchema = z
1399
703
  return;
1400
704
  }
1401
705
  if (value.prior_projection &&
1402
- !sameAgentReadinessScopeIdentity(value.prior_projection.scope, current.scope)) {
706
+ !sameAgentReadinessScope(value.prior_projection.scope, current.scope)) {
1403
707
  context.addIssue({
1404
708
  code: "custom",
1405
709
  path: ["projection", "scope"],
1406
- message: "An Agent Readiness profile cannot change product or funnel identity.",
710
+ message: "An Agent Readiness profile cannot change product or job identity.",
1407
711
  });
1408
712
  }
1409
713
  if (!value.prior_projection && !value.profile_input) {
@@ -1446,18 +750,6 @@ export const agentReadinessDeltaObjectSchema = z
1446
750
  });
1447
751
  }
1448
752
  });
1449
- function validateOfferRelationRevision(value, context) {
1450
- const canonicalStages = agentReadinessStageSchema.options.filter((stage) => value.applicable_stages.includes(stage));
1451
- if (canonicalStages.length !== value.applicable_stages.length ||
1452
- canonicalStages.some((stage, index) => value.applicable_stages[index] !== stage)) {
1453
- context.addIssue({
1454
- code: "custom",
1455
- path: ["applicable_stages"],
1456
- message: "Offer relation stages must be unique and ordered by the canonical funnel.",
1457
- });
1458
- }
1459
- validateOfferRelationInterval(value, context);
1460
- }
1461
753
  function validateOfferRelationInterval(value, context) {
1462
754
  if (value.effective_until &&
1463
755
  Date.parse(value.effective_until) <= Date.parse(value.effective_from)) {
@@ -1468,7 +760,7 @@ function validateOfferRelationInterval(value, context) {
1468
760
  });
1469
761
  }
1470
762
  }
1471
- export function sameAgentReadinessOfferRelationIdentity(left, right) {
763
+ function sameAgentReadinessOfferRelationIdentity(left, right) {
1472
764
  return (left.relation_id === right.relation_id &&
1473
765
  left.agent_readiness_profile_id === right.agent_readiness_profile_id &&
1474
766
  left.offer_id === right.offer_id &&
@@ -1509,17 +801,4 @@ function validateRelationMembership(actual, expected, context, path) {
1509
801
  }
1510
802
  }
1511
803
  }
1512
- function sameSurface(left, right) {
1513
- return left.node_kind === right.node_kind && left.node_id === right.node_id;
1514
- }
1515
- function assertUniqueSurfaceReferences(surfaces, context, path) {
1516
- if (new Set(surfaces.map((surface) => `${surface.node_kind}:${surface.node_id}`)).size !==
1517
- surfaces.length) {
1518
- context.addIssue({
1519
- code: "custom",
1520
- path,
1521
- message: "Surface references must be unique.",
1522
- });
1523
- }
1524
- }
1525
804
  //# sourceMappingURL=index.js.map