@intentius/chant 0.124.27 → 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.
- package/README.md +1 -1
- package/dist/__golden__/wave-loop/fan-out-gated.json +8 -0
- package/dist/__golden__/wave-loop/fan-out-no-members.json +4 -0
- package/dist/__golden__/wave-loop/fan-out-only.json +6 -0
- package/dist/__golden__/wave-loop/op-by-apply-hold.json +2 -0
- package/dist/__golden__/wave-loop/op-cost-member.json +3 -0
- package/dist/__golden__/wave-loop/op-held-on-before-apply.json +1 -0
- package/dist/__golden__/wave-loop/op-held-on.json +2 -0
- package/dist/__golden__/wave-loop/op-hooks-held.json +2 -0
- package/dist/__golden__/wave-loop/op-hooks-hold-before-apply.json +2 -0
- package/dist/__golden__/wave-loop/op-hooks-refused-at-base.json +3 -0
- package/dist/__golden__/wave-loop/op-hooks-share.json +3 -0
- package/dist/__golden__/wave-loop/op-per-run.json +7 -0
- package/dist/__golden__/wave-loop/op-pr-review.json +7 -0
- package/dist/__golden__/wave-loop/op-sealed.json +3 -0
- package/dist/__golden__/wave-loop/op-spend.json +3 -0
- package/dist/__golden__/wave-loop/op-wave-commands.json +7 -0
- package/dist/__golden__/wave-loop/op-wide-waiting.json +4 -0
- package/dist/build-params.d.ts +34 -1
- package/dist/build-params.d.ts.map +1 -1
- package/dist/build-params.js +31 -1
- package/dist/change-set-graph.d.ts +63 -0
- package/dist/change-set-graph.d.ts.map +1 -0
- package/dist/change-set-graph.js +130 -0
- package/dist/change-set.d.ts +62 -3
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +36 -4
- package/dist/chant-version.d.ts +9 -0
- package/dist/chant-version.d.ts.map +1 -0
- package/dist/chant-version.js +16 -0
- package/dist/cli/build-params-cli.d.ts +7 -1
- package/dist/cli/build-params-cli.d.ts.map +1 -1
- package/dist/cli/build-params-cli.js +17 -8
- package/dist/cli/commands/build.d.ts +8 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +15 -11
- package/dist/cli/commands/check-lexicon-docs.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon-docs.js +30 -2
- package/dist/cli/commands/check-lexicon.d.ts.map +1 -1
- package/dist/cli/commands/check-lexicon.js +13 -2
- package/dist/cli/commands/init-lexicon/templates/docs.d.ts +4 -1
- package/dist/cli/commands/init-lexicon/templates/docs.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon/templates/docs.js +6 -6
- package/dist/cli/commands/init-lexicon.d.ts.map +1 -1
- package/dist/cli/commands/init-lexicon.js +17 -8
- package/dist/cli/handlers/approve.d.ts.map +1 -1
- package/dist/cli/handlers/approve.js +64 -4
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/build.js +43 -4
- package/dist/cli/handlers/change-set.d.ts +10 -0
- package/dist/cli/handlers/change-set.d.ts.map +1 -1
- package/dist/cli/handlers/change-set.js +51 -1
- package/dist/cli/handlers/fan-out.d.ts +10 -1
- package/dist/cli/handlers/fan-out.d.ts.map +1 -1
- package/dist/cli/handlers/fan-out.js +54 -6
- package/dist/cli/handlers/lifecycle-gc.d.ts +19 -0
- package/dist/cli/handlers/lifecycle-gc.d.ts.map +1 -0
- package/dist/cli/handlers/lifecycle-gc.js +143 -0
- package/dist/cli/handlers/pr.d.ts +16 -2
- package/dist/cli/handlers/pr.d.ts.map +1 -1
- package/dist/cli/handlers/pr.js +269 -37
- package/dist/cli/handlers/promote.d.ts +7 -0
- package/dist/cli/handlers/promote.d.ts.map +1 -1
- package/dist/cli/handlers/promote.js +440 -28
- package/dist/cli/handlers/release.d.ts +91 -0
- package/dist/cli/handlers/release.d.ts.map +1 -0
- package/dist/cli/handlers/release.js +589 -0
- package/dist/cli/handlers/run.d.ts +38 -2
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/handlers/run.js +234 -16
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +143 -17
- package/dist/cli/mcp/workspace-tools.js +1 -1
- package/dist/cli/parse-args.d.ts.map +1 -1
- package/dist/cli/parse-args.js +73 -5
- package/dist/cli/registry.d.ts +43 -5
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cli/run-events.d.ts +30 -0
- package/dist/cli/run-events.d.ts.map +1 -0
- package/dist/cli/run-events.js +49 -0
- package/dist/cli/version.d.ts +3 -5
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +3 -13
- package/dist/codegen/docs-in-site.d.ts +71 -0
- package/dist/codegen/docs-in-site.d.ts.map +1 -0
- package/dist/codegen/docs-in-site.js +177 -0
- package/dist/codegen/docs-types.d.ts +14 -1
- package/dist/codegen/docs-types.d.ts.map +1 -1
- package/dist/codegen/docs.d.ts +18 -1
- package/dist/codegen/docs.d.ts.map +1 -1
- package/dist/codegen/docs.js +40 -7
- package/dist/codegen/rehype-base-url.mjs +15 -9
- package/dist/components/auto-release.d.ts +6 -1
- package/dist/components/auto-release.d.ts.map +1 -1
- package/dist/components/auto-release.js +3 -0
- package/dist/components/capability.d.ts +9 -0
- package/dist/components/capability.d.ts.map +1 -1
- package/dist/components/cli-support.d.ts +6 -0
- package/dist/components/cli-support.d.ts.map +1 -1
- package/dist/components/cli-support.js +10 -9
- package/dist/components/driver.d.ts +50 -9
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/driver.js +116 -54
- package/dist/components/fan-out-inputs.d.ts +69 -0
- package/dist/components/fan-out-inputs.d.ts.map +1 -0
- package/dist/components/fan-out-inputs.js +169 -0
- package/dist/components/fan-out-record.d.ts +13 -0
- package/dist/components/fan-out-record.d.ts.map +1 -1
- package/dist/components/fan-out-record.js +16 -0
- package/dist/components/fan-out-run.d.ts +7 -0
- package/dist/components/fan-out-run.d.ts.map +1 -1
- package/dist/components/fan-out-run.js +85 -26
- package/dist/components/fan-out.d.ts +4 -0
- package/dist/components/fan-out.d.ts.map +1 -1
- package/dist/components/pr-pipeline.d.ts +25 -0
- package/dist/components/pr-pipeline.d.ts.map +1 -1
- package/dist/components/pr-pipeline.js +22 -4
- package/dist/components/pr-run.d.ts +11 -0
- package/dist/components/pr-run.d.ts.map +1 -1
- package/dist/components/pr-run.js +20 -1
- package/dist/components/promote-order.d.ts +38 -0
- package/dist/components/promote-order.d.ts.map +1 -0
- package/dist/components/promote-order.js +62 -0
- package/dist/components/promote.d.ts +38 -2
- package/dist/components/promote.d.ts.map +1 -1
- package/dist/components/promote.js +77 -2
- package/dist/components/release-compile.d.ts +142 -0
- package/dist/components/release-compile.d.ts.map +1 -0
- package/dist/components/release-compile.js +382 -0
- package/dist/components/release-gate.d.ts +135 -0
- package/dist/components/release-gate.d.ts.map +1 -0
- package/dist/components/release-gate.js +288 -0
- package/dist/components/release-promote.d.ts +96 -0
- package/dist/components/release-promote.d.ts.map +1 -0
- package/dist/components/release-promote.js +204 -0
- package/dist/components/run-progress.d.ts +7 -0
- package/dist/components/run-progress.d.ts.map +1 -1
- package/dist/components/wave-plan.d.ts +8 -1
- package/dist/components/wave-plan.d.ts.map +1 -1
- package/dist/components/wave-plan.js +11 -3
- package/dist/config.d.ts +45 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/flag-params.d.ts +54 -0
- package/dist/flag-params.d.ts.map +1 -0
- package/dist/flag-params.js +130 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/lifecycle/__fixtures__/publish-fakes.d.ts +120 -0
- package/dist/lifecycle/__fixtures__/publish-fakes.d.ts.map +1 -0
- package/dist/lifecycle/__fixtures__/publish-fakes.js +304 -0
- package/dist/lifecycle/change-set-store.d.ts +68 -0
- package/dist/lifecycle/change-set-store.d.ts.map +1 -0
- package/dist/lifecycle/change-set-store.js +97 -0
- package/dist/lifecycle/commit-sha.d.ts +13 -0
- package/dist/lifecycle/commit-sha.d.ts.map +1 -0
- package/dist/lifecycle/commit-sha.js +21 -0
- package/dist/lifecycle/delivery-metrics.d.ts +139 -0
- package/dist/lifecycle/delivery-metrics.d.ts.map +1 -0
- package/dist/lifecycle/delivery-metrics.js +145 -0
- package/dist/lifecycle/deploy-outcome.d.ts +81 -0
- package/dist/lifecycle/deploy-outcome.d.ts.map +1 -0
- package/dist/lifecycle/deploy-outcome.js +101 -0
- package/dist/lifecycle/gate-change-set.d.ts +78 -0
- package/dist/lifecycle/gate-change-set.d.ts.map +1 -0
- package/dist/lifecycle/gate-change-set.js +138 -0
- package/dist/lifecycle/gate-ledger.d.ts +51 -4
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- package/dist/lifecycle/gate-ledger.js +18 -0
- package/dist/lifecycle/git.d.ts +30 -1
- package/dist/lifecycle/git.d.ts.map +1 -1
- package/dist/lifecycle/git.js +31 -5
- package/dist/lifecycle/index.d.ts +4 -0
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +4 -0
- package/dist/lifecycle/mixed-environment.d.ts +95 -0
- package/dist/lifecycle/mixed-environment.d.ts.map +1 -0
- package/dist/lifecycle/mixed-environment.js +154 -0
- package/dist/lifecycle/publish-attachments.d.ts +79 -0
- package/dist/lifecycle/publish-attachments.d.ts.map +1 -0
- package/dist/lifecycle/publish-attachments.js +179 -0
- package/dist/lifecycle/publish-credentials.d.ts +37 -0
- package/dist/lifecycle/publish-credentials.d.ts.map +1 -0
- package/dist/lifecycle/publish-credentials.js +69 -0
- package/dist/lifecycle/publish-declaration.d.ts +97 -0
- package/dist/lifecycle/publish-declaration.d.ts.map +1 -0
- package/dist/lifecycle/publish-declaration.js +83 -0
- package/dist/lifecycle/publish-forge.d.ts +53 -0
- package/dist/lifecycle/publish-forge.d.ts.map +1 -0
- package/dist/lifecycle/publish-forge.js +298 -0
- package/dist/lifecycle/publish-npm.d.ts +61 -0
- package/dist/lifecycle/publish-npm.d.ts.map +1 -0
- package/dist/lifecycle/publish-npm.js +242 -0
- package/dist/lifecycle/publish-oci.d.ts +64 -0
- package/dist/lifecycle/publish-oci.d.ts.map +1 -0
- package/dist/lifecycle/publish-oci.js +383 -0
- package/dist/lifecycle/publish-record.d.ts +66 -0
- package/dist/lifecycle/publish-record.d.ts.map +1 -0
- package/dist/lifecycle/publish-record.js +84 -0
- package/dist/lifecycle/publish-targets.d.ts +45 -0
- package/dist/lifecycle/publish-targets.d.ts.map +1 -0
- package/dist/lifecycle/publish-targets.js +85 -0
- package/dist/lifecycle/release-cut.d.ts +154 -0
- package/dist/lifecycle/release-cut.d.ts.map +1 -0
- package/dist/lifecycle/release-cut.js +366 -0
- package/dist/lifecycle/release-join.d.ts +95 -0
- package/dist/lifecycle/release-join.d.ts.map +1 -0
- package/dist/lifecycle/release-join.js +139 -0
- package/dist/lifecycle/release-ledger.d.ts +54 -0
- package/dist/lifecycle/release-ledger.d.ts.map +1 -1
- package/dist/lifecycle/release-ledger.js +53 -20
- package/dist/lifecycle/release-publish.d.ts +312 -0
- package/dist/lifecycle/release-publish.d.ts.map +1 -0
- package/dist/lifecycle/release-publish.js +335 -0
- package/dist/lifecycle/release-revocation.d.ts +80 -0
- package/dist/lifecycle/release-revocation.d.ts.map +1 -0
- package/dist/lifecycle/release-revocation.js +123 -0
- package/dist/lifecycle/release-store.d.ts +200 -0
- package/dist/lifecycle/release-store.d.ts.map +1 -0
- package/dist/lifecycle/release-store.js +320 -0
- package/dist/lifecycle/release-verify.d.ts +61 -0
- package/dist/lifecycle/release-verify.d.ts.map +1 -0
- package/dist/lifecycle/release-verify.js +92 -0
- package/dist/lifecycle/release-workstation.d.ts +91 -0
- package/dist/lifecycle/release-workstation.d.ts.map +1 -0
- package/dist/lifecycle/release-workstation.js +180 -0
- package/dist/lifecycle/retention-policy.d.ts +45 -0
- package/dist/lifecycle/retention-policy.d.ts.map +1 -0
- package/dist/lifecycle/retention-policy.js +43 -0
- package/dist/lifecycle/retention.d.ts +185 -0
- package/dist/lifecycle/retention.d.ts.map +1 -0
- package/dist/lifecycle/retention.js +400 -0
- package/dist/lifecycle/run-ledger.d.ts +4 -0
- package/dist/lifecycle/run-ledger.d.ts.map +1 -1
- package/dist/lifecycle/run-ledger.js +2 -0
- package/dist/op/activities/change-coverage.d.ts.map +1 -1
- package/dist/op/activities/change-coverage.js +4 -2
- package/dist/op/activities/source-release.d.ts.map +1 -1
- package/dist/op/activities/source-release.js +7 -3
- package/dist/op/activities/source-rollback.d.ts.map +1 -1
- package/dist/op/activities/source-rollback.js +7 -3
- package/dist/op/gate-name.d.ts +11 -2
- package/dist/op/gate-name.d.ts.map +1 -1
- package/dist/op/gate-name.js +12 -3
- package/dist/op/gate-run-locator.d.ts +22 -0
- package/dist/op/gate-run-locator.d.ts.map +1 -1
- package/dist/op/gate-run-locator.js +31 -0
- package/dist/op/gate.d.ts +27 -3
- package/dist/op/gate.d.ts.map +1 -1
- package/dist/op/gate.js +57 -3
- package/dist/op/local-executor.d.ts +36 -1
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/local-executor.js +158 -52
- package/dist/op/op-waves-run.d.ts.map +1 -1
- package/dist/op/op-waves-run.js +4 -0
- package/dist/op/run-live.d.ts +2 -0
- package/dist/op/run-live.d.ts.map +1 -1
- package/dist/op/run-live.js +1 -1
- package/dist/op/runtime.d.ts +46 -0
- package/dist/op/runtime.d.ts.map +1 -1
- package/dist/op/runtimes/local.d.ts.map +1 -1
- package/dist/op/runtimes/local.js +8 -0
- package/dist/plan-summary.d.ts.map +1 -1
- package/dist/plan-summary.js +8 -2
- package/dist/point-decision.d.ts +2 -0
- package/dist/point-decision.d.ts.map +1 -1
- package/dist/point-decision.js +9 -2
- package/dist/pr-loop.d.ts +7 -0
- package/dist/pr-loop.d.ts.map +1 -1
- package/dist/pr-loop.js +23 -4
- package/dist/pr-report-url.d.ts +82 -0
- package/dist/pr-report-url.d.ts.map +1 -0
- package/dist/pr-report-url.js +174 -0
- package/dist/provenance.d.ts +2 -2
- package/dist/provenance.d.ts.map +1 -1
- package/dist/run-event-store.d.ts +104 -0
- package/dist/run-event-store.d.ts.map +1 -0
- package/dist/run-event-store.js +251 -0
- package/dist/run-event-stream.d.ts +133 -0
- package/dist/run-event-stream.d.ts.map +1 -0
- package/dist/run-event-stream.js +242 -0
- package/dist/run-event.d.ts +285 -0
- package/dist/run-event.d.ts.map +1 -0
- package/dist/run-event.js +209 -0
- package/dist/wave-runtime.mjs +262 -226
- package/dist/workspace/__fixtures__/flag-workspace.d.ts +31 -0
- package/dist/workspace/__fixtures__/flag-workspace.d.ts.map +1 -0
- package/dist/workspace/__fixtures__/flag-workspace.js +114 -0
- package/dist/workspace/__fixtures__/run-event-check.d.ts +19 -0
- package/dist/workspace/__fixtures__/run-event-check.d.ts.map +1 -0
- package/dist/workspace/__fixtures__/run-event-check.js +59 -0
- package/dist/workspace/change-set-show.d.ts +56 -0
- package/dist/workspace/change-set-show.d.ts.map +1 -0
- package/dist/workspace/change-set-show.js +54 -0
- package/dist/workspace/change-set-show.schema.json +102 -0
- package/dist/workspace/change-set.schema.json +32 -1
- package/dist/workspace/changes-cli.d.ts.map +1 -1
- package/dist/workspace/changes-cli.js +10 -1
- package/dist/workspace/changes.d.ts +37 -0
- package/dist/workspace/changes.d.ts.map +1 -1
- package/dist/workspace/changes.js +49 -2
- package/dist/workspace/changes.schema.json +135 -0
- package/dist/workspace/check.schema.json +4 -2
- package/dist/workspace/checks/records.d.ts +9 -1
- package/dist/workspace/checks/records.d.ts.map +1 -1
- package/dist/workspace/checks/records.js +35 -1
- package/dist/workspace/checks.d.ts +1 -0
- package/dist/workspace/checks.d.ts.map +1 -1
- package/dist/workspace/checks.js +2 -1
- package/dist/workspace/ci-green-cli.d.ts +19 -4
- package/dist/workspace/ci-green-cli.d.ts.map +1 -1
- package/dist/workspace/ci-green-cli.js +75 -12
- package/dist/workspace/ci-green-forge.d.ts +20 -3
- package/dist/workspace/ci-green-forge.d.ts.map +1 -1
- package/dist/workspace/ci-green-forge.js +6 -4
- package/dist/workspace/ci-green-workflow.d.ts +11 -0
- package/dist/workspace/ci-green-workflow.d.ts.map +1 -1
- package/dist/workspace/ci-green-workflow.js +6 -0
- package/dist/workspace/ci-green.d.ts +281 -13
- package/dist/workspace/ci-green.d.ts.map +1 -1
- package/dist/workspace/ci-green.js +456 -38
- package/dist/workspace/ci-last-green.schema.json +32 -2
- package/dist/workspace/ci-list.schema.json +525 -0
- package/dist/workspace/commit-links.d.ts +85 -0
- package/dist/workspace/commit-links.d.ts.map +1 -0
- package/dist/workspace/commit-links.js +163 -0
- package/dist/workspace/declaration.d.ts +35 -0
- package/dist/workspace/declaration.d.ts.map +1 -1
- package/dist/workspace/declaration.js +27 -1
- package/dist/workspace/declaration.schema.json +76 -0
- package/dist/workspace/declared-kinds.d.ts +16 -0
- package/dist/workspace/declared-kinds.d.ts.map +1 -1
- package/dist/workspace/declared-kinds.js +25 -0
- package/dist/workspace/delivery-metrics.d.ts +91 -0
- package/dist/workspace/delivery-metrics.d.ts.map +1 -0
- package/dist/workspace/delivery-metrics.js +217 -0
- package/dist/workspace/delivery-metrics.schema.json +519 -0
- package/dist/workspace/flags-read.d.ts +37 -0
- package/dist/workspace/flags-read.d.ts.map +1 -0
- package/dist/workspace/flags-read.js +103 -0
- package/dist/workspace/flags.d.ts +100 -0
- package/dist/workspace/flags.d.ts.map +1 -0
- package/dist/workspace/flags.js +98 -0
- package/dist/workspace/graph-cli.js +1 -1
- package/dist/workspace/identity-gate-rule.d.ts +37 -0
- package/dist/workspace/identity-gate-rule.d.ts.map +1 -1
- package/dist/workspace/identity-gate-rule.js +72 -7
- package/dist/workspace/identity.d.ts +12 -0
- package/dist/workspace/identity.d.ts.map +1 -1
- package/dist/workspace/identity.js +13 -1
- package/dist/workspace/intent-cli.d.ts +11 -2
- package/dist/workspace/intent-cli.d.ts.map +1 -1
- package/dist/workspace/intent-cli.js +54 -5
- package/dist/workspace/intent-trace.d.ts +219 -0
- package/dist/workspace/intent-trace.d.ts.map +1 -0
- package/dist/workspace/intent-trace.js +314 -0
- package/dist/workspace/intent.d.ts +36 -7
- package/dist/workspace/intent.d.ts.map +1 -1
- package/dist/workspace/intent.js +192 -22
- package/dist/workspace/intent.schema.json +702 -6
- package/dist/workspace/ls.d.ts +4 -0
- package/dist/workspace/ls.d.ts.map +1 -1
- package/dist/workspace/ls.js +2 -0
- package/dist/workspace/ls.schema.json +3 -1
- package/dist/workspace/member-pipeline.d.ts +6 -0
- package/dist/workspace/member-pipeline.d.ts.map +1 -1
- package/dist/workspace/member-pipeline.js +6 -0
- package/dist/workspace/overlap.d.ts +146 -0
- package/dist/workspace/overlap.d.ts.map +1 -0
- package/dist/workspace/overlap.js +276 -0
- package/dist/workspace/promotion-order.d.ts +41 -0
- package/dist/workspace/promotion-order.d.ts.map +1 -0
- package/dist/workspace/promotion-order.js +95 -0
- package/dist/workspace/reason-codes.d.ts +4 -0
- package/dist/workspace/reason-codes.d.ts.map +1 -1
- package/dist/workspace/reason-codes.js +7 -1
- package/dist/workspace/records.d.ts +15 -2
- package/dist/workspace/records.d.ts.map +1 -1
- package/dist/workspace/records.js +32 -0
- package/dist/workspace/records.schema.json +21 -2
- package/dist/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
- package/dist/workspace/reference-kinds/flag/flag.schema.json +53 -0
- package/dist/workspace/releases.d.ts +81 -0
- package/dist/workspace/releases.d.ts.map +1 -0
- package/dist/workspace/releases.js +103 -0
- package/dist/workspace/releases.schema.json +513 -0
- package/dist/workspace/run-event.schema.json +295 -0
- package/dist/workspace/status-gates.d.ts +34 -1
- package/dist/workspace/status-gates.d.ts.map +1 -1
- package/dist/workspace/status-gates.js +31 -2
- package/dist/workspace/status-stewards.d.ts +4 -0
- package/dist/workspace/status-stewards.d.ts.map +1 -1
- package/dist/workspace/status-stewards.js +2 -0
- package/dist/workspace/status.d.ts +117 -0
- package/dist/workspace/status.d.ts.map +1 -1
- package/dist/workspace/status.js +218 -4
- package/dist/workspace/status.schema.json +268 -2
- package/dist/workspace/trust/ci-tag-statement.d.ts +102 -0
- package/dist/workspace/trust/ci-tag-statement.d.ts.map +1 -0
- package/dist/workspace/trust/ci-tag-statement.js +123 -0
- package/dist/workspace/trust/op-run-statement.d.ts +91 -0
- package/dist/workspace/trust/op-run-statement.d.ts.map +1 -0
- package/dist/workspace/trust/op-run-statement.js +143 -0
- package/dist/workspace/trust/rotation.d.ts +18 -2
- package/dist/workspace/trust/rotation.d.ts.map +1 -1
- package/dist/workspace/trust/rotation.js +65 -16
- package/dist/workspace/trust/seal.d.ts +11 -0
- package/dist/workspace/trust/seal.d.ts.map +1 -1
- package/dist/workspace/trust/seal.js +9 -0
- package/dist/workspace/trust/ssh-commit.d.ts.map +1 -1
- package/dist/workspace/trust/ssh-commit.js +10 -10
- package/dist/workspace/wip.d.ts.map +1 -1
- package/dist/workspace/wip.js +11 -3
- package/package.json +1 -1
- package/src/__golden__/wave-loop/fan-out-gated.json +8 -0
- package/src/__golden__/wave-loop/fan-out-no-members.json +4 -0
- package/src/__golden__/wave-loop/fan-out-only.json +6 -0
- package/src/__golden__/wave-loop/op-by-apply-hold.json +2 -0
- package/src/__golden__/wave-loop/op-cost-member.json +3 -0
- package/src/__golden__/wave-loop/op-held-on-before-apply.json +1 -0
- package/src/__golden__/wave-loop/op-held-on.json +2 -0
- package/src/__golden__/wave-loop/op-hooks-held.json +2 -0
- package/src/__golden__/wave-loop/op-hooks-hold-before-apply.json +2 -0
- package/src/__golden__/wave-loop/op-hooks-refused-at-base.json +3 -0
- package/src/__golden__/wave-loop/op-hooks-share.json +3 -0
- package/src/__golden__/wave-loop/op-per-run.json +7 -0
- package/src/__golden__/wave-loop/op-pr-review.json +7 -0
- package/src/__golden__/wave-loop/op-sealed.json +3 -0
- package/src/__golden__/wave-loop/op-spend.json +3 -0
- package/src/__golden__/wave-loop/op-wave-commands.json +7 -0
- package/src/__golden__/wave-loop/op-wide-waiting.json +4 -0
- package/src/build-params.test.ts +46 -0
- package/src/build-params.ts +55 -1
- package/src/change-set-graph.test.ts +72 -0
- package/src/change-set-graph.ts +141 -0
- package/src/change-set.ts +87 -6
- package/src/chant-version.ts +16 -0
- package/src/cli/build-params-cli.ts +22 -9
- package/src/cli/commands/build.ts +25 -11
- package/src/cli/commands/check-lexicon-docs.test.ts +51 -0
- package/src/cli/commands/check-lexicon-docs.ts +39 -2
- package/src/cli/commands/check-lexicon.ts +14 -2
- package/src/cli/commands/init-lexicon/templates/docs.ts +7 -6
- package/src/cli/commands/init-lexicon.test.ts +25 -0
- package/src/cli/commands/init-lexicon.ts +18 -8
- package/src/cli/handlers/approve-release.test.ts +84 -0
- package/src/cli/handlers/approve-revoked.test.ts +155 -0
- package/src/cli/handlers/approve.ts +65 -2
- package/src/cli/handlers/build.test.ts +67 -0
- package/src/cli/handlers/build.ts +46 -4
- package/src/cli/handlers/change-set.ts +49 -1
- package/src/cli/handlers/fan-out.test.ts +228 -1
- package/src/cli/handlers/fan-out.ts +53 -6
- package/src/cli/handlers/intent-trace.e2e.test.ts +201 -0
- package/src/cli/handlers/lifecycle-gc.test.ts +126 -0
- package/src/cli/handlers/lifecycle-gc.ts +146 -0
- package/src/cli/handlers/operator.test.ts +37 -0
- package/src/cli/handlers/pr.test.ts +341 -0
- package/src/cli/handlers/pr.ts +292 -47
- package/src/cli/handlers/promote.test.ts +669 -7
- package/src/cli/handlers/promote.ts +464 -29
- package/src/cli/handlers/release-implicit.e2e.test.ts +161 -0
- package/src/cli/handlers/release-join.e2e.test.ts +185 -0
- package/src/cli/handlers/release-publish-targets.e2e.test.ts +295 -0
- package/src/cli/handlers/release-verify.e2e.test.ts +117 -0
- package/src/cli/handlers/release-workstation-ci.e2e.test.ts +135 -0
- package/src/cli/handlers/release.e2e.test.ts +199 -0
- package/src/cli/handlers/release.ts +593 -0
- package/src/cli/handlers/run-auto-release.test.ts +80 -0
- package/src/cli/handlers/run-events-cmd.test.ts +92 -0
- package/src/cli/handlers/run-release.test.ts +55 -0
- package/src/cli/handlers/run.test.ts +30 -0
- package/src/cli/handlers/run.ts +243 -18
- package/src/cli/main.test.ts +8 -0
- package/src/cli/main.ts +143 -17
- package/src/cli/mcp/never-over-mcp.test.ts +2 -0
- package/src/cli/mcp/workspace-tools.ts +1 -1
- package/src/cli/parse-args.ts +56 -5
- package/src/cli/registry.ts +43 -5
- package/src/cli/run-events.ts +57 -0
- package/src/cli/version.ts +3 -13
- package/src/codegen/docs-in-site.test.ts +166 -0
- package/src/codegen/docs-in-site.ts +182 -0
- package/src/codegen/docs-site/AgentPrompt.astro +26 -1
- package/src/codegen/docs-types.ts +14 -1
- package/src/codegen/docs.ts +60 -7
- package/src/codegen/rehype-base-url.d.mts +3 -1
- package/src/codegen/rehype-base-url.mjs +15 -9
- package/src/codegen/rehype-base-url.test.ts +34 -0
- package/src/components/auto-release.test.ts +30 -0
- package/src/components/auto-release.ts +9 -1
- package/src/components/capability.ts +9 -0
- package/src/components/cli-support.test.ts +82 -0
- package/src/components/cli-support.ts +16 -9
- package/src/components/driver.test.ts +24 -0
- package/src/components/driver.ts +165 -56
- package/src/components/fan-out-inputs.test.ts +85 -0
- package/src/components/fan-out-inputs.ts +192 -0
- package/src/components/fan-out-record.test.ts +10 -0
- package/src/components/fan-out-record.ts +19 -0
- package/src/components/fan-out-run.ts +104 -35
- package/src/components/fan-out.ts +4 -0
- package/src/components/pr-pipeline.ts +35 -4
- package/src/components/pr-run.ts +30 -1
- package/src/components/promote-order.test.ts +90 -0
- package/src/components/promote-order.ts +75 -0
- package/src/components/promote.test.ts +10 -1
- package/src/components/promote.ts +94 -3
- package/src/components/release-compile.test.ts +147 -0
- package/src/components/release-compile.ts +459 -0
- package/src/components/release-gate.test.ts +215 -0
- package/src/components/release-gate.ts +355 -0
- package/src/components/release-promote.test.ts +159 -0
- package/src/components/release-promote.ts +232 -0
- package/src/components/run-progress.ts +7 -0
- package/src/components/wave-plan.ts +16 -3
- package/src/config.ts +15 -1
- package/src/flag-params.test.ts +144 -0
- package/src/flag-params.ts +134 -0
- package/src/index.ts +2 -0
- package/src/lifecycle/__fixtures__/publish-fakes.ts +351 -0
- package/src/lifecycle/change-set-store.test.ts +217 -0
- package/src/lifecycle/change-set-store.ts +113 -0
- package/src/lifecycle/commit-sha.ts +23 -0
- package/src/lifecycle/delivery-metrics.ts +263 -0
- package/src/lifecycle/deploy-outcome.ts +147 -0
- package/src/lifecycle/gate-change-set.e2e.test.ts +122 -0
- package/src/lifecycle/gate-change-set.ts +164 -0
- package/src/lifecycle/gate-ledger.test.ts +33 -0
- package/src/lifecycle/gate-ledger.ts +68 -3
- package/src/lifecycle/git.ts +61 -8
- package/src/lifecycle/index.ts +4 -0
- package/src/lifecycle/mixed-environment.test.ts +97 -0
- package/src/lifecycle/mixed-environment.ts +204 -0
- package/src/lifecycle/publish-attachments.ts +196 -0
- package/src/lifecycle/publish-credentials.ts +84 -0
- package/src/lifecycle/publish-declaration.ts +95 -0
- package/src/lifecycle/publish-forge.ts +325 -0
- package/src/lifecycle/publish-npm.ts +259 -0
- package/src/lifecycle/publish-oci.ts +396 -0
- package/src/lifecycle/publish-record.ts +113 -0
- package/src/lifecycle/publish-resume.test.ts +168 -0
- package/src/lifecycle/publish-targets.test.ts +494 -0
- package/src/lifecycle/publish-targets.ts +100 -0
- package/src/lifecycle/release-cut-signed.test.ts +180 -0
- package/src/lifecycle/release-cut.test.ts +483 -0
- package/src/lifecycle/release-cut.ts +503 -0
- package/src/lifecycle/release-flag.test.ts +112 -0
- package/src/lifecycle/release-join.test.ts +68 -0
- package/src/lifecycle/release-join.ts +182 -0
- package/src/lifecycle/release-ledger.test.ts +14 -0
- package/src/lifecycle/release-ledger.ts +85 -17
- package/src/lifecycle/release-publish.test.ts +225 -0
- package/src/lifecycle/release-publish.ts +568 -0
- package/src/lifecycle/release-revocation.ts +147 -0
- package/src/lifecycle/release-store.ts +434 -0
- package/src/lifecycle/release-verify.test.ts +110 -0
- package/src/lifecycle/release-verify.ts +120 -0
- package/src/lifecycle/release-workstation.test.ts +204 -0
- package/src/lifecycle/release-workstation.ts +216 -0
- package/src/lifecycle/retention-growth.e2e.test.ts +279 -0
- package/src/lifecycle/retention-policy.ts +63 -0
- package/src/lifecycle/retention.test.ts +363 -0
- package/src/lifecycle/retention.ts +508 -0
- package/src/lifecycle/run-ledger.test.ts +10 -0
- package/src/lifecycle/run-ledger.ts +6 -0
- package/src/op/activities/change-coverage.ts +4 -1
- package/src/op/activities/source-release.ts +8 -3
- package/src/op/activities/source-rollback.ts +8 -4
- package/src/op/commit-run-gate-deploy-join.test.ts +117 -0
- package/src/op/gate-name.ts +13 -3
- package/src/op/gate-release.test.ts +126 -0
- package/src/op/gate-run-locator.test.ts +110 -0
- package/src/op/gate-run-locator.ts +35 -0
- package/src/op/gate.ts +88 -6
- package/src/op/local-executor.ts +207 -52
- package/src/op/op-waves-run.ts +4 -0
- package/src/op/run-events.test.ts +166 -0
- package/src/op/run-live.ts +1 -1
- package/src/op/runtime.ts +39 -0
- package/src/op/runtimes/local.test.ts +16 -0
- package/src/op/runtimes/local.ts +9 -0
- package/src/plan-summary.test.ts +20 -0
- package/src/plan-summary.ts +8 -1
- package/src/point-decision.ts +12 -2
- package/src/pr-loop.ts +25 -4
- package/src/pr-report-url.test.ts +131 -0
- package/src/pr-report-url.ts +209 -0
- package/src/provenance.ts +2 -2
- package/src/run-event-store.test.ts +144 -0
- package/src/run-event-store.ts +273 -0
- package/src/run-event-stream.test.ts +175 -0
- package/src/run-event-stream.ts +309 -0
- package/src/run-event.test.ts +277 -0
- package/src/run-event.ts +471 -0
- package/src/wave-loop-golden.test.ts +9 -0
- package/src/workspace/__fixtures__/flag-workspace.ts +132 -0
- package/src/workspace/__fixtures__/older-records/change-set-984534ea9.json +100 -0
- package/src/workspace/__fixtures__/older-records/older-records.json +326 -0
- package/src/workspace/__fixtures__/run-event-check.ts +58 -0
- package/src/workspace/ancestry-index.test.ts +93 -0
- package/src/workspace/change-set-show.schema.json +102 -0
- package/src/workspace/change-set-show.ts +72 -0
- package/src/workspace/change-set.schema.json +32 -1
- package/src/workspace/changes-cli.ts +10 -1
- package/src/workspace/changes.schema.json +135 -0
- package/src/workspace/changes.test.ts +1 -1
- package/src/workspace/changes.ts +84 -2
- package/src/workspace/check.schema.json +4 -2
- package/src/workspace/checks/records.ts +35 -1
- package/src/workspace/checks.ts +2 -1
- package/src/workspace/ci-green-cli.ts +75 -13
- package/src/workspace/ci-green-forge.ts +24 -4
- package/src/workspace/ci-green-runs.test.ts +242 -0
- package/src/workspace/ci-green-signed.test.ts +302 -0
- package/src/workspace/ci-green-workflow.test.ts +16 -0
- package/src/workspace/ci-green-workflow.ts +12 -0
- package/src/workspace/ci-green.test.ts +131 -2
- package/src/workspace/ci-green.ts +635 -42
- package/src/workspace/ci-last-green.schema.json +32 -2
- package/src/workspace/ci-list.schema.json +525 -0
- package/src/workspace/commit-links.test.ts +279 -0
- package/src/workspace/commit-links.ts +183 -0
- package/src/workspace/declaration.schema.json +76 -0
- package/src/workspace/declaration.test.ts +28 -0
- package/src/workspace/declaration.ts +60 -2
- package/src/workspace/declared-kinds.ts +40 -1
- package/src/workspace/delivery-metrics.schema.json +519 -0
- package/src/workspace/delivery-metrics.test.ts +236 -0
- package/src/workspace/delivery-metrics.ts +286 -0
- package/src/workspace/flags-read.ts +121 -0
- package/src/workspace/flags.test.ts +141 -0
- package/src/workspace/flags.ts +157 -0
- package/src/workspace/graph-cli.ts +1 -1
- package/src/workspace/identity-gate-rule.ts +91 -7
- package/src/workspace/identity.ts +14 -1
- package/src/workspace/intent-cli.ts +46 -5
- package/src/workspace/intent-trace.test.ts +173 -0
- package/src/workspace/intent-trace.ts +484 -0
- package/src/workspace/intent.schema.json +702 -6
- package/src/workspace/intent.ts +196 -26
- package/src/workspace/ls.schema.json +3 -1
- package/src/workspace/ls.ts +6 -0
- package/src/workspace/member-pipeline.test.ts +17 -0
- package/src/workspace/member-pipeline.ts +9 -0
- package/src/workspace/older-records.test.ts +412 -0
- package/src/workspace/overlap.test.ts +165 -0
- package/src/workspace/overlap.ts +340 -0
- package/src/workspace/promotion-order.ts +97 -0
- package/src/workspace/read-contract.e2e.test.ts +5 -1
- package/src/workspace/reason-codes.test.ts +7 -1
- package/src/workspace/reason-codes.ts +7 -1
- package/src/workspace/record-assets.test.ts +2 -1
- package/src/workspace/records-contract.e2e.test.ts +2 -1
- package/src/workspace/records.schema.json +21 -2
- package/src/workspace/records.ts +36 -2
- package/src/workspace/reference-kinds/flag/flag.kind.mjs +32 -0
- package/src/workspace/reference-kinds/flag/flag.schema.json +53 -0
- package/src/workspace/releases.schema.json +513 -0
- package/src/workspace/releases.test.ts +108 -0
- package/src/workspace/releases.ts +133 -0
- package/src/workspace/run-event.schema.json +295 -0
- package/src/workspace/status-contract.test.ts +81 -1
- package/src/workspace/status-gates.ts +64 -1
- package/src/workspace/status-mixed.test.ts +152 -0
- package/src/workspace/status-revoked.test.ts +153 -0
- package/src/workspace/status-stewards.ts +6 -0
- package/src/workspace/status.schema.json +268 -2
- package/src/workspace/status.ts +334 -4
- package/src/workspace/trust/ci-tag-statement.ts +151 -0
- package/src/workspace/trust/op-run-statement.ts +148 -0
- package/src/workspace/trust/rotation.ts +61 -14
- package/src/workspace/trust/seal.ts +10 -0
- package/src/workspace/trust/ssh-commit.ts +10 -9
- package/src/workspace/wip.ts +11 -2
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/astro.config.mjs +0 -14
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/package.json +0 -16
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/src/content/docs/index.mdx +0 -8
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/src/content.config.ts +0 -15
- package/src/cli/commands/__fixtures__/init-lexicon-output/docs/tsconfig.json +0 -10
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* runs. The level-0 goldens (#2526) fail if a level-0 command loads it.
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
import { RETENTION_KINDS, type RetentionOverride } from "../lifecycle/retention-policy";
|
|
19
20
|
import schema from "./declaration.schema.json" with { type: "json" };
|
|
20
21
|
import { expandGlob } from "./glob";
|
|
21
22
|
import { EXAMPLES_KIND, holdsChantProject } from "./kinds";
|
|
@@ -205,9 +206,29 @@ export interface CiGreen {
|
|
|
205
206
|
phases: CiPhase[];
|
|
206
207
|
/** The phases a commit must pass, by name, in file order. */
|
|
207
208
|
require: string[];
|
|
209
|
+
/**
|
|
210
|
+
* The full sha of the first commit on the branch whose ci tags need a
|
|
211
|
+
* statement signed by a runner key (#4031). A tag on a strict
|
|
212
|
+
* first-parent ancestor of it counts unsigned, and any other tag counts
|
|
213
|
+
* only with one. Readers refuse a sha that names no commit with
|
|
214
|
+
* `declaration-invalid`. Null when the declaration sets none, and then no
|
|
215
|
+
* tag needs a statement.
|
|
216
|
+
*/
|
|
217
|
+
signedSince: string | null;
|
|
218
|
+
/**
|
|
219
|
+
* Where the tick reads each phase's results (#4044): `checks` (the
|
|
220
|
+
* default), the forge's check runs, whose names the phases' patterns
|
|
221
|
+
* match; or `runs`, chant's own Op runs on `chant/lifecycle`, whose Op
|
|
222
|
+
* names the patterns match, each counted only with a statement signed by
|
|
223
|
+
* a runner key.
|
|
224
|
+
*/
|
|
225
|
+
source: CiSource;
|
|
208
226
|
pointer: string;
|
|
209
227
|
}
|
|
210
228
|
|
|
229
|
+
/** Where `ci tick` reads phase results (#4044): forge check runs, or chant Op runs. */
|
|
230
|
+
export type CiSource = "checks" | "runs";
|
|
231
|
+
|
|
211
232
|
/** The declaration's `ci` block (#3573). */
|
|
212
233
|
export interface CiDeclaration {
|
|
213
234
|
green: CiGreen | null;
|
|
@@ -581,6 +602,19 @@ export interface Declaration {
|
|
|
581
602
|
identity: IdentityPolicy | null;
|
|
582
603
|
/** What the workspace's CI decides about its commits (#3573), or null when the declaration has no `ci` block. */
|
|
583
604
|
ci: CiDeclaration | null;
|
|
605
|
+
/**
|
|
606
|
+
* The `retention` block as written (#4036): the kinds and fields it sets,
|
|
607
|
+
* which `resolveRetention` (../lifecycle/retention-policy.ts) lays over the
|
|
608
|
+
* defaults. Null when the declaration has no `retention` block.
|
|
609
|
+
*/
|
|
610
|
+
retention: RetentionOverride | null;
|
|
611
|
+
/**
|
|
612
|
+
* The `metrics` block (#4039): `failureWindowDays`, the days after a deploy
|
|
613
|
+
* in which a revocation or a rollback counts it as failed, when set. Null
|
|
614
|
+
* when the declaration has no `metrics` block; `chant workspace metrics`
|
|
615
|
+
* then uses 7.
|
|
616
|
+
*/
|
|
617
|
+
metrics: { failureWindowDays?: number } | null;
|
|
584
618
|
/** The file, relative to the workspace root's tree (`chant.workspace.json` or `.jsonc`). */
|
|
585
619
|
file: string;
|
|
586
620
|
}
|
|
@@ -957,6 +991,8 @@ export function parseDeclaration(text: string, file: string, reader: string = re
|
|
|
957
991
|
agents,
|
|
958
992
|
identity: identityOf(obj.identity),
|
|
959
993
|
ci,
|
|
994
|
+
retention: retentionOf(obj.retention),
|
|
995
|
+
metrics: metricsOf(obj.metrics),
|
|
960
996
|
file,
|
|
961
997
|
};
|
|
962
998
|
written.set(declaration, raw);
|
|
@@ -1027,9 +1063,31 @@ function identityOf(raw: unknown): IdentityPolicy | null {
|
|
|
1027
1063
|
* The `ci` block, already validated by the schema, with its defaults and the
|
|
1028
1064
|
* rule the schema can't say (#3573): every phase `require` names is declared.
|
|
1029
1065
|
*/
|
|
1066
|
+
/** The `metrics` block, already validated by the schema, without its `x-` keys (#4039). */
|
|
1067
|
+
function metricsOf(raw: unknown): { failureWindowDays?: number } | null {
|
|
1068
|
+
if (!raw || typeof raw !== "object") return null;
|
|
1069
|
+
const days = (raw as { failureWindowDays?: unknown }).failureWindowDays;
|
|
1070
|
+
return typeof days === "number" ? { failureWindowDays: days } : {};
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
/** The `retention` block, already validated by the schema, without its `x-` keys (#4036). */
|
|
1074
|
+
function retentionOf(raw: unknown): RetentionOverride | null {
|
|
1075
|
+
if (!raw || typeof raw !== "object") return null;
|
|
1076
|
+
const out: RetentionOverride = {};
|
|
1077
|
+
for (const kind of RETENTION_KINDS) {
|
|
1078
|
+
const k = (raw as Record<string, Record<string, unknown> | undefined>)[kind];
|
|
1079
|
+
if (!k) continue;
|
|
1080
|
+
out[kind] = {
|
|
1081
|
+
...(typeof k.days === "number" ? { days: k.days } : {}),
|
|
1082
|
+
...(typeof k.keep === "number" ? { keep: k.keep } : {}),
|
|
1083
|
+
};
|
|
1084
|
+
}
|
|
1085
|
+
return out;
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1030
1088
|
function ciOf(raw: unknown, at: (pointer: string, key?: boolean) => ErrorLocation): CiDeclaration | null {
|
|
1031
1089
|
if (raw === undefined) return null;
|
|
1032
|
-
const block = raw as { green?: { branch: string; window?: string; phases: Record<string, string[] | { runs: string[]; skipped?: CiSkipped }>; require: string[] } };
|
|
1090
|
+
const block = raw as { green?: { branch: string; window?: string; phases: Record<string, string[] | { runs: string[]; skipped?: CiSkipped }>; require: string[]; signedSince?: string; source?: CiSource } };
|
|
1033
1091
|
if (block.green === undefined) return { green: null };
|
|
1034
1092
|
const g = block.green;
|
|
1035
1093
|
const phases: CiPhase[] = Object.entries(g.phases).map(([name, p]) => ({
|
|
@@ -1046,7 +1104,7 @@ function ciOf(raw: unknown, at: (pointer: string, key?: boolean) => ErrorLocatio
|
|
|
1046
1104
|
at(`/ci/green/require/${i}`),
|
|
1047
1105
|
);
|
|
1048
1106
|
}
|
|
1049
|
-
return { green: { branch: g.branch, window: g.window ?? DEFAULT_CI_WINDOW, phases, require: [...g.require], pointer: "/ci/green" } };
|
|
1107
|
+
return { green: { branch: g.branch, window: g.window ?? DEFAULT_CI_WINDOW, phases, require: [...g.require], signedSince: g.signedSince ?? null, source: g.source ?? "checks", pointer: "/ci/green" } };
|
|
1050
1108
|
}
|
|
1051
1109
|
|
|
1052
1110
|
function agentsOf(raw: unknown, members: Member[], at: (pointer: string, key?: boolean) => ErrorLocation): AgentDeclaration[] {
|
|
@@ -43,6 +43,22 @@ export interface DeclaredKind {
|
|
|
43
43
|
* and when its records can't be read (`records` reports why).
|
|
44
44
|
*/
|
|
45
45
|
acceptance?: DeclaredAcceptance[];
|
|
46
|
+
/**
|
|
47
|
+
* For a flag kind (#4024), read with `flags: true`: each current flag
|
|
48
|
+
* record, with its `flag-stale` warning when it is due for removal. Absent
|
|
49
|
+
* for any other kind, when the kind wasn't loaded, and when its records
|
|
50
|
+
* can't be read (`records` reports why).
|
|
51
|
+
*/
|
|
52
|
+
flags?: DeclaredFlag[];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** One flag record, as `check` reads it for WSP118 (#4024). */
|
|
56
|
+
export interface DeclaredFlag {
|
|
57
|
+
flag: string;
|
|
58
|
+
/** The record file on disk, absolute. */
|
|
59
|
+
file: string;
|
|
60
|
+
/** The record's `flag-stale` warning, when the flag is due for removal; null otherwise. */
|
|
61
|
+
stale: string | null;
|
|
46
62
|
}
|
|
47
63
|
|
|
48
64
|
/** One work record's acceptance criteria, counted, as `ls`, `status` and `check` read them (#2772). */
|
|
@@ -72,7 +88,7 @@ export async function loadDeclaredKinds(
|
|
|
72
88
|
declaration: Declaration,
|
|
73
89
|
tree: WorkspaceTree,
|
|
74
90
|
rootOnDisk: string,
|
|
75
|
-
options: { load?: boolean; acceptance?: boolean; at?: string } = {},
|
|
91
|
+
options: { load?: boolean; acceptance?: boolean; flags?: boolean; at?: string } = {},
|
|
76
92
|
): Promise<DeclaredKind[]> {
|
|
77
93
|
const declared = declaredRecordKinds(declaration);
|
|
78
94
|
if (declared.length === 0) return [];
|
|
@@ -96,6 +112,10 @@ export async function loadDeclaredKinds(
|
|
|
96
112
|
const counted = await countAcceptance(file, rootOnDisk, options.at);
|
|
97
113
|
if (counted) entry.acceptance = counted;
|
|
98
114
|
}
|
|
115
|
+
if (loaded.kind.flag && options.flags) {
|
|
116
|
+
const flags = await readFlags(file, rootOnDisk, options.at);
|
|
117
|
+
if (flags) entry.flags = flags;
|
|
118
|
+
}
|
|
99
119
|
out.push(entry);
|
|
100
120
|
} catch (err) {
|
|
101
121
|
if (!(err instanceof records.RecordReadError)) throw err;
|
|
@@ -128,6 +148,25 @@ async function countAcceptance(file: string, rootOnDisk: string, at: string | un
|
|
|
128
148
|
}
|
|
129
149
|
}
|
|
130
150
|
|
|
151
|
+
/** A flag kind's current records with their stale warnings (#4024), or undefined when they can't be read. */
|
|
152
|
+
async function readFlags(file: string, rootOnDisk: string, at: string | undefined): Promise<DeclaredFlag[] | undefined> {
|
|
153
|
+
const { readRecordsFor } = await import("./records-cli");
|
|
154
|
+
const { RecordReadError } = await import("./records");
|
|
155
|
+
try {
|
|
156
|
+
const read = await readRecordsFor({ kind: file, cwd: rootOnDisk, current: true, ...(at !== undefined ? { at } : {}) });
|
|
157
|
+
return read.result.records
|
|
158
|
+
.filter((r): r is typeof r & { id: string } => r.id !== null)
|
|
159
|
+
.map((r) => ({
|
|
160
|
+
flag: r.id,
|
|
161
|
+
file: join(read.root, ...r.path.split("/")),
|
|
162
|
+
stale: r.warnings.find((w) => w.code === "flag-stale")?.message ?? null,
|
|
163
|
+
}));
|
|
164
|
+
} catch (err) {
|
|
165
|
+
if (err instanceof RecordReadError) return undefined;
|
|
166
|
+
throw err;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
131
170
|
/** An answer kind's points file (ws-058), read from `tree` and validated as `points ask` reads it. */
|
|
132
171
|
async function checkPoints(abs: string, rootOnDisk: string, tree: WorkspaceTree): Promise<NonNullable<DeclaredKind["points"]>> {
|
|
133
172
|
const file = relative(rootOnDisk, abs).split(sep).join("/");
|
|
@@ -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
|
+
}
|