@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
@@ -1,56 +1,25 @@
1
+ import { canonicalJson, digest } from "provenry/primitives";
2
+ import { agentReadinessDeclarationRevisionCoreSchema, agentReadinessDeclarationRevisionSchema, agentReadinessProjectionCoreSchema, agentReadinessProjectionSchema, agentReadinessRevisionSchema, sameAgentReadinessScopeIdentity, } from "../../../contracts/agent-readiness/src/index.js";
3
+ import { agentReadinessCanonicalPath } from "../../../contracts/routes/src/index.js";
4
+ import { rateOperate } from "../../agent-readiness-engine/src/rate.js";
5
+ import { agentReadinessJobDigest } from "../../agent-readiness-jobs/src/index.js";
6
+ import { deriveSubjectStanding } from "../../provenance/src/index.js";
7
+ import { priorAgentReadinessVisibility } from "./prior-projection.js";
1
8
  export * from "./current-policy.js";
2
- export * from "./current-policy-validation.js";
3
- export * from "./grading.js";
9
+ export * from "./declaration-jobs.js";
4
10
  export * from "./impact.js";
5
11
  export * from "./offer-relations.js";
6
- export * from "./policy-validation.js";
12
+ export * from "./operate-policy.js";
13
+ export * from "./prior-projection.js";
7
14
  export * from "./revision.js";
