@intentius/chant 0.124.28 → 0.124.29

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 (395) hide show
  1. package/dist/build-params.d.ts +34 -1
  2. package/dist/build-params.d.ts.map +1 -1
  3. package/dist/build-params.js +31 -1
  4. package/dist/change-set-graph.d.ts +8 -1
  5. package/dist/change-set-graph.d.ts.map +1 -1
  6. package/dist/change-set-graph.js +4 -2
  7. package/dist/change-set.d.ts +10 -0
  8. package/dist/change-set.d.ts.map +1 -1
  9. package/dist/change-set.js +4 -3
  10. package/dist/cli/build-params-cli.d.ts +7 -1
  11. package/dist/cli/build-params-cli.d.ts.map +1 -1
  12. package/dist/cli/build-params-cli.js +17 -8
  13. package/dist/cli/commands/build.d.ts.map +1 -1
  14. package/dist/cli/commands/build.js +6 -3
  15. package/dist/cli/handlers/approve.d.ts.map +1 -1
  16. package/dist/cli/handlers/approve.js +45 -0
  17. package/dist/cli/handlers/build.d.ts.map +1 -1
  18. package/dist/cli/handlers/build.js +15 -4
  19. package/dist/cli/handlers/fan-out.d.ts +9 -0
  20. package/dist/cli/handlers/fan-out.d.ts.map +1 -1
  21. package/dist/cli/handlers/fan-out.js +40 -3
  22. package/dist/cli/handlers/lifecycle-gc.d.ts +19 -0
  23. package/dist/cli/handlers/lifecycle-gc.d.ts.map +1 -0
  24. package/dist/cli/handlers/lifecycle-gc.js +143 -0
  25. package/dist/cli/handlers/pr.d.ts +11 -3
  26. package/dist/cli/handlers/pr.d.ts.map +1 -1
  27. package/dist/cli/handlers/pr.js +134 -26
  28. package/dist/cli/handlers/promote.d.ts +7 -0
  29. package/dist/cli/handlers/promote.d.ts.map +1 -1
  30. package/dist/cli/handlers/promote.js +210 -33
  31. package/dist/cli/handlers/release.d.ts +62 -5
  32. package/dist/cli/handlers/release.d.ts.map +1 -1
  33. package/dist/cli/handlers/release.js +414 -28
  34. package/dist/cli/handlers/run.d.ts +11 -1
  35. package/dist/cli/handlers/run.d.ts.map +1 -1
  36. package/dist/cli/handlers/run.js +67 -6
  37. package/dist/cli/main.d.ts.map +1 -1
  38. package/dist/cli/main.js +61 -10
  39. package/dist/cli/parse-args.d.ts.map +1 -1
  40. package/dist/cli/parse-args.js +24 -2
  41. package/dist/cli/registry.d.ts +15 -3
  42. package/dist/cli/registry.d.ts.map +1 -1
  43. package/dist/cli/run-events.d.ts +3 -2
  44. package/dist/cli/run-events.d.ts.map +1 -1
  45. package/dist/cli/run-events.js +5 -3
  46. package/dist/components/auto-release.d.ts +2 -0
  47. package/dist/components/auto-release.d.ts.map +1 -1
  48. package/dist/components/auto-release.js +1 -0
  49. package/dist/components/capability.d.ts +9 -0
  50. package/dist/components/capability.d.ts.map +1 -1
  51. package/dist/components/driver.d.ts +8 -0
  52. package/dist/components/driver.d.ts.map +1 -1
  53. package/dist/components/driver.js +35 -0
  54. package/dist/components/fan-out-inputs.d.ts +69 -0
  55. package/dist/components/fan-out-inputs.d.ts.map +1 -0
  56. package/dist/components/fan-out-inputs.js +169 -0
  57. package/dist/components/fan-out-record.d.ts +13 -0
  58. package/dist/components/fan-out-record.d.ts.map +1 -1
  59. package/dist/components/fan-out-record.js +16 -0
  60. package/dist/components/fan-out-run.d.ts.map +1 -1
  61. package/dist/components/fan-out-run.js +50 -0
  62. package/dist/components/fan-out.d.ts +4 -0
  63. package/dist/components/fan-out.d.ts.map +1 -1
  64. package/dist/components/pr-pipeline.d.ts +25 -0
  65. package/dist/components/pr-pipeline.d.ts.map +1 -1
  66. package/dist/components/pr-pipeline.js +22 -4
  67. package/dist/components/promote.d.ts +23 -0
  68. package/dist/components/promote.d.ts.map +1 -1
  69. package/dist/components/promote.js +60 -2
  70. package/dist/components/release-compile.d.ts +9 -0
  71. package/dist/components/release-compile.d.ts.map +1 -1
  72. package/dist/components/release-compile.js +9 -3
  73. package/dist/components/release-gate.d.ts +11 -1
  74. package/dist/components/release-gate.d.ts.map +1 -1
  75. package/dist/components/release-gate.js +10 -4
  76. package/dist/components/wave-plan.d.ts +5 -0
  77. package/dist/components/wave-plan.d.ts.map +1 -1
  78. package/dist/components/wave-plan.js +10 -2
  79. package/dist/config.d.ts +38 -0
  80. package/dist/config.d.ts.map +1 -1
  81. package/dist/config.js +2 -0
  82. package/dist/flag-params.d.ts +54 -0
  83. package/dist/flag-params.d.ts.map +1 -0
  84. package/dist/flag-params.js +130 -0
  85. package/dist/lifecycle/__fixtures__/publish-fakes.d.ts +120 -0
  86. package/dist/lifecycle/__fixtures__/publish-fakes.d.ts.map +1 -0
  87. package/dist/lifecycle/__fixtures__/publish-fakes.js +304 -0
  88. package/dist/lifecycle/change-set-store.d.ts +2 -1
  89. package/dist/lifecycle/change-set-store.d.ts.map +1 -1
  90. package/dist/lifecycle/change-set-store.js +2 -1
  91. package/dist/lifecycle/delivery-metrics.d.ts +139 -0
  92. package/dist/lifecycle/delivery-metrics.d.ts.map +1 -0
  93. package/dist/lifecycle/delivery-metrics.js +145 -0
  94. package/dist/lifecycle/deploy-outcome.d.ts +81 -0
  95. package/dist/lifecycle/deploy-outcome.d.ts.map +1 -0
  96. package/dist/lifecycle/deploy-outcome.js +101 -0
  97. package/dist/lifecycle/gate-change-set.d.ts +10 -1
  98. package/dist/lifecycle/gate-change-set.d.ts.map +1 -1
  99. package/dist/lifecycle/gate-change-set.js +35 -3
  100. package/dist/lifecycle/gate-ledger.d.ts +2 -3
  101. package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
  102. package/dist/lifecycle/git.d.ts +30 -1
  103. package/dist/lifecycle/git.d.ts.map +1 -1
  104. package/dist/lifecycle/git.js +31 -5
  105. package/dist/lifecycle/index.d.ts +4 -0
  106. package/dist/lifecycle/index.d.ts.map +1 -1
  107. package/dist/lifecycle/index.js +4 -0
  108. package/dist/lifecycle/mixed-environment.d.ts +95 -0
  109. package/dist/lifecycle/mixed-environment.d.ts.map +1 -0
  110. package/dist/lifecycle/mixed-environment.js +154 -0
  111. package/dist/lifecycle/publish-attachments.d.ts +79 -0
  112. package/dist/lifecycle/publish-attachments.d.ts.map +1 -0
  113. package/dist/lifecycle/publish-attachments.js +179 -0
  114. package/dist/lifecycle/publish-credentials.d.ts +37 -0
  115. package/dist/lifecycle/publish-credentials.d.ts.map +1 -0
  116. package/dist/lifecycle/publish-credentials.js +69 -0
  117. package/dist/lifecycle/publish-declaration.d.ts +97 -0
  118. package/dist/lifecycle/publish-declaration.d.ts.map +1 -0
  119. package/dist/lifecycle/publish-declaration.js +83 -0
  120. package/dist/lifecycle/publish-forge.d.ts +53 -0
  121. package/dist/lifecycle/publish-forge.d.ts.map +1 -0
  122. package/dist/lifecycle/publish-forge.js +298 -0
  123. package/dist/lifecycle/publish-npm.d.ts +61 -0
  124. package/dist/lifecycle/publish-npm.d.ts.map +1 -0
  125. package/dist/lifecycle/publish-npm.js +242 -0
  126. package/dist/lifecycle/publish-oci.d.ts +64 -0
  127. package/dist/lifecycle/publish-oci.d.ts.map +1 -0
  128. package/dist/lifecycle/publish-oci.js +383 -0
  129. package/dist/lifecycle/publish-record.d.ts +66 -0
  130. package/dist/lifecycle/publish-record.d.ts.map +1 -0
  131. package/dist/lifecycle/publish-record.js +84 -0
  132. package/dist/lifecycle/publish-targets.d.ts +45 -0
  133. package/dist/lifecycle/publish-targets.d.ts.map +1 -0
  134. package/dist/lifecycle/publish-targets.js +85 -0
  135. package/dist/lifecycle/release-cut.d.ts +48 -1
  136. package/dist/lifecycle/release-cut.d.ts.map +1 -1
  137. package/dist/lifecycle/release-cut.js +116 -23
  138. package/dist/lifecycle/release-join.d.ts +95 -0
  139. package/dist/lifecycle/release-join.d.ts.map +1 -0
  140. package/dist/lifecycle/release-join.js +139 -0
  141. package/dist/lifecycle/release-publish.d.ts +312 -0
  142. package/dist/lifecycle/release-publish.d.ts.map +1 -0
  143. package/dist/lifecycle/release-publish.js +335 -0
  144. package/dist/lifecycle/release-revocation.d.ts +80 -0
  145. package/dist/lifecycle/release-revocation.d.ts.map +1 -0
  146. package/dist/lifecycle/release-revocation.js +123 -0
  147. package/dist/lifecycle/release-store.d.ts +12 -2
  148. package/dist/lifecycle/release-store.d.ts.map +1 -1
  149. package/dist/lifecycle/release-store.js +4 -2
  150. package/dist/lifecycle/release-verify.d.ts +61 -0
  151. package/dist/lifecycle/release-verify.d.ts.map +1 -0
  152. package/dist/lifecycle/release-verify.js +92 -0
  153. package/dist/lifecycle/release-workstation.d.ts +91 -0
  154. package/dist/lifecycle/release-workstation.d.ts.map +1 -0
  155. package/dist/lifecycle/release-workstation.js +180 -0
  156. package/dist/lifecycle/retention-policy.d.ts +45 -0
  157. package/dist/lifecycle/retention-policy.d.ts.map +1 -0
  158. package/dist/lifecycle/retention-policy.js +43 -0
  159. package/dist/lifecycle/retention.d.ts +185 -0
  160. package/dist/lifecycle/retention.d.ts.map +1 -0
  161. package/dist/lifecycle/retention.js +400 -0
  162. package/dist/plan-summary.d.ts.map +1 -1
  163. package/dist/plan-summary.js +8 -2
  164. package/dist/pr-loop.d.ts +7 -0
  165. package/dist/pr-loop.d.ts.map +1 -1
  166. package/dist/pr-loop.js +23 -4
  167. package/dist/pr-report-url.d.ts +82 -0
  168. package/dist/pr-report-url.d.ts.map +1 -0
  169. package/dist/pr-report-url.js +174 -0
  170. package/dist/provenance.d.ts +2 -2
  171. package/dist/provenance.d.ts.map +1 -1
  172. package/dist/run-event-store.d.ts +29 -2
  173. package/dist/run-event-store.d.ts.map +1 -1
  174. package/dist/run-event-store.js +50 -3
  175. package/dist/run-event-stream.d.ts +2 -1
  176. package/dist/run-event-stream.d.ts.map +1 -1
  177. package/dist/run-event-stream.js +5 -1
  178. package/dist/run-event.d.ts +19 -1
  179. package/dist/run-event.d.ts.map +1 -1
  180. package/dist/run-event.js +2 -0
  181. package/dist/wave-runtime.mjs +260 -229
  182. package/dist/workspace/__fixtures__/flag-workspace.d.ts +31 -0
  183. package/dist/workspace/__fixtures__/flag-workspace.d.ts.map +1 -0
  184. package/dist/workspace/__fixtures__/flag-workspace.js +114 -0
  185. package/dist/workspace/change-set.schema.json +5 -1
  186. package/dist/workspace/check.schema.json +4 -2
  187. package/dist/workspace/checks/records.d.ts +9 -1
  188. package/dist/workspace/checks/records.d.ts.map +1 -1
  189. package/dist/workspace/checks/records.js +35 -1
  190. package/dist/workspace/checks.d.ts +1 -0
  191. package/dist/workspace/checks.d.ts.map +1 -1
  192. package/dist/workspace/checks.js +2 -1
  193. package/dist/workspace/ci-green.d.ts +8 -0
  194. package/dist/workspace/ci-green.d.ts.map +1 -1
  195. package/dist/workspace/ci-green.js +10 -3
  196. package/dist/workspace/declaration.d.ts +16 -0
  197. package/dist/workspace/declaration.d.ts.map +1 -1
  198. package/dist/workspace/declaration.js +26 -0
  199. package/dist/workspace/declaration.schema.json +64 -0
  200. package/dist/workspace/declared-kinds.d.ts +16 -0
  201. package/dist/workspace/declared-kinds.d.ts.map +1 -1
  202. package/dist/workspace/declared-kinds.js +25 -0
  203. package/dist/workspace/delivery-metrics.d.ts +91 -0
  204. package/dist/workspace/delivery-metrics.d.ts.map +1 -0
  205. package/dist/workspace/delivery-metrics.js +217 -0
  206. package/dist/workspace/delivery-metrics.schema.json +519 -0
  207. package/dist/workspace/flags-read.d.ts +37 -0
  208. package/dist/workspace/flags-read.d.ts.map +1 -0
  209. package/dist/workspace/flags-read.js +103 -0
  210. package/dist/workspace/flags.d.ts +100 -0
  211. package/dist/workspace/flags.d.ts.map +1 -0
  212. package/dist/workspace/flags.js +98 -0
  213. package/dist/workspace/graph-cli.js +1 -1
  214. package/dist/workspace/intent-cli.d.ts +11 -2
  215. package/dist/workspace/intent-cli.d.ts.map +1 -1
  216. package/dist/workspace/intent-cli.js +54 -5
  217. package/dist/workspace/intent-trace.d.ts +219 -0
  218. package/dist/workspace/intent-trace.d.ts.map +1 -0
  219. package/dist/workspace/intent-trace.js +314 -0
  220. package/dist/workspace/intent.d.ts +30 -6
  221. package/dist/workspace/intent.d.ts.map +1 -1
  222. package/dist/workspace/intent.js +141 -21
  223. package/dist/workspace/intent.schema.json +702 -6
  224. package/dist/workspace/overlap.d.ts +146 -0
  225. package/dist/workspace/overlap.d.ts.map +1 -0
  226. package/dist/workspace/overlap.js +276 -0
  227. package/dist/workspace/reason-codes.d.ts +2 -0
  228. package/dist/workspace/reason-codes.d.ts.map +1 -1
  229. package/dist/workspace/reason-codes.js +3 -0
  230. package/dist/workspace/records.d.ts +15 -2
  231. package/dist/workspace/records.d.ts.map +1 -1
  232. package/dist/workspace/records.js +32 -0
  233. package/dist/workspace/records.schema.json +21 -2
  234. package/dist/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
  235. package/dist/workspace/reference-kinds/flag/flag.schema.json +53 -0
  236. package/dist/workspace/releases.d.ts +9 -0
  237. package/dist/workspace/releases.d.ts.map +1 -1
  238. package/dist/workspace/releases.js +9 -0
  239. package/dist/workspace/releases.schema.json +123 -1
  240. package/dist/workspace/run-event.schema.json +10 -3
  241. package/dist/workspace/status-gates.d.ts +8 -0
  242. package/dist/workspace/status-gates.d.ts.map +1 -1
  243. package/dist/workspace/status.d.ts +78 -0
  244. package/dist/workspace/status.d.ts.map +1 -1
  245. package/dist/workspace/status.js +170 -3
  246. package/dist/workspace/status.schema.json +198 -1
  247. package/dist/workspace/wip.d.ts.map +1 -1
  248. package/dist/workspace/wip.js +11 -3
  249. package/package.json +1 -1
  250. package/src/build-params.test.ts +46 -0
  251. package/src/build-params.ts +55 -1
  252. package/src/change-set-graph.ts +10 -2
  253. package/src/change-set.ts +14 -3
  254. package/src/cli/build-params-cli.ts +22 -9
  255. package/src/cli/commands/build.ts +6 -3
  256. package/src/cli/handlers/approve-release.test.ts +5 -1
  257. package/src/cli/handlers/approve-revoked.test.ts +155 -0
  258. package/src/cli/handlers/approve.ts +47 -0
  259. package/src/cli/handlers/build.test.ts +15 -0
  260. package/src/cli/handlers/build.ts +17 -4
  261. package/src/cli/handlers/fan-out.test.ts +180 -1
  262. package/src/cli/handlers/fan-out.ts +38 -3
  263. package/src/cli/handlers/intent-trace.e2e.test.ts +201 -0
  264. package/src/cli/handlers/lifecycle-gc.test.ts +126 -0
  265. package/src/cli/handlers/lifecycle-gc.ts +146 -0
  266. package/src/cli/handlers/pr.test.ts +148 -1
  267. package/src/cli/handlers/pr.ts +139 -28
  268. package/src/cli/handlers/promote.test.ts +280 -2
  269. package/src/cli/handlers/promote.ts +210 -34
  270. package/src/cli/handlers/release-implicit.e2e.test.ts +12 -4
  271. package/src/cli/handlers/release-join.e2e.test.ts +185 -0
  272. package/src/cli/handlers/release-publish-targets.e2e.test.ts +295 -0
  273. package/src/cli/handlers/release-verify.e2e.test.ts +117 -0
  274. package/src/cli/handlers/release-workstation-ci.e2e.test.ts +135 -0
  275. package/src/cli/handlers/release.e2e.test.ts +146 -32
  276. package/src/cli/handlers/release.ts +415 -28
  277. package/src/cli/handlers/run-auto-release.test.ts +9 -0
  278. package/src/cli/handlers/run-release.test.ts +55 -0
  279. package/src/cli/handlers/run.ts +69 -5
  280. package/src/cli/main.test.ts +1 -0
  281. package/src/cli/main.ts +61 -10
  282. package/src/cli/parse-args.ts +19 -2
  283. package/src/cli/registry.ts +15 -3
  284. package/src/cli/run-events.ts +5 -2
  285. package/src/components/auto-release.test.ts +9 -0
  286. package/src/components/auto-release.ts +3 -0
  287. package/src/components/capability.ts +9 -0
  288. package/src/components/driver.test.ts +24 -0
  289. package/src/components/driver.ts +36 -0
  290. package/src/components/fan-out-inputs.test.ts +85 -0
  291. package/src/components/fan-out-inputs.ts +192 -0
  292. package/src/components/fan-out-record.test.ts +10 -0
  293. package/src/components/fan-out-record.ts +19 -0
  294. package/src/components/fan-out-run.ts +48 -0
  295. package/src/components/fan-out.ts +4 -0
  296. package/src/components/pr-pipeline.ts +35 -4
  297. package/src/components/promote.ts +68 -2
  298. package/src/components/release-compile.ts +17 -3
  299. package/src/components/release-gate.ts +18 -4
  300. package/src/components/wave-plan.ts +15 -2
  301. package/src/config.ts +8 -0
  302. package/src/flag-params.test.ts +144 -0
  303. package/src/flag-params.ts +134 -0
  304. package/src/lifecycle/__fixtures__/publish-fakes.ts +351 -0
  305. package/src/lifecycle/change-set-store.ts +2 -1
  306. package/src/lifecycle/delivery-metrics.ts +263 -0
  307. package/src/lifecycle/deploy-outcome.ts +147 -0
  308. package/src/lifecycle/gate-change-set.ts +37 -6
  309. package/src/lifecycle/gate-ledger.ts +2 -2
  310. package/src/lifecycle/git.ts +61 -8
  311. package/src/lifecycle/index.ts +4 -0
  312. package/src/lifecycle/mixed-environment.test.ts +97 -0
  313. package/src/lifecycle/mixed-environment.ts +204 -0
  314. package/src/lifecycle/publish-attachments.ts +196 -0
  315. package/src/lifecycle/publish-credentials.ts +84 -0
  316. package/src/lifecycle/publish-declaration.ts +95 -0
  317. package/src/lifecycle/publish-forge.ts +325 -0
  318. package/src/lifecycle/publish-npm.ts +259 -0
  319. package/src/lifecycle/publish-oci.ts +396 -0
  320. package/src/lifecycle/publish-record.ts +113 -0
  321. package/src/lifecycle/publish-resume.test.ts +168 -0
  322. package/src/lifecycle/publish-targets.test.ts +494 -0
  323. package/src/lifecycle/publish-targets.ts +100 -0
  324. package/src/lifecycle/release-cut.test.ts +74 -2
  325. package/src/lifecycle/release-cut.ts +158 -22
  326. package/src/lifecycle/release-flag.test.ts +112 -0
  327. package/src/lifecycle/release-join.test.ts +68 -0
  328. package/src/lifecycle/release-join.ts +182 -0
  329. package/src/lifecycle/release-publish.test.ts +225 -0
  330. package/src/lifecycle/release-publish.ts +568 -0
  331. package/src/lifecycle/release-revocation.ts +147 -0
  332. package/src/lifecycle/release-store.ts +15 -4
  333. package/src/lifecycle/release-verify.test.ts +110 -0
  334. package/src/lifecycle/release-verify.ts +120 -0
  335. package/src/lifecycle/release-workstation.test.ts +204 -0
  336. package/src/lifecycle/release-workstation.ts +216 -0
  337. package/src/lifecycle/retention-growth.e2e.test.ts +279 -0
  338. package/src/lifecycle/retention-policy.ts +63 -0
  339. package/src/lifecycle/retention.test.ts +363 -0
  340. package/src/lifecycle/retention.ts +508 -0
  341. package/src/plan-summary.test.ts +20 -0
  342. package/src/plan-summary.ts +8 -1
  343. package/src/pr-loop.ts +25 -4
  344. package/src/pr-report-url.test.ts +131 -0
  345. package/src/pr-report-url.ts +209 -0
  346. package/src/provenance.ts +2 -2
  347. package/src/run-event-store.ts +63 -3
  348. package/src/run-event-stream.ts +4 -1
  349. package/src/run-event.ts +21 -1
  350. package/src/workspace/__fixtures__/flag-workspace.ts +132 -0
  351. package/src/workspace/__fixtures__/older-records/change-set-984534ea9.json +100 -0
  352. package/src/workspace/__fixtures__/older-records/older-records.json +326 -0
  353. package/src/workspace/change-set.schema.json +5 -1
  354. package/src/workspace/check.schema.json +4 -2
  355. package/src/workspace/checks/records.ts +35 -1
  356. package/src/workspace/checks.ts +2 -1
  357. package/src/workspace/ci-green.ts +14 -3
  358. package/src/workspace/declaration.schema.json +64 -0
  359. package/src/workspace/declaration.test.ts +28 -0
  360. package/src/workspace/declaration.ts +38 -0
  361. package/src/workspace/declared-kinds.ts +40 -1
  362. package/src/workspace/delivery-metrics.schema.json +519 -0
  363. package/src/workspace/delivery-metrics.test.ts +236 -0
  364. package/src/workspace/delivery-metrics.ts +286 -0
  365. package/src/workspace/flags-read.ts +121 -0
  366. package/src/workspace/flags.test.ts +141 -0
  367. package/src/workspace/flags.ts +157 -0
  368. package/src/workspace/graph-cli.ts +1 -1
  369. package/src/workspace/intent-cli.ts +46 -5
  370. package/src/workspace/intent-trace.test.ts +173 -0
  371. package/src/workspace/intent-trace.ts +484 -0
  372. package/src/workspace/intent.schema.json +702 -6
  373. package/src/workspace/intent.ts +148 -25
  374. package/src/workspace/older-records.test.ts +412 -0
  375. package/src/workspace/overlap.test.ts +165 -0
  376. package/src/workspace/overlap.ts +340 -0
  377. package/src/workspace/read-contract.e2e.test.ts +2 -1
  378. package/src/workspace/reason-codes.test.ts +5 -0
  379. package/src/workspace/reason-codes.ts +3 -0
  380. package/src/workspace/record-assets.test.ts +2 -1
  381. package/src/workspace/records-contract.e2e.test.ts +2 -1
  382. package/src/workspace/records.schema.json +21 -2
  383. package/src/workspace/records.ts +36 -2
  384. package/src/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
  385. package/src/workspace/reference-kinds/flag/flag.schema.json +53 -0
  386. package/src/workspace/releases.schema.json +123 -1
  387. package/src/workspace/releases.ts +11 -0
  388. package/src/workspace/run-event.schema.json +10 -3
  389. package/src/workspace/status-contract.test.ts +29 -0
  390. package/src/workspace/status-gates.ts +8 -0
  391. package/src/workspace/status-mixed.test.ts +152 -0
  392. package/src/workspace/status-revoked.test.ts +153 -0
  393. package/src/workspace/status.schema.json +198 -1
  394. package/src/workspace/status.ts +254 -3
  395. package/src/workspace/wip.ts +11 -2
