@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
@@ -0,0 +1,519 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://intentius.io/chant/schemas/workspace/delivery-metrics/v1/delivery-metrics.schema.json",
4
+ "title": "chant workspace metrics output",
5
+ "description": "What `chant workspace metrics --json` prints (#4039): the four DORA metrics (deployment frequency, lead time, change failure rate and time to restore) per member and environment, computed from the deploy records in <env>/releases.jsonl, the releases in _releases/, the release gate's resolutions and the counted ci/revoked/<sha> tags. It reads the local chant/lifecycle branch and local tags and never fetches. behold and a Grafana panel read the same numbers from it, and #3990's metrics contract can adopt it. Version 1 of the read contract. Readers ignore fields they do not know; a field is only ever added within a version. The codes are a closed list, each in the one closed list of `reason-codes.ts`. Contract version 1 of this document is written by chant 0.124.29 and newer; the read contract as a whole by chant 0.81.0 and newer.",
6
+ "oneOf": [
7
+ {
8
+ "$ref": "#/$defs/result"
9
+ },
10
+ {
11
+ "$ref": "#/$defs/failure"
12
+ }
13
+ ],
14
+ "$defs": {
15
+ "result": {
16
+ "type": "object",
17
+ "description": "Exit code 0, with or without deploys.",
18
+ "required": [
19
+ "$schema",
20
+ "contract",
21
+ "chant",
22
+ "workspace",
23
+ "lifecycle",
24
+ "window",
25
+ "failureWindowDays",
26
+ "members"
27
+ ],
28
+ "properties": {
29
+ "$schema": {
30
+ "const": "https://intentius.io/chant/schemas/workspace/delivery-metrics/v1/delivery-metrics.schema.json"
31
+ },
32
+ "contract": {
33
+ "const": 1
34
+ },
35
+ "chant": {
36
+ "type": "string"
37
+ },
38
+ "error": false,
39
+ "workspace": {
40
+ "description": "The workspace read, or null for a project outside a workspace, whose own ledger is read as one member with member null.",
41
+ "oneOf": [
42
+ {
43
+ "type": "null"
44
+ },
45
+ {
46
+ "type": "object",
47
+ "required": [
48
+ "name"
49
+ ],
50
+ "properties": {
51
+ "name": {
52
+ "type": "string"
53
+ }
54
+ }
55
+ }
56
+ ]
57
+ },
58
+ "lifecycle": {
59
+ "type": "object",
60
+ "description": "The branch read and its tip, null when the checkout has no chant/lifecycle branch.",
61
+ "required": [
62
+ "ref",
63
+ "commit"
64
+ ],
65
+ "properties": {
66
+ "ref": {
67
+ "const": "chant/lifecycle"
68
+ },
69
+ "commit": {
70
+ "type": [
71
+ "string",
72
+ "null"
73
+ ]
74
+ }
75
+ }
76
+ },
77
+ "window": {
78
+ "type": "object",
79
+ "description": "The span deploys are counted in, both ends inclusive. --since sets since; the default is 56 days (eight weeks) before until, which is now.",
80
+ "required": [
81
+ "since",
82
+ "until",
83
+ "days"
84
+ ],
85
+ "properties": {
86
+ "since": {
87
+ "type": "string",
88
+ "description": "ISO 8601."
89
+ },
90
+ "until": {
91
+ "type": "string",
92
+ "description": "ISO 8601."
93
+ },
94
+ "days": {
95
+ "type": "number",
96
+ "description": "The window's length in days, to two decimals."
97
+ }
98
+ }
99
+ },
100
+ "failureWindowDays": {
101
+ "type": "integer",
102
+ "minimum": 1,
103
+ "description": "The declaration's metrics.failureWindowDays, or 7. A deploy fails when, within this many days after it, the commit it deployed is revoked or the environment is rolled back from it."
104
+ },
105
+ "members": {
106
+ "type": "array",
107
+ "description": "Each member read, in declaration order. --member keeps only the members it names.",
108
+ "items": {
109
+ "$ref": "#/$defs/member"
110
+ }
111
+ }
112
+ }
113
+ },
114
+ "member": {
115
+ "type": "object",
116
+ "description": "One member's metrics.",
117
+ "required": [
118
+ "member",
119
+ "environments",
120
+ "reason"
121
+ ],
122
+ "properties": {
123
+ "member": {
124
+ "type": [
125
+ "string",
126
+ "null"
127
+ ],
128
+ "description": "The member's name, or null for a project outside a workspace."
129
+ },
130
+ "environments": {
131
+ "type": "array",
132
+ "description": "Each environment the member has a deploy ledger for, sorted by name. --env keeps only that one.",
133
+ "items": {
134
+ "$ref": "#/$defs/environment"
135
+ }
136
+ },
137
+ "reason": {
138
+ "description": "Null when everything was read. ledger-malformed when some deploy record lines or release files could not be read; the rest are counted. ledger-unreadable when the ledger could not be read, and environments is empty.",
139
+ "oneOf": [
140
+ {
141
+ "type": "null"
142
+ },
143
+ {
144
+ "type": "object",
145
+ "required": [
146
+ "code",
147
+ "message"
148
+ ],
149
+ "properties": {
150
+ "code": {
151
+ "enum": [
152
+ "ledger-unreadable",
153
+ "ledger-malformed"
154
+ ]
155
+ },
156
+ "message": {
157
+ "type": "string"
158
+ }
159
+ }
160
+ }
161
+ ]
162
+ }
163
+ }
164
+ },
165
+ "environment": {
166
+ "type": "object",
167
+ "description": "The four metrics of one member in one environment. A deploy is one deploy record: one component deployed once, by a promote, a run or a rollback. A redeploy is counted apart.",
168
+ "required": [
169
+ "env",
170
+ "deployments",
171
+ "leadTime",
172
+ "changeFailure",
173
+ "restore",
174
+ "failures"
175
+ ],
176
+ "properties": {
177
+ "env": {
178
+ "type": "string"
179
+ },
180
+ "deployments": {
181
+ "type": "object",
182
+ "description": "Deployment frequency.",
183
+ "required": [
184
+ "count",
185
+ "redeploys",
186
+ "runs",
187
+ "fromRelease",
188
+ "perWeek"
189
+ ],
190
+ "properties": {
191
+ "count": {
192
+ "type": "integer",
193
+ "minimum": 0,
194
+ "description": "Deploy records whose timestamp is in the window, leaving out redeploys. Rollbacks count."
195
+ },
196
+ "redeploys": {
197
+ "type": "integer",
198
+ "minimum": 0,
199
+ "description": "Redeploys in the window (records with redeploys set): they put the running release back, so they are counted here and in no other metric."
200
+ },
201
+ "runs": {
202
+ "type": "integer",
203
+ "minimum": 0,
204
+ "description": "Distinct runId values among them: a run that deploys several components counts once."
205
+ },
206
+ "fromRelease": {
207
+ "type": "integer",
208
+ "minimum": 0,
209
+ "description": "Of count, the deploys made from a release: the record names one in releaseDigest, or its release gate admission does."
210
+ },
211
+ "perWeek": {
212
+ "type": "number",
213
+ "minimum": 0,
214
+ "description": "count over the window's length in weeks, to two decimals."
215
+ }
216
+ }
217
+ },
218
+ "leadTime": {
219
+ "type": "object",
220
+ "description": "Lead time from commit to running release. A change is a release, timed at the first deploy record in this environment that names it, or a commit deployed from no release, timed at the first deploy record with that gitSha. Its lead time runs from the commit's committer time to that deploy. Only changes whose first deploy here is in the window count.",
221
+ "required": [
222
+ "changes",
223
+ "fromRelease",
224
+ "fromCommit",
225
+ "unknown",
226
+ "medianSeconds"
227
+ ],
228
+ "properties": {
229
+ "changes": {
230
+ "type": "integer",
231
+ "minimum": 0
232
+ },
233
+ "fromRelease": {
234
+ "type": "integer",
235
+ "minimum": 0,
236
+ "description": "Of changes, releases."
237
+ },
238
+ "fromCommit": {
239
+ "type": "integer",
240
+ "minimum": 0,
241
+ "description": "Of changes, commits deployed from no release."
242
+ },
243
+ "unknown": {
244
+ "type": "integer",
245
+ "minimum": 0,
246
+ "description": "Changes left out because their commit is not in this repository."
247
+ },
248
+ "medianSeconds": {
249
+ "type": [
250
+ "integer",
251
+ "null"
252
+ ],
253
+ "minimum": 0,
254
+ "description": "The median lead time, or null when changes is 0."
255
+ }
256
+ }
257
+ },
258
+ "changeFailure": {
259
+ "type": "object",
260
+ "description": "Change failure rate.",
261
+ "required": [
262
+ "deployments",
263
+ "failed",
264
+ "revoked",
265
+ "rolledBack",
266
+ "rate"
267
+ ],
268
+ "properties": {
269
+ "deployments": {
270
+ "type": "integer",
271
+ "minimum": 0,
272
+ "description": "The same as deployments.count."
273
+ },
274
+ "failed": {
275
+ "type": "integer",
276
+ "minimum": 0,
277
+ "description": "Deploys in the window that failed: the commit they deployed (a release's commit, or the record's gitSha for a deploy made from no release) carries a counted ci/revoked tag made no later than failureWindowDays after the deploy, or the environment was rolled back from them within failureWindowDays. A revoked tag with no time counts whenever it was made."
278
+ },
279
+ "revoked": {
280
+ "type": "integer",
281
+ "minimum": 0,
282
+ "description": "Of failed, those whose commit was revoked."
283
+ },
284
+ "rolledBack": {
285
+ "type": "integer",
286
+ "minimum": 0,
287
+ "description": "Of failed, those rolled back from: the next deploy record of the same component in the environment, leaving out redeploys, is a rollback."
288
+ },
289
+ "rate": {
290
+ "type": [
291
+ "number",
292
+ "null"
293
+ ],
294
+ "minimum": 0,
295
+ "maximum": 1,
296
+ "description": "failed over deployments, to four decimals, or null with no deployments."
297
+ }
298
+ }
299
+ },
300
+ "restore": {
301
+ "type": "object",
302
+ "description": "Time to restore. A failed deploy is restored by the next deploy record of the same component in the environment, leaving out redeploys, whose commit is not revoked.",
303
+ "required": [
304
+ "restored",
305
+ "open",
306
+ "medianSeconds"
307
+ ],
308
+ "properties": {
309
+ "restored": {
310
+ "type": "integer",
311
+ "minimum": 0
312
+ },
313
+ "open": {
314
+ "type": "integer",
315
+ "minimum": 0,
316
+ "description": "Failed deploys with no restore yet."
317
+ },
318
+ "medianSeconds": {
319
+ "type": [
320
+ "integer",
321
+ "null"
322
+ ],
323
+ "minimum": 0,
324
+ "description": "The median time from a failed deploy to its restore, or null when none is restored."
325
+ }
326
+ }
327
+ },
328
+ "failures": {
329
+ "type": "array",
330
+ "description": "Each failed deploy in the window, oldest first.",
331
+ "items": {
332
+ "$ref": "#/$defs/failure-entry"
333
+ }
334
+ }
335
+ }
336
+ },
337
+ "failure-entry": {
338
+ "type": "object",
339
+ "description": "One failed deploy.",
340
+ "required": [
341
+ "component",
342
+ "timestamp",
343
+ "runId",
344
+ "releaseDigest",
345
+ "label",
346
+ "commit",
347
+ "causes",
348
+ "revoked",
349
+ "rolledBackBy",
350
+ "restoredBy",
351
+ "restoreSeconds"
352
+ ],
353
+ "properties": {
354
+ "component": {
355
+ "type": "string"
356
+ },
357
+ "timestamp": {
358
+ "type": "string"
359
+ },
360
+ "runId": {
361
+ "type": "string"
362
+ },
363
+ "releaseDigest": {
364
+ "type": [
365
+ "string",
366
+ "null"
367
+ ],
368
+ "description": "The release it deployed, or null for a deploy made from no release."
369
+ },
370
+ "label": {
371
+ "type": [
372
+ "string",
373
+ "null"
374
+ ],
375
+ "description": "That release's label, or null."
376
+ },
377
+ "commit": {
378
+ "type": "string",
379
+ "description": "The commit it deployed."
380
+ },
381
+ "causes": {
382
+ "type": "array",
383
+ "minItems": 1,
384
+ "items": {
385
+ "enum": [
386
+ "revoked",
387
+ "rolled-back"
388
+ ]
389
+ }
390
+ },
391
+ "revoked": {
392
+ "description": "The counted revoked tag on the commit, when revoked is a cause, else null.",
393
+ "oneOf": [
394
+ {
395
+ "type": "null"
396
+ },
397
+ {
398
+ "type": "object",
399
+ "required": [
400
+ "tag",
401
+ "tagged"
402
+ ],
403
+ "properties": {
404
+ "tag": {
405
+ "type": "string"
406
+ },
407
+ "tagged": {
408
+ "type": [
409
+ "string",
410
+ "null"
411
+ ],
412
+ "description": "When the tag was made, or null for a lightweight tag."
413
+ }
414
+ }
415
+ }
416
+ ]
417
+ },
418
+ "rolledBackBy": {
419
+ "oneOf": [
420
+ {
421
+ "type": "null"
422
+ },
423
+ {
424
+ "type": "object",
425
+ "required": [
426
+ "runId",
427
+ "timestamp"
428
+ ],
429
+ "properties": {
430
+ "runId": {
431
+ "type": "string"
432
+ },
433
+ "timestamp": {
434
+ "type": "string"
435
+ }
436
+ }
437
+ }
438
+ ],
439
+ "description": "The rollback record, named by runId and timestamp, when rolled-back is a cause, else null."
440
+ },
441
+ "restoredBy": {
442
+ "oneOf": [
443
+ {
444
+ "type": "null"
445
+ },
446
+ {
447
+ "type": "object",
448
+ "required": [
449
+ "runId",
450
+ "timestamp"
451
+ ],
452
+ "properties": {
453
+ "runId": {
454
+ "type": "string"
455
+ },
456
+ "timestamp": {
457
+ "type": "string"
458
+ }
459
+ }
460
+ }
461
+ ],
462
+ "description": "The deploy record that restored it, or null while it is not restored."
463
+ },
464
+ "restoreSeconds": {
465
+ "type": [
466
+ "integer",
467
+ "null"
468
+ ],
469
+ "minimum": 0
470
+ }
471
+ }
472
+ },
473
+ "failure": {
474
+ "type": "object",
475
+ "description": "Nothing was read. Exit code 1.",
476
+ "required": [
477
+ "$schema",
478
+ "contract",
479
+ "chant",
480
+ "error"
481
+ ],
482
+ "properties": {
483
+ "$schema": {
484
+ "const": "https://intentius.io/chant/schemas/workspace/delivery-metrics/v1/delivery-metrics.schema.json"
485
+ },
486
+ "contract": {
487
+ "const": 1
488
+ },
489
+ "chant": {
490
+ "type": "string"
491
+ },
492
+ "error": {
493
+ "type": "object",
494
+ "required": [
495
+ "code",
496
+ "message"
497
+ ],
498
+ "properties": {
499
+ "code": {
500
+ "enum": [
501
+ "declaration-ambiguous",
502
+ "declaration-unparseable",
503
+ "declaration-invalid",
504
+ "placement-invalid",
505
+ "reader-too-old",
506
+ "root-chant-required",
507
+ "not-a-git-repository",
508
+ "environment-invalid"
509
+ ]
510
+ },
511
+ "message": {
512
+ "type": "string"
513
+ }
514
+ }
515
+ }
516
+ }
517
+ }
518
+ }
519
+ }