8
- export * from "./standard-mapping.js";
9
- import { canonicalJson, compareCanonicalStrings, digest } from "provenry/primitives";
10
- import { agentReadinessDeclarationRevisionCoreSchema, agentReadinessDeclarationRevisionSchema, agentReadinessProjectionCoreSchema, agentReadinessProjectionSchema, agentReadinessRevisionSchema, agentReadinessStageLabel, agentReadinessStageSchema, methodCapabilityFor, sameAgentReadinessScopeIdentity, } from "../../../contracts/agent-readiness/src/index.js";
11
- import { agentReadinessCanonicalPath } from "../../../contracts/routes/src/index.js";
12
- import { deriveProvenance, evidenceStatusFor, } from "../../provenance/src/index.js";
13
- import { verifyStandardEvidenceResult } from "../../standard-evidence/src/index.js";
14
- import { agentReadinessAdmittedFactSupportsPolicy } from "./corroboration.js";
15
- import { deriveAgentReadinessGrade, isAgentReadinessGradingSignal, isAgentReadinessVerifiedBarrierSignal, } from "./grading.js";
16
- import { validateAgentReadinessPolicy } from "./policy-validation.js";
17
- import { priorAgentReadinessVisibility } from "./projection-lineage.js";
18
- import { agentReadinessValuesSupportedByStandardRequirementResults } from "./standard-mapping.js";
19
- import { assertAgentReadinessSignalSelectorCoverage, assertSignalSurfaceClosure, surfaceCatalogFromDeclaration, } from "./surface-selection.js";
20
- export { agentReadinessAssessmentTargetIdsForSurface, agentReadinessSelectorGroupUsesAssessmentTargets, assertAgentReadinessDeclarationPolicyScope, assertAgentReadinessSignalSelectorCoverage, } from "./surface-selection.js";
21
- export function agentReadinessValuesSupportedByStandardEvidence(input) {
22
- const policy = validateAgentReadinessPolicy(input.policy);
23
- const rule = policy.signal_rules.find((candidate) => candidate.stage === input.stage && candidate.signal_code === input.signalCode);
24
- if (!rule) {
25
- throw new Error(`Unknown Agent Readiness signal ${input.stage}:${input.signalCode} for standard evidence.`);
26
- }
27
- const result = verifyStandardEvidenceResult(input.result);
28
- return agentReadinessValuesSupportedByStandardRequirementResults({
29
- mappings: rule.standard_evidence,
30
- results: result.requirements,
31
- });
32
- }
15
+ /**
16
+ * The projection a release publishes for one revision: the Operate letter the
17
+ * pinned policy gives its steps, its Onboard level and evidence label, the
18
+ * human boundaries a reader sees, and whether it is discoverable. Freshness is
19
+ * served from the freshness index, never released. Nothing here reads
20
+ * documentation or calls out.
21
+ */
33
22
  export function deriveAgentReadinessProjection(input) {
34
- const context = deriveAgentReadinessProjectionContext(input);
35
- return projectAgentReadinessProjection({
36
- ...context,
37
- entitySlug: input.entitySlug,
38
- priorVisibility: priorAgentReadinessVisibility(context.revision, input.priorProjection),
39
- });
40
- }
41
- export function deriveAgentReadinessAssessment(input) {
42
- return evaluateAgentReadinessProjection(deriveAgentReadinessProjectionContext(input));
43
- }
44
- export function verifyAgentReadinessProjection(input) {
45
- const projection = agentReadinessProjectionSchema.parse(input);
46
- const { projection_digest: projectionDigest, ...coreInput } = projection;
47
- const core = agentReadinessProjectionCoreSchema.parse(coreInput);
48
- if (digest(core) !== projectionDigest) {
49
- throw new Error("Agent Readiness projection digest mismatch.");
50
- }
51
- return projection;
52
- }
53
- function deriveAgentReadinessProjectionContext(input) {
54
23
  const revision = agentReadinessRevisionSchema.parse(input.revision);
55
24
  const declarationRevision = agentReadinessDeclarationRevisionSchema.parse(input.declarationRevision);
56
25
  const { revision_digest: declarationDigest, ...declarationCore } = declarationRevision;
@@ -59,55 +28,129 @@ function deriveAgentReadinessProjectionContext(input) {
59
28
  revision.declaration_revision_digest !== declarationDigest ||
60
29
  revision.entity_id !== declarationRevision.entity_id ||
61
30
  !sameAgentReadinessScopeIdentity(revision.scope, declarationRevision.declaration.scope)) {
62
- throw new Error("Agent Readiness projection does not bind its exact declaration revision and declaration scope.");
31
+ throw new Error("Agent Readiness projection does not bind its exact declaration revision and scope.");
32
+ }
33
+ const { policy } = input;
34
+ const job = policy.job_library.jobs.find(({ job_id }) => job_id === revision.scope.job.key);
35
+ if (job && agentReadinessJobDigest(job) !== revision.job_digest) {
36
+ throw new Error(`Agent Readiness profile ${revision.agent_readiness_profile_id} ran a job this policy changed; it needs new runs.`);
37
+ }
38
+ const binding = revision.binding_id === null
39
+ ? null
40
+ : declarationRevision.declaration.job_bindings.find(({ binding_id }) => binding_id === revision.binding_id);
41
+ if (!job || binding === undefined) {
42
+ throw new Error("Agent Readiness projection names a job or binding it cannot resolve.");
63
43
  }
64
- assertSignalSurfaceClosure(revision, declarationRevision);
65
- const policy = validateAgentReadinessPolicy(input.policy);
66
44
  if (!Number.isFinite(Date.parse(input.policyAsOf))) {
67
- throw new Error("Agent readiness projection policy time is invalid.");
45
+ throw new Error("Agent Readiness projection policy time is invalid.");
68
46
  }
69
- const provenance = deriveProvenance({
70
- revision,
47
+ const rating = rateOperate(policy, revision.steps);
48
+ const rule = policy.letters.find(({ letter }) => letter === rating.letter);
49
+ const latest = revision.runs.at(-1);
50
+ const standing = deriveSubjectStanding({
51
+ revisionDigest: revision.revision_digest,
71
52
  authorityEntityRevision: input.authorityEntityRevision,
72
53
  graph: input.graph,
73
- coveragePolicy: policy,
74
- freshnessPolicy: input.freshnessPolicy,
75
54
  policyAsOf: input.policyAsOf,
76
55
  });
77
- return {
78
- revision,
79
- policy,
80
- policyAsOf: input.policyAsOf,
81
- freshnessPolicy: input.freshnessPolicy,
82
- surfaceCatalog: surfaceCatalogFromDeclaration(declarationRevision),
83
- provenance,
84
- };
56
+ const reasons = [
57
+ ...(revision.lifecycle === "active" ? [] : ["lifecycle_not_active"]),
58
+ ...(standing.dispute === "open" ? ["open_dispute"] : []),
59
+ ];
60
+ const prior = priorAgentReadinessVisibility(revision, input.priorProjection);
61
+ const { declaration } = declarationRevision;
62
+ const core = agentReadinessProjectionCoreSchema.parse({
63
+ projection_contract: "sourcey.agent-readiness-projection/v1alpha1",
64
+ agent_readiness_profile_id: revision.agent_readiness_profile_id,
65
+ entity_id: revision.entity_id,
66
+ scope: revision.scope,
67
+ catalog_binding: revision.catalog_binding,
68
+ declaration_revision_digest: revision.declaration_revision_digest,
69
+ declaration: revision.declaration,
70
+ surface_catalog: {
71
+ participants: declaration.participants,
72
+ resources: declaration.resources,
73
+ endpoints: declaration.endpoints,
74
+ interfaces: declaration.interfaces,
75
+ relations: declaration.relations,
76
+ surface_exclusions: declaration.surface_exclusions,
77
+ },
78
+ lifecycle: revision.lifecycle,
79
+ effective_from: revision.effective_from,
80
+ ...(revision.effective_until ? { effective_until: revision.effective_until } : {}),
81
+ revision_digest: revision.revision_digest,
82
+ policy_digest: policy.policy_digest,
83
+ policy_version: policy.policy_version,
84
+ policy_as_of: input.policyAsOf,
85
+ job: {
86
+ job_id: job.job_id,
87
+ job_digest: revision.job_digest,
88
+ category: job.category,
89
+ name: job.name,
90
+ statement: job.statement,
91
+ },
92
+ interface_id: binding?.interface_id ?? null,
93
+ label: latest.label,
94
+ operate: {
95
+ letter: rating.letter,
96
+ statement: rating.letter === "D" || rating.letter === "F"
97
+ ? policy.blocked.statements[rating.letter]
98
+ : (rule?.statement ?? null),
99
+ steps: revision.steps.map(({ step, outcome, timing }) => ({ step, outcome, timing })),
100
+ missing: rating.missing,
101
+ approvals: revision.steps
102
+ .filter(({ outcome }) => outcome === "approval")
103
+ .map(({ step }) => step),
104
+ workarounds: revision.steps.flatMap(({ step, outcome, timing }) => outcome === "workaround" && timing ? [{ step, timing }] : []),
105
+ },
106
+ onboard: { level: revision.onboard_level },
107
+ discovery: revision.discovery,
108
+ run: {
109
+ ...revision.latest_run,
110
+ assertions: revision.latest_run.assertions.map((result) => {
111
+ const assertion = job.assertions.find(({ name }) => name === result.assertion);
112
+ if (!assertion) {
113
+ throw new Error(`Agent Readiness run reports assertion ${result.assertion}, which its job lacks.`);
114
+ }
115
+ return { ...result, statement: assertion.statement };
116
+ }),
117
+ },
118
+ last_run_at: latest.finished_at,
119
+ publication: {
120
+ visibility: reasons.length === 0
121
+ ? "discoverable"
122
+ : prior === "discoverable" || prior === "resolvable_only"
123
+ ? "resolvable_only"
124
+ : "private",
125
+ reasons,
126
+ },
127
+ provenance: standing,
128
+ canonical_url: canonicalUrl(input.entitySlug, revision),
129
+ });
130
+ return agentReadinessProjectionSchema.parse({ ...core, projection_digest: digest(core) });
131
+ }
132
+ function verifyAgentReadinessProjection(input) {
133
+ const projection = agentReadinessProjectionSchema.parse(input);
134
+ const { projection_digest: projectionDigest, ...coreInput } = projection;
135
+ const core = agentReadinessProjectionCoreSchema.parse(coreInput);
136
+ if (digest(core) !== projectionDigest) {
137
+ throw new Error("Agent Readiness projection digest mismatch.");
138
+ }
139
+ return projection;
85
140
  }
141
+ /** The same revision under a newer policy or a later policy instant. */
86
142
  export function regradeAgentReadinessProjection(input) {
87
143
  const revision = agentReadinessRevisionSchema.parse(input.revision);
88
144
  const prior = verifyAgentReadinessProjection(input.priorProjection);
89
- const policy = validateAgentReadinessPolicy(input.policy);
90
145
  assertCurrentAgentReadinessProjectionRevision(prior, revision);
91
- if (Date.parse(input.policyAsOf) < Date.parse(prior.policy_as_of) ||
92
- prior.provenance.coverage_policy_digest !== prior.policy_digest) {
93
- throw new Error("Agent Readiness regrade does not bind the exact current revision.");
146
+ if (Date.parse(input.policyAsOf) < Date.parse(prior.policy_as_of)) {
147
+ throw new Error("Agent Readiness regrade cannot move its policy instant backwards.");
94
148
  }
95
- return deriveAgentReadinessProjection({
96
- revision,
97
- declarationRevision: input.declarationRevision,
98
- authorityEntityRevision: input.authorityEntityRevision,
99
- priorProjection: prior,
100
- graph: input.graph,
101
- policy,
102
- policyAsOf: input.policyAsOf,
103
- freshnessPolicy: input.freshnessPolicy,
104
- entitySlug: input.entitySlug,
105
- });
149
+ return deriveAgentReadinessProjection(input);
106
150
  }
107
151
  /**
108
- * Move only the public route of an immutable assessment projection. This is
109
- * the contract-transition path: it retains every assessed fact, grade,
110
- * evidence binding, policy result, and publication decision byte-for-byte.
152
+ * Move only the public route of an immutable projection: every assessed fact,
153
+ * letter and publication decision is kept byte for byte.
111
154
  */
112
155
  export function reprojectAgentReadinessCanonicalRoute(input) {
113
156
  const revision = agentReadinessRevisionSchema.parse(input.revision);
@@ -116,16 +159,9 @@ export function reprojectAgentReadinessCanonicalRoute(input) {
116
159
  const { projection_digest: _projectionDigest, ...priorCore } = prior;
117
160
  const core = agentReadinessProjectionCoreSchema.parse({
118
161
  ...priorCore,
119
- canonical_url: `https://sourcey.com${agentReadinessCanonicalPath({
120
- entity_slug: input.entitySlug,
121
- product_key: revision.scope.product.key,
122
- funnel_key: revision.scope.funnel.key,
123
- })}`,
124
- });
125
- return agentReadinessProjectionSchema.parse({
126
- ...core,
127
- projection_digest: digest(core),
162
+ canonical_url: canonicalUrl(input.entitySlug, revision),
128
163
  });
164
+ return agentReadinessProjectionSchema.parse({ ...core, projection_digest: digest(core) });
129
165
  }
130
166
  /** A relocation changes the locator, never the immutable assessment facts. */
131
167
  export function isAgentReadinessRouteOnlySuccession(prior, current) {
@@ -133,6 +169,7 @@ export function isAgentReadinessRouteOnlySuccession(prior, current) {
133
169
  const { canonical_url: currentUrl, projection_digest: _currentDigest, ...currentFacts } = current;
134
170
  return priorUrl !== currentUrl && canonicalJson(priorFacts) === canonicalJson(currentFacts);
135
171
  }
172
+ /** A route move when that is all that changed; otherwise the revision re-rated. */
136
173
  export function deriveAgentReadinessReprojection(input) {
137
174
  const routeProjection = reprojectAgentReadinessCanonicalRoute(input);
138
175
  return isAgentReadinessRouteOnlySuccession(input.priorProjection, input.currentProjection) &&
@@ -144,391 +181,21 @@ function assertCurrentAgentReadinessProjectionRevision(prior, revision) {
144
181
  if (prior.agent_readiness_profile_id !== revision.agent_readiness_profile_id ||
145
182
  prior.revision_digest !== revision.revision_digest ||
146
183
  prior.entity_id !== revision.entity_id ||
147
- JSON.stringify(prior.scope) !== JSON.stringify(revision.scope) ||
148
- JSON.stringify(prior.catalog_binding) !== JSON.stringify(revision.catalog_binding) ||
184
+ canonicalJson(prior.scope) !== canonicalJson(revision.scope) ||
185
+ canonicalJson(prior.catalog_binding) !== canonicalJson(revision.catalog_binding) ||
149
186
  prior.declaration_revision_digest !== revision.declaration_revision_digest ||
150
- JSON.stringify(prior.declaration) !== JSON.stringify(revision.declaration) ||
187
+ canonicalJson(prior.declaration) !== canonicalJson(revision.declaration) ||
151
188
  prior.lifecycle !== revision.lifecycle ||
152
189
  prior.effective_from !== revision.effective_from ||
153
190
  prior.effective_until !== revision.effective_until) {
154
191
  throw new Error("Agent Readiness projection does not bind the exact current revision.");
155
192
  }
156
193
  }
157
- function evaluateAgentReadinessProjection(input) {
158
- const { revision, policy, provenance } = input;
159
- if (!Number.isFinite(Date.parse(input.policyAsOf))) {
160
- throw new Error("Agent readiness projection policy time is invalid.");
161
- }
162
- const facts = new Map(revision.signals.map((signal, index) => [
163
- `${signal.stage}:${signal.signal_code}`,
164
- {
165
- signal,
166
- field: provenance.fields.find((candidate) => candidate.path === `/signals/${index}`),
167
- },
168
- ]));
169
- const policySignalKeys = new Set(policy.signal_rules.map((rule) => `${rule.stage}:${rule.signal_code}`));
170
- const unmodeledSignals = revision.signals
171
- .map((signal) => `${signal.stage}:${signal.signal_code}`)
172
- .filter((key) => !policySignalKeys.has(key));
173
- if (unmodeledSignals.length > 0) {
174
- throw new Error(`Agent readiness revision contains signals outside policy: ${unmodeledSignals.join(", ")}.`);
175
- }
176
- const stages = agentReadinessStageSchema.options.map((stage) => {
177
- const rules = policy.signal_rules.filter((rule) => rule.stage === stage);
178
- const evaluated = rules.map((rule) => {
179
- const fact = facts.get(`${stage}:${rule.signal_code}`);
180
- if (fact)
181
- assertAllowedAssessmentMethod(fact.signal, rule, policy, input.surfaceCatalog);
182
- const evidenceRule = rule.value_evidence.find((candidate) => candidate.value === fact?.signal.value);
183
- const policySupported = !fact ||
184
- fact.signal.value === "unknown" ||
185
- (evidenceRule !== undefined &&
186
- agentReadinessAdmittedFactSupportsPolicy({ signal: fact.signal, rule: evidenceRule }));
187
- const evidenceStatus = fact && policySupported ? evidenceStatusFor(fact.field) : "missing";
188
- const freshness = fact
189
- ? assessmentFreshness(fact.signal, fact.field?.freshness ?? "unknown", policy)
190
- : "unknown";
191
- const currentEvidence = freshness === "fresh";
192
- const outcome = fact && evidenceStatus === "supported" && fact.signal.value !== "unknown" && currentEvidence
193
- ? agentReadinessSignalOutcome(rule, fact.signal.value)
194
- : "unknown";
195
- const value = fact && evidenceStatus === "supported" && currentEvidence ? fact.signal.value : "unknown";
196
- const descriptor = rule.public_findings[value];
197
- const publicState = policy.public_states[outcome];
198
- const blocker = outcome === "fail" && rule.blocker
199
- ? { signal_code: rule.signal_code, ...rule.blocker }
200
- : undefined;
201
- const remediation = ["constrained", "fail"].includes(outcome) && rule.remediation
202
- ? { signal_code: rule.signal_code, ...rule.remediation }
203
- : undefined;
204
- return {
205
- rule,
206
- outcome,
207
- evidenceStatus,
208
- signal: {
209
- signal_code: rule.signal_code,
210
- evaluation_role: rule.evaluation_role,
211
- required: rule.required,
212
- value,
213
- value_label: publicState.label,
214
- outcome,
215
- public_state: publicState.state,
216
- condition: descriptor.condition,
217
- finding: descriptor.finding,
218
- evidence_status: evidenceStatus,
219
- freshness,
220
- ...(fact && policySupported
221
- ? {
222
- observed_at: fact.signal.observed_at,
223
- tested_surfaces: fact.signal.tested_surfaces,
224
- assessment_method: fact.signal.assessment_method,
225
- determination_bases: fact.signal.determination_bases,
226
- ...(fact.signal.note ? { note: fact.signal.note } : {}),
227
- }
228
- : { tested_surfaces: fact?.signal.tested_surfaces ?? [], determination_bases: [] }),
229
- ...(blocker ? { blocker } : {}),
230
- ...(remediation ? { remediation } : {}),
231
- },
232
- };
233
- });
234
- const graded = evaluated.filter((entry) => isAgentReadinessGradingSignal(entry.rule));
235
- const verifiedBarriers = evaluated.filter((entry) => isAgentReadinessVerifiedBarrierSignal(entry.signal));
236
- const stageSignals = [...graded, ...verifiedBarriers];
237
- const outcome = worstAgentReadinessOutcome(stageSignals.map((entry) => entry.outcome), policy.aggregation.outcome_precedence);
238
- const orderedStageSignals = [...stageSignals].sort((left, right) => compareEvaluatedRules(left, right, policy.aggregation.outcome_precedence));
239
- const primary = orderedStageSignals[0];
240
- if (!primary)
241
- throw new Error(`Agent readiness stage ${stage} has no graded primary finding.`);
242
- const orderedSecondary = evaluated
243
- .filter((entry) => entry !== primary)
244
- .sort((left, right) => compareEvaluatedRules(left, right, policy.aggregation.outcome_precedence));
245
- return {
246
- stage,
247
- stage_label: agentReadinessStageLabel(stage),
248
- outcome,
249
- public_state: policy.public_states[outcome].state,
250
- state_label: policy.public_states[outcome].label,
251
- primary_finding: projectedFinding(primary),
252
- secondary_context: orderedSecondary.map(projectedFinding),
253
- signals: evaluated
254
- .map((entry) => entry.signal)
255
- .sort((left, right) => compareCanonicalStrings(left.signal_code, right.signal_code)),
256
- blockers: orderedStageSignals.flatMap((entry) => entry.signal.blocker ? [entry.signal.blocker] : []),
257
- remediations: orderedStageSignals.flatMap((entry) => entry.signal.remediation ? [entry.signal.remediation] : []),
258
- };
259
- });
260
- const signals = stages.flatMap((stage) => stage.signals);
261
- const gradedSignals = signals.filter((signal) => signal.evaluation_role === "graded");
262
- const coveredSignals = gradedSignals.filter((signal) => signal.evidence_status === "supported" &&
263
- signal.value !== "unknown" &&
264
- signal.outcome !== "unknown" &&
265
- signal.freshness === "fresh");
266
- const coverageRatio = gradedSignals.length === 0 ? 1 : coveredSignals.length / gradedSignals.length;
267
- const coverageStatus = coverageRatio === 1 ? "complete" : "incomplete";
268
- const barrierSignals = signals.filter((signal) => signal.evaluation_role === "barrier");
269
- const verifiedBarrierSignals = barrierSignals.filter(isAgentReadinessVerifiedBarrierSignal);
270
- const barrierRatio = barrierSignals.length === 0 ? 1 : verifiedBarrierSignals.length / barrierSignals.length;
271
- const freshnessSignals = policy.freshness.aggregation === "worst-required-signal"
272
- ? gradedSignals
273
- : policy.freshness.aggregation === "worst-evaluated-signal"
274
- ? signals.filter((signal) => signal.evaluation_role !== "informational")
275
- : signals;
276
- const freshness = freshnessSignals.some((signal) => signal.freshness === "unknown")
277
- ? "unknown"
278
- : freshnessSignals.some((signal) => signal.freshness === "stale")
279
- ? "stale"
280
- : "fresh";
281
- const overallOutcome = worstAgentReadinessOutcome(stages.map((stage) => stage.outcome), policy.aggregation.outcome_precedence);
282
- // Only a signal whose method admits a service exchange can carry one, so the
283
- // proof is found by kind; no signal is named here.
284
- const supportedExchanges = signals.flatMap((signal) => signal.value === "yes" && signal.evidence_status === "supported" && signal.freshness === "fresh"
285
- ? signal.determination_bases
286
- : []);
287
- const observedOperationCoverage = input.surfaceCatalog.assessment_targets.length > 0 &&
288
- input.surfaceCatalog.assessment_targets.every((target) => {
289
- const selectedInterfaceId = target.interface_ids[0];
290
- const selectedInterface = input.surfaceCatalog.interfaces.find((candidate) => candidate.interface_id === selectedInterfaceId);
291
- return supportedExchanges.some((proof) => proof.kind === "service_exchange" &&
292
- proof.assessment_target_id === target.target_id &&
293
- selectedInterface?.endpoint_ids.includes(proof.endpoint_id) &&
294
- input.surfaceCatalog.endpoints.some((endpoint) => endpoint.endpoint_id === proof.endpoint_id && endpoint.roles.includes("service")));
295
- });
296
- const grade = deriveAgentReadinessGrade({
297
- policy,
298
- stages,
299
- coverageStatus,
300
- freshness,
301
- observedOperationCoverage,
302
- });
303
- return {
304
- stages,
305
- signals,
306
- gradedSignals,
307
- coveredSignals,
308
- coverageRatio,
309
- coverageStatus,
310
- barrierSignals,
311
- verifiedBarrierSignals,
312
- barrierRatio,
313
- freshness,
314
- overallOutcome,
315
- grade,
316
- };
317
- }
318
- function projectAgentReadinessProjection(input) {
319
- const { revision, policy, provenance } = input;
320
- const { stages, gradedSignals, coveredSignals, coverageRatio, coverageStatus, barrierSignals, verifiedBarrierSignals, barrierRatio, freshness, overallOutcome, grade, } = evaluateAgentReadinessProjection(input);
321
- const actionableFindings = stages
322
- .flatMap((stage) => stage.signals
323
- .filter((signal) => signal.evaluation_role !== "informational" &&
324
- signal.evidence_status === "supported" &&
325
- (signal.evaluation_role === "graded" ||
326
- isAgentReadinessVerifiedBarrierSignal(signal)) &&
327
- (signal.public_state === "blocked" || signal.public_state === "limited"))
328
- .map((signal) => ({ stage, signal })))
329
- .sort((left, right) => compareActionableFindings(left, right, policy));
330
- const primaryFinding = actionableFindings[0];
331
- const firstBlockedStage = stages.find((stage) => stage.public_state === "blocked");
332
- const limitations = actionableFindings.filter(({ signal }) => signal.public_state === "limited");
333
- const publicationReasons = agentReadinessPublicationReasons({
334
- revision,
335
- stages,
336
- coverageStatus,
337
- freshness,
338
- grade,
339
- provenance,
340
- });
341
- const visibility = publicationReasons.length === 0
342
- ? "discoverable"
343
- : input.priorVisibility === "discoverable" || input.priorVisibility === "resolvable_only"
344
- ? "resolvable_only"
345
- : "private";
346
- const core = agentReadinessProjectionCoreSchema.parse({
347
- projection_contract: "sourcey.agent-readiness-projection/v1alpha1",
348
- agent_readiness_profile_id: revision.agent_readiness_profile_id,
349
- entity_id: revision.entity_id,
350
- scope: revision.scope,
351
- catalog_binding: revision.catalog_binding,
352
- declaration_revision_digest: revision.declaration_revision_digest,
353
- declaration: revision.declaration,
354
- surface_catalog: input.surfaceCatalog,
355
- lifecycle: revision.lifecycle,
356
- effective_from: revision.effective_from,
357
- ...(revision.effective_until ? { effective_until: revision.effective_until } : {}),
358
- revision_digest: revision.revision_digest,
359
- policy_digest: policy.policy_digest,
360
- policy_version: policy.policy_version,
361
- policy_as_of: input.policyAsOf,
362
- assessment_basis: policy.assessment_basis,
363
- overall_outcome: overallOutcome,
364
- public_state: policy.public_states[overallOutcome].state,
365
- state_label: policy.public_states[overallOutcome].label,
366
- grade,
367
- grade_derivation: policy.grade_derivation,
368
- publication: {
369
- visibility,
370
- reasons: publicationReasons,
371
- },
372
- ...(primaryFinding
373
- ? {
374
- primary_finding: {
375
- stage: primaryFinding.stage.stage,
376
- stage_label: primaryFinding.stage.stage_label,
377
- public_state: primaryFinding.signal.public_state,
378
- finding: {
379
- signal_code: primaryFinding.signal.signal_code,
380
- condition: primaryFinding.signal.condition,
381
- finding: primaryFinding.signal.finding,
382
- ...("note" in primaryFinding.signal && primaryFinding.signal.note
383
- ? { context: primaryFinding.signal.note }
384
- : {}),
385
- },
386
- ...(primaryFinding.signal.blocker ? { blocker: primaryFinding.signal.blocker } : {}),
387
- },
388
- }
389
- : {}),
390
- ...(firstBlockedStage
391
- ? {
392
- first_blocked_stage: {
393
- stage: firstBlockedStage.stage,
394
- stage_label: firstBlockedStage.stage_label,
395
- finding: firstBlockedStage.primary_finding,
396
- ...(firstBlockedStage.blockers[0] ? { blocker: firstBlockedStage.blockers[0] } : {}),
397
- },
398
- }
399
- : {}),
400
- limitations: limitations.map(({ stage, signal }) => ({
401
- stage: stage.stage,
402
- stage_label: stage.stage_label,
403
- finding: {
404
- signal_code: signal.signal_code,
405
- condition: signal.condition,
406
- finding: signal.finding,
407
- ...("note" in signal && signal.note ? { context: signal.note } : {}),
408
- },
409
- ...(signal.remediation ? { remediation: signal.remediation } : {}),
410
- })),
411
- stages,
412
- coverage: {
413
- status: coverageStatus,
414
- required_signals: gradedSignals.length,
415
- covered_signals: coveredSignals.length,
416
- ratio: coverageRatio,
417
- barrier_signals: barrierSignals.length,
418
- verified_barrier_signals: verifiedBarrierSignals.length,
419
- barrier_ratio: barrierRatio,
420
- },
421
- last_tested_at: latestInstant(revision.signals.map((signal) => signal.observed_at)),
422
- freshness,
423
- provenance,
424
- canonical_url: `https://sourcey.com${agentReadinessCanonicalPath({
425
- entity_slug: input.entitySlug,
426
- product_key: revision.scope.product.key,
427
- funnel_key: revision.scope.funnel.key,
428
- })}`,
429
- });
430
- return agentReadinessProjectionSchema.parse({
431
- ...core,
432
- projection_digest: digest(core),
433
- });
434
- }
435
- function latestInstant(instants) {
436
- const latest = [...instants].sort((left, right) => Date.parse(left) - Date.parse(right)).at(-1);
437
- if (!latest)
438
- throw new Error("Agent Readiness projection requires a tested signal instant.");
439
- return latest;
440
- }
441
- function agentReadinessPublicationReasons(input) {
442
- const reasons = [];
443
- const signals = input.stages.flatMap((stage) => stage.signals);
444
- if (input.revision.lifecycle !== "active")
445
- reasons.push("lifecycle_not_active");
446
- const decisiveFailure = input.grade === "D" || input.grade === "F";
447
- if (!decisiveFailure) {
448
- if (input.coverageStatus !== "complete")
449
- reasons.push("coverage_incomplete");
450
- if (signals.some((signal) => signal.evaluation_role === "graded" && signal.evidence_status !== "supported")) {
451
- reasons.push("required_evidence_not_supported");
452
- }
453
- if (input.freshness !== "fresh")
454
- reasons.push("freshness_not_fresh");
455
- }
456
- if (input.grade === "unrated")
457
- reasons.push("unrated");
458
- if (!signals.some((signal) => signal.evidence_status === "supported")) {
459
- reasons.push("no_useful_finding");
460
- }
461
- if (input.provenance.dispute === "open")
462
- reasons.push("open_dispute");
463
- return reasons;
464
- }
465
- function projectedFinding(entry) {
466
- return {
467
- signal_code: entry.rule.signal_code,
468
- condition: entry.signal.condition,
469
- finding: entry.signal.finding,
470
- ...(entry.signal.note ? { context: entry.signal.note } : {}),
471
- };
472
- }
473
- export function agentReadinessSignalOutcome(rule, value) {
474
- if (rule.pass_values.includes(value))
475
- return value === "not_applicable" ? "not_applicable" : "pass";
476
- if (rule.constrained_values.includes(value)) {
477
- return value === "not_applicable" ? "not_applicable" : "constrained";
478
- }
479
- if (rule.fail_values.includes(value))
480
- return value === "not_applicable" ? "not_applicable" : "fail";
481
- return "unknown";
482
- }
483
- export function worstAgentReadinessOutcome(outcomes, precedence) {
484
- return ([...outcomes].sort((left, right) => precedence.indexOf(left) - precedence.indexOf(right))[0] ??
485
- "unknown");
486
- }
487
- function assertAllowedAssessmentMethod(signal, rule, policy, surfaceCatalog) {
488
- const method = policy.assessment_methods.find((candidate) => candidate.method_digest === signal.assessment_method.method_digest);
489
- if (!method ||
490
- method.name !== signal.assessment_method.name ||
491
- method.version !== signal.assessment_method.version ||
492
- !rule.allowed_method_digests.includes(method.method_digest)) {
493
- throw new Error(`Agent readiness signal ${signal.stage}:${signal.signal_code} uses an unapproved assessment method.`);
494
- }
495
- const selectorGroup = rule.selector_groups.find((group) => group.selector_group_id === signal.selector_group_id);
496
- if (!selectorGroup) {
497
- throw new Error(`Agent readiness signal ${signal.stage}:${signal.signal_code} uses an unknown selector group.`);
498
- }
499
- assertAgentReadinessSignalSelectorCoverage(signal, selectorGroup, surfaceCatalog, rule.allow_not_applicable);
500
- if (signal.tested_surfaces.some((surface) => surface.node_kind !== "surface_exclusion" &&
501
- !method.surface_support.node_kinds.includes(surface.node_kind))) {
502
- throw new Error(`Agent readiness signal ${signal.stage}:${signal.signal_code} uses an unsupported surface kind.`);
503
- }
504
- const capability = methodCapabilityFor(method, signal.stage, signal.signal_code);
505
- if (!capability || (signal.value !== "unknown" && !capability.values.includes(signal.value))) {
506
- throw new Error(`Agent readiness method ${method.name}@${method.version} cannot establish ${signal.stage}:${signal.signal_code}=${signal.value}.`);
507
- }
508
- if (signal.determination_bases.some((basis) => !capability.determination_bases.includes(basis.kind))) {
509
- throw new Error(`Agent readiness signal ${signal.stage}:${signal.signal_code} uses an unsupported determination basis.`);
510
- }
511
- }
512
- function assessmentFreshness(signal, evidenceFreshness, policy) {
513
- const method = policy.assessment_methods.find((candidate) => candidate.method_digest === signal.assessment_method.method_digest);
514
- return method?.capture.freshness_capability === "history-only" ? "stale" : evidenceFreshness;
515
- }
516
- function compareActionableFindings(left, right, policy) {
517
- const severity = { blocked: 0, limited: 1 };
518
- const leftRule = policy.signal_rules.find((rule) => rule.stage === left.stage.stage && rule.signal_code === left.signal.signal_code);
519
- const rightRule = policy.signal_rules.find((rule) => rule.stage === right.stage.stage && rule.signal_code === right.signal.signal_code);
520
- if (!leftRule || !rightRule)
521
- throw new Error("Actionable finding lost its policy rule.");
522
- return (severity[left.signal.public_state] -
523
- severity[right.signal.public_state] ||
524
- agentReadinessStageSchema.options.indexOf(left.stage.stage) -
525
- agentReadinessStageSchema.options.indexOf(right.stage.stage) ||
526
- leftRule.priority - rightRule.priority ||
527
- compareCanonicalStrings(left.signal.signal_code, right.signal.signal_code));
528
- }
529
- function compareEvaluatedRules(left, right, precedence) {
530
- return (precedence.indexOf(left.outcome) - precedence.indexOf(right.outcome) ||
531
- left.rule.priority - right.rule.priority ||
532
- compareCanonicalStrings(left.rule.signal_code, right.rule.signal_code));
194
+ function canonicalUrl(entitySlug, revision) {
195
+ return `https://sourcey.com${agentReadinessCanonicalPath({
196
+ entity_slug: entitySlug,
197
+ product_key: revision.scope.product.key,
198
+ job_key: revision.scope.job.key,
199
+ })}`;
533
200
  }
534
201
  //# sourceMappingURL=index.js.map