@@ -66,7 +66,7 @@
66
66
  },
67
67
  "region": {
68
68
  "type": "string",
69
- "description": "The id of the region node: region:<path>, with :<start>-<end> for a line range or #<symbol> for a symbol."
69
+ "description": "The id of the region node: region:<path>, with :<start>-<end> for a line range or #<symbol> for a symbol, or region:commit:<sha> for a commit (#4023)."
70
70
  },
71
71
  "history": {
72
72
  "type": "object",
@@ -88,9 +88,10 @@
88
88
  "enum": [
89
89
  "line-range",
90
90
  "file",
91
- "directory"
91
+ "directory",
92
+ "commit"
92
93
  ],
93
- "description": "line-range: git log -L over the region's lines, a symbol's current lines included. file: git log --follow over the file. directory: git log over the directory."
94
+ "description": "line-range: git log -L over the region's lines, a symbol's current lines included. file: git log --follow over the file. directory: git log over the directory. commit: the one commit a commit region names (#4023), added within version 1 by chant 0.124.29."
94
95
  },
95
96
  "shallow": {
96
97
  "type": "boolean",
@@ -185,6 +186,9 @@
185
186
  },
186
187
  "why": {
187
188
  "$ref": "#/$defs/why"
189
+ },
190
+ "trace": {
191
+ "$ref": "#/$defs/trace"
188
192
  }
189
193
  }
190
194
  },
@@ -243,7 +247,7 @@
243
247
  }
244
248
  },
245
249
  "region": {
246
- "description": "The region the walk starts from. Its id is region:<path>, with :<start>-<end> for a line range, or #<symbol> for a symbol (#3034).",
250
+ "description": "The region the walk starts from. Its id is region:<path>, with :<start>-<end> for a line range, or #<symbol> for a symbol (#3034). A region given as a commit sha (#4023) has the id region:commit:<sha>, type commit, path \".\" and commit set: it covers the files the commit changed against its first parent, and its member is the one member holding them all, else null.",
247
251
  "type": "object",
248
252
  "required": [
249
253
  "id",
@@ -296,8 +300,10 @@
296
300
  "type": {
297
301
  "enum": [
298
302
  "file",
299
- "dir"
300
- ]
303
+ "dir",
304
+ "commit"
305
+ ],
306
+ "description": "file or dir; commit for a region given as a commit sha (#4023), added within version 1 by chant 0.124.29, so a reader that switches on it treats another value as one it does not know."
301
307
  },
302
308
  "generated": {
303
309
  "type": [
@@ -342,6 +348,11 @@
342
348
  }
343
349
  ],
344
350
  "description": "For a region given as path#symbol (#3034): the symbol and the declaration it resolved to in the tree read; its current lines are in lines and are followed through history as a line range. Null otherwise. Added within version 1, so an older document may lack it."
351
+ },
352
+ "commit": {
353
+ "type": "string",
354
+ "pattern": "^[0-9a-f]{40,64}$",
355
+ "description": "Added within version 1 by #4023, written by chant 0.124.29 and newer. The full sha, for a region given as a commit. Absent otherwise."
345
356
  }
346
357
  }
347
358
  },
@@ -1008,6 +1019,18 @@
1008
1019
  }
1009
1020
  }
1010
1021
  },
1022
+ "overlaps": {
1023
+ "description": "Added within contract 1 by #4025, written by chant 0.124.29 and newer. The other in-flight work items whose linked commits touch a file this item's linked commits touch, as chant workspace status --json reports in overlap, each with the shared files from the repository root. Empty when none does, or the item is not in flight. Absent on a read with --at and when the overlap can't be read. The change-set entries two items share are in status, which reads the gates.",
1024
+ "type": "array",
1025
+ "items": {
1026
+ "type": "object",
1027
+ "required": ["with", "files"],
1028
+ "properties": {
1029
+ "with": { "type": "string", "description": "The other item, <work kind>:<id>." },
1030
+ "files": { "type": "array", "items": { "type": "string" } }
1031
+ }
1032
+ }
1033
+ },
1011
1034
  "reviews": {
1012
1035
  "description": "The review sessions whose comments led to this item (#3154, E21 in arugula-salad/hud#823): each record of a session kind read whose comments[].follow_ups, or its own follow_ups, name the item as <kind>:<id>. A commit that carries the item by its Chant-Record trailer joins back to the review through it. Absent when none does. Added within contract 1.",
1013
1036
  "type": "array",
@@ -2415,6 +2438,679 @@
2415
2438
  "description": "The original commits, oldest first: the head's commits the squash's parent doesn't have, merges left out."
2416
2439
  }
2417
2440
  }
2441
+ },
2442
+ "trace": {
2443
+ "type": "object",
2444
+ "required": [
2445
+ "commits",
2446
+ "releases",
2447
+ "deploys",
2448
+ "reasons"
2449
+ ],
2450
+ "description": "Added within version 1 by #4023, written by chant 0.124.29 and newer, so an older document lacks it. The why chain: for each commit, the work item it names, its ci tag, the release that shipped it, the gate resolutions that admitted that release and the deploy records per environment. Every link states its source record. Read from local tags and the local chant/lifecycle branch; nothing is fetched. A commit contains another when it has it as an ancestor in the history read.",
2451
+ "properties": {
2452
+ "commits": {
2453
+ "type": "array",
2454
+ "items": {
2455
+ "$ref": "#/$defs/traceCommit"
2456
+ }
2457
+ },
2458
+ "releases": {
2459
+ "type": "array",
2460
+ "items": {
2461
+ "$ref": "#/$defs/traceRelease"
2462
+ }
2463
+ },
2464
+ "deploys": {
2465
+ "type": "array",
2466
+ "description": "Oldest first.",
2467
+ "items": {
2468
+ "$ref": "#/$defs/traceDeploy"
2469
+ }
2470
+ },
2471
+ "reasons": {
2472
+ "type": "array",
2473
+ "description": "Parts of the chain that could not be read; the rest stands.",
2474
+ "items": {
2475
+ "type": "object",
2476
+ "required": [
2477
+ "code",
2478
+ "message"
2479
+ ],
2480
+ "properties": {
2481
+ "code": {
2482
+ "enum": [
2483
+ "ledger-unreadable",
2484
+ "declaration-invalid"
2485
+ ]
2486
+ },
2487
+ "message": {
2488
+ "type": "string"
2489
+ }
2490
+ }
2491
+ }
2492
+ }
2493
+ }
2494
+ },
2495
+ "traceCommit": {
2496
+ "type": "object",
2497
+ "required": [
2498
+ "commit",
2499
+ "sha",
2500
+ "work",
2501
+ "windowMatches",
2502
+ "tag",
2503
+ "releases",
2504
+ "deploys"
2505
+ ],
2506
+ "description": "One commit of the walk, in the order of the commit nodes, with its chain.",
2507
+ "properties": {
2508
+ "commit": {
2509
+ "type": "string",
2510
+ "pattern": "^commit:"
2511
+ },
2512
+ "sha": {
2513
+ "type": "string"
2514
+ },
2515
+ "work": {
2516
+ "description": "The work items the commit names, judged as check --changes judges it (#4029). Null when no work kind was read.",
2517
+ "oneOf": [
2518
+ {
2519
+ "type": "null"
2520
+ },
2521
+ {
2522
+ "type": "object",
2523
+ "required": [
2524
+ "state",
2525
+ "items",
2526
+ "problems"
2527
+ ],
2528
+ "properties": {
2529
+ "state": {
2530
+ "enum": [
2531
+ "linked",
2532
+ "unlinked",
2533
+ "wrong",
2534
+ "merge"
2535
+ ]
2536
+ },
2537
+ "items": {
2538
+ "type": "array",
2539
+ "items": {
2540
+ "$ref": "#/$defs/traceWork"
2541
+ },
2542
+ "description": "Each work item a Chant-Record or Chant-Lease trailer names. Empty for a lease that could not be checked."
2543
+ },
2544
+ "problems": {
2545
+ "type": "array",
2546
+ "items": {
2547
+ "type": "object",
2548
+ "required": [
2549
+ "trailer",
2550
+ "message"
2551
+ ],
2552
+ "properties": {
2553
+ "trailer": {
2554
+ "type": "string"
2555
+ },
2556
+ "message": {
2557
+ "type": "string"
2558
+ }
2559
+ }
2560
+ }
2561
+ }
2562
+ }
2563
+ }
2564
+ ]
2565
+ },
2566
+ "windowMatches": {
2567
+ "type": "array",
2568
+ "description": "The work items whose window holds the commit, the within edges with state worked. They do not link the commit.",
2569
+ "items": {
2570
+ "$ref": "#/$defs/traceWork"
2571
+ }
2572
+ },
2573
+ "tag": {
2574
+ "$ref": "#/$defs/traceTag"
2575
+ },
2576
+ "releases": {
2577
+ "type": "array",
2578
+ "description": "The releases cut from the commit, or when there are none, the first release cut from a commit that has it in its history.",
2579
+ "items": {
2580
+ "type": "object",
2581
+ "required": [
2582
+ "release",
2583
+ "link",
2584
+ "source"
2585
+ ],
2586
+ "properties": {
2587
+ "release": {
2588
+ "type": "string",
2589
+ "description": "A releaseDigest in trace.releases."
2590
+ },
2591
+ "link": {
2592
+ "enum": [
2593
+ "cut-from",
2594
+ "contains"
2595
+ ]
2596
+ },
2597
+ "source": {
2598
+ "$ref": "#/$defs/traceSource"
2599
+ }
2600
+ }
2601
+ }
2602
+ },
2603
+ "deploys": {
2604
+ "type": "array",
2605
+ "description": "Per environment, the first deploy record built from the commit or from a commit that has it in its history.",
2606
+ "items": {
2607
+ "type": "object",
2608
+ "required": [
2609
+ "deploy",
2610
+ "env",
2611
+ "link",
2612
+ "source"
2613
+ ],
2614
+ "properties": {
2615
+ "deploy": {
2616
+ "type": "string",
2617
+ "description": "An id in trace.deploys."
2618
+ },
2619
+ "env": {
2620
+ "type": "string"
2621
+ },
2622
+ "link": {
2623
+ "enum": [
2624
+ "built-from",
2625
+ "contains"
2626
+ ]
2627
+ },
2628
+ "source": {
2629
+ "$ref": "#/$defs/traceSource"
2630
+ }
2631
+ }
2632
+ }
2633
+ }
2634
+ }
2635
+ },
2636
+ "traceSource": {
2637
+ "type": "object",
2638
+ "required": [
2639
+ "ref",
2640
+ "field",
2641
+ "value"
2642
+ ],
2643
+ "additionalProperties": false,
2644
+ "description": "Where a link comes from, so a reader can follow it: the record and the field of it whose value made the join.",
2645
+ "properties": {
2646
+ "ref": {
2647
+ "type": "string",
2648
+ "description": "A commit sha (a trailer), a tag ref refs/tags/ci/<green|revoked>/<sha>, a work record's file from the repository root (a window match), or a path on the local chant/lifecycle branch as chant/lifecycle:<path>."
2649
+ },
2650
+ "field": {
2651
+ "type": "string",
2652
+ "description": "The trailer, field or edge that joins: Chant-Record, Chant-Lease, window, name (a tag), commit (a release file), releaseDigest, admission, gitSha, runId, digest (a plan), planDigest (a change set) or gate."
2653
+ },
2654
+ "value": {
2655
+ "type": "string",
2656
+ "description": "Its value as the record holds it. For admission, <gate>@<resolvedAt>."
2657
+ }
2658
+ }
2659
+ },
2660
+ "traceWork": {
2661
+ "type": "object",
2662
+ "required": [
2663
+ "id",
2664
+ "node",
2665
+ "source"
2666
+ ],
2667
+ "properties": {
2668
+ "id": {
2669
+ "type": "string",
2670
+ "description": "<kind>:<id>."
2671
+ },
2672
+ "node": {
2673
+ "type": [
2674
+ "string",
2675
+ "null"
2676
+ ],
2677
+ "description": "The work node in nodes, or null when no kind read has the record."
2678
+ },
2679
+ "source": {
2680
+ "$ref": "#/$defs/traceSource"
2681
+ }
2682
+ }
2683
+ },
2684
+ "traceTag": {
2685
+ "type": "object",
2686
+ "required": [
2687
+ "state",
2688
+ "green",
2689
+ "revoked",
2690
+ "ignored"
2691
+ ],
2692
+ "description": "The commit's ci tags as readers count them, judged as release cut judges them (#4031, ws-103).",
2693
+ "properties": {
2694
+ "state": {
2695
+ "enum": [
2696
+ "green",
2697
+ "revoked",
2698
+ "none"
2699
+ ],
2700
+ "description": "revoked when a revoked tag counts, else green when a green tag counts, else none."
2701
+ },
2702
+ "green": {
2703
+ "oneOf": [
2704
+ {
2705
+ "type": "null"
2706
+ },
2707
+ {
2708
+ "$ref": "#/$defs/traceTagView"
2709
+ }
2710
+ ]
2711
+ },
2712
+ "revoked": {
2713
+ "oneOf": [
2714
+ {
2715
+ "type": "null"
2716
+ },
2717
+ {
2718
+ "$ref": "#/$defs/traceTagView"
2719
+ }
2720
+ ]
2721
+ },
2722
+ "ignored": {
2723
+ "type": "array",
2724
+ "description": "Tags on the commit that exist and don't count, as ci list's ignored lists them.",
2725
+ "items": {
2726
+ "type": "object",
2727
+ "required": [
2728
+ "tag",
2729
+ "status",
2730
+ "reason"
2731
+ ],
2732
+ "properties": {
2733
+ "tag": {
2734
+ "type": "string"
2735
+ },
2736
+ "status": {
2737
+ "enum": [
2738
+ "unsigned",
2739
+ "invalid",
2740
+ "untrusted",
2741
+ "mismatch"
2742
+ ]
2743
+ },
2744
+ "reason": {
2745
+ "type": "string"
2746
+ }
2747
+ }
2748
+ }
2749
+ }
2750
+ }
2751
+ },
2752
+ "traceTagView": {
2753
+ "type": "object",
2754
+ "required": [
2755
+ "tag",
2756
+ "tagged",
2757
+ "signer",
2758
+ "source"
2759
+ ],
2760
+ "properties": {
2761
+ "tag": {
2762
+ "type": "string",
2763
+ "description": "ci/green/<sha> or ci/revoked/<sha>."
2764
+ },
2765
+ "tagged": {
2766
+ "type": [
2767
+ "string",
2768
+ "null"
2769
+ ],
2770
+ "description": "When the tag was made, ISO 8601, or null for a lightweight tag."
2771
+ },
2772
+ "signer": {
2773
+ "type": [
2774
+ "string",
2775
+ "null"
2776
+ ],
2777
+ "description": "The runner whose statement the tag carries, or null for a tag that counts unsigned (#4031)."
2778
+ },
2779
+ "phase": {
2780
+ "type": [
2781
+ "string",
2782
+ "null"
2783
+ ],
2784
+ "description": "On a revoked tag: the phase its annotation names as failed."
2785
+ },
2786
+ "run": {
2787
+ "description": "On a revoked tag: the run its annotation names, as ci list shows it, or null."
2788
+ },
2789
+ "source": {
2790
+ "$ref": "#/$defs/traceSource"
2791
+ }
2792
+ }
2793
+ },
2794
+ "traceGate": {
2795
+ "type": "object",
2796
+ "required": [
2797
+ "op",
2798
+ "gate",
2799
+ "environment",
2800
+ "resolvedBy",
2801
+ "relayedBy",
2802
+ "channel",
2803
+ "at",
2804
+ "planDigest",
2805
+ "changeSet",
2806
+ "changeSetSource",
2807
+ "empty",
2808
+ "sealed",
2809
+ "url",
2810
+ "source"
2811
+ ],
2812
+ "description": "One gate resolution from _gates/<op>.jsonl: who let the change through, on which channel, when, and for which plan.",
2813
+ "properties": {
2814
+ "op": {
2815
+ "type": "string",
2816
+ "description": "release for a release gate, or the op or component whose gate ledger holds it."
2817
+ },
2818
+ "gate": {
2819
+ "type": "string"
2820
+ },
2821
+ "environment": {
2822
+ "type": [
2823
+ "string",
2824
+ "null"
2825
+ ]
2826
+ },
2827
+ "resolvedBy": {
2828
+ "type": "string"
2829
+ },
2830
+ "relayedBy": {
2831
+ "type": [
2832
+ "string",
2833
+ "null"
2834
+ ],
2835
+ "description": "Who carried the approval to chant for resolvedBy (#3402), or null."
2836
+ },
2837
+ "channel": {
2838
+ "enum": [
2839
+ "cli",
2840
+ "mcp",
2841
+ "acp",
2842
+ null
2843
+ ],
2844
+ "description": "The channel the resolution was authored on (#2384), or null when the record does not say."
2845
+ },
2846
+ "at": {
2847
+ "type": "string",
2848
+ "description": "The resolution's timestamp."
2849
+ },
2850
+ "planDigest": {
2851
+ "type": [
2852
+ "string",
2853
+ "null"
2854
+ ],
2855
+ "description": "The plan the approval is for, or null."
2856
+ },
2857
+ "changeSet": {
2858
+ "type": [
2859
+ "string",
2860
+ "null"
2861
+ ],
2862
+ "description": "planDigest, when a change set is stored under it on chant/lifecycle (#4022); chant change-set show <changeSet> --json prints it. Null otherwise, as for a component gate's lifecycle-plan digest."
2863
+ },
2864
+ "changeSetSource": {
2865
+ "oneOf": [
2866
+ {
2867
+ "type": "null"
2868
+ },
2869
+ {
2870
+ "$ref": "#/$defs/traceSource"
2871
+ }
2872
+ ]
2873
+ },
2874
+ "empty": {
2875
+ "type": "boolean",
2876
+ "description": "A pass over an empty change set, written by the promote itself (#4045). It is no person's approval."
2877
+ },
2878
+ "sealed": {
2879
+ "type": "boolean",
2880
+ "description": "Whether the approval carries an ssh seal (chant approve --sign, #3163). status judges the seal against the signers at base."
2881
+ },
2882
+ "url": {
2883
+ "type": [
2884
+ "string",
2885
+ "null"
2886
+ ]
2887
+ },
2888
+ "source": {
2889
+ "$ref": "#/$defs/traceSource"
2890
+ }
2891
+ }
2892
+ },
2893
+ "traceRelease": {
2894
+ "type": "object",
2895
+ "required": [
2896
+ "releaseDigest",
2897
+ "label",
2898
+ "member",
2899
+ "commit",
2900
+ "tag",
2901
+ "source",
2902
+ "cuts",
2903
+ "gates",
2904
+ "deploys"
2905
+ ],
2906
+ "description": "A release that shipped a commit of the walk, joined by joinRelease (#4043).",
2907
+ "properties": {
2908
+ "releaseDigest": {
2909
+ "type": "string"
2910
+ },
2911
+ "label": {
2912
+ "type": [
2913
+ "string",
2914
+ "null"
2915
+ ]
2916
+ },
2917
+ "member": {
2918
+ "type": [
2919
+ "string",
2920
+ "null"
2921
+ ]
2922
+ },
2923
+ "commit": {
2924
+ "type": "string",
2925
+ "description": "The green commit it was cut from."
2926
+ },
2927
+ "tag": {
2928
+ "$ref": "#/$defs/traceTag"
2929
+ },
2930
+ "source": {
2931
+ "$ref": "#/$defs/traceSource"
2932
+ },
2933
+ "cuts": {
2934
+ "type": "array",
2935
+ "items": {
2936
+ "type": "object",
2937
+ "required": [
2938
+ "label",
2939
+ "actor",
2940
+ "timestamp",
2941
+ "signed",
2942
+ "runOrigin",
2943
+ "source"
2944
+ ],
2945
+ "properties": {
2946
+ "label": {
2947
+ "type": [
2948
+ "string",
2949
+ "null"
2950
+ ]
2951
+ },
2952
+ "actor": {
2953
+ "type": "string"
2954
+ },
2955
+ "timestamp": {
2956
+ "type": "string"
2957
+ },
2958
+ "signed": {
2959
+ "type": "boolean",
2960
+ "description": "Whether the cut carries a signature (#4031). release list judges it."
2961
+ },
2962
+ "runOrigin": {
2963
+ "description": "The CI run the cut ran in, or null."
2964
+ },
2965
+ "source": {
2966
+ "$ref": "#/$defs/traceSource"
2967
+ }
2968
+ }
2969
+ }
2970
+ },
2971
+ "gates": {
2972
+ "type": "array",
2973
+ "description": "The release gate's resolutions for the release (_gates/release.jsonl), oldest first.",
2974
+ "items": {
2975
+ "$ref": "#/$defs/traceGate"
2976
+ }
2977
+ },
2978
+ "deploys": {
2979
+ "type": "array",
2980
+ "description": "The ids of its deploy records in trace.deploys, oldest first.",
2981
+ "items": {
2982
+ "type": "string"
2983
+ }
2984
+ }
2985
+ }
2986
+ },
2987
+ "traceDeploy": {
2988
+ "type": "object",
2989
+ "required": [
2990
+ "id",
2991
+ "member",
2992
+ "env",
2993
+ "component",
2994
+ "timestamp",
2995
+ "actor",
2996
+ "approver",
2997
+ "runId",
2998
+ "runOrigin",
2999
+ "gitSha",
3000
+ "digest",
3001
+ "release",
3002
+ "releaseSource",
3003
+ "admittedBy",
3004
+ "plan",
3005
+ "source"
3006
+ ],
3007
+ "description": "A deploy record, a ReleaseRecord in <env>/releases.jsonl.",
3008
+ "properties": {
3009
+ "id": {
3010
+ "type": "string",
3011
+ "pattern": "^deploy:",
3012
+ "description": "deploy:<member>/<env>/<component>/<runId>@<timestamp>, with . for a ledger of no member."
3013
+ },
3014
+ "member": {
3015
+ "type": [
3016
+ "string",
3017
+ "null"
3018
+ ]
3019
+ },
3020
+ "env": {
3021
+ "type": "string"
3022
+ },
3023
+ "component": {
3024
+ "type": "string"
3025
+ },
3026
+ "timestamp": {
3027
+ "type": "string"
3028
+ },
3029
+ "actor": {
3030
+ "type": "string"
3031
+ },
3032
+ "approver": {
3033
+ "type": [
3034
+ "string",
3035
+ "null"
3036
+ ]
3037
+ },
3038
+ "runId": {
3039
+ "type": "string"
3040
+ },
3041
+ "runOrigin": {
3042
+ "description": "Where runId resolves (#2045), or null."
3043
+ },
3044
+ "gitSha": {
3045
+ "type": "string"
3046
+ },
3047
+ "digest": {
3048
+ "type": "string"
3049
+ },
3050
+ "release": {
3051
+ "type": [
3052
+ "string",
3053
+ "null"
3054
+ ],
3055
+ "description": "The release it was made from: its releaseDigest, or with none the one the release gate resolution its admission names carries (#4043). Null for a deploy that was not made from a release, such as a plain run --components."
3056
+ },
3057
+ "releaseSource": {
3058
+ "oneOf": [
3059
+ {
3060
+ "type": "null"
3061
+ },
3062
+ {
3063
+ "$ref": "#/$defs/traceSource"
3064
+ }
3065
+ ]
3066
+ },
3067
+ "admittedBy": {
3068
+ "oneOf": [
3069
+ {
3070
+ "type": "null"
3071
+ },
3072
+ {
3073
+ "$ref": "#/$defs/traceGate"
3074
+ }
3075
+ ],
3076
+ "description": "The gate resolution its admission names (#4020), or null for an ungated deploy, one recorded before chant 0.124.28, or one whose resolution is not on this checkout's chant/lifecycle."
3077
+ },
3078
+ "plan": {
3079
+ "oneOf": [
3080
+ {
3081
+ "type": "null"
3082
+ },
3083
+ {
3084
+ "type": "object",
3085
+ "required": [
3086
+ "document",
3087
+ "source"
3088
+ ],
3089
+ "properties": {
3090
+ "document": {
3091
+ "type": "object",
3092
+ "required": [
3093
+ "digest"
3094
+ ],
3095
+ "properties": {
3096
+ "digest": {
3097
+ "type": "string"
3098
+ }
3099
+ },
3100
+ "description": "The plan as stored, any JSON object with its own digest."
3101
+ },
3102
+ "source": {
3103
+ "$ref": "#/$defs/traceSource"
3104
+ }
3105
+ }
3106
+ }
3107
+ ],
3108
+ "description": "The release plan its digest names in _plans/ (ws-055): the work items and evidence the release shipped. Null when none is stored."
3109
+ },
3110
+ "source": {
3111
+ "$ref": "#/$defs/traceSource"
3112
+ }
3113
+ }
2418
3114
  }
2419
3115
  }
2420
3116
  }