@intentius/chant 0.124.28 → 0.124.30
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/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 +8 -1
- package/dist/change-set-graph.d.ts.map +1 -1
- package/dist/change-set-graph.js +4 -2
- package/dist/change-set.d.ts +10 -0
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +4 -3
- 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.map +1 -1
- package/dist/cli/commands/build.js +6 -3
- package/dist/cli/handlers/approve.d.ts.map +1 -1
- package/dist/cli/handlers/approve.js +45 -0
- package/dist/cli/handlers/build.d.ts.map +1 -1
- package/dist/cli/handlers/build.js +18 -4
- package/dist/cli/handlers/fan-out.d.ts +9 -0
- package/dist/cli/handlers/fan-out.d.ts.map +1 -1
- package/dist/cli/handlers/fan-out.js +67 -8
- 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 +11 -3
- package/dist/cli/handlers/pr.d.ts.map +1 -1
- package/dist/cli/handlers/pr.js +134 -26
- 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 +210 -33
- package/dist/cli/handlers/release.d.ts +62 -5
- package/dist/cli/handlers/release.d.ts.map +1 -1
- package/dist/cli/handlers/release.js +414 -28
- package/dist/cli/handlers/run.d.ts +11 -1
- package/dist/cli/handlers/run.d.ts.map +1 -1
- package/dist/cli/handlers/run.js +67 -6
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +91 -10
- package/dist/cli/parse-args.d.ts.map +1 -1
- package/dist/cli/parse-args.js +73 -2
- package/dist/cli/registry.d.ts +32 -4
- package/dist/cli/registry.d.ts.map +1 -1
- package/dist/cli/run-events.d.ts +3 -2
- package/dist/cli/run-events.d.ts.map +1 -1
- package/dist/cli/run-events.js +5 -3
- package/dist/components/auto-release.d.ts +2 -0
- package/dist/components/auto-release.d.ts.map +1 -1
- package/dist/components/auto-release.js +1 -0
- package/dist/components/capability.d.ts +9 -0
- package/dist/components/capability.d.ts.map +1 -1
- package/dist/components/driver.d.ts +8 -0
- package/dist/components/driver.d.ts.map +1 -1
- package/dist/components/driver.js +35 -0
- 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.map +1 -1
- package/dist/components/fan-out-run.js +50 -0
- 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 +49 -0
- package/dist/components/pr-pipeline.d.ts.map +1 -1
- package/dist/components/pr-pipeline.js +38 -4
- package/dist/components/pr-run.d.ts +20 -2
- package/dist/components/pr-run.d.ts.map +1 -1
- package/dist/components/pr-run.js +26 -13
- package/dist/components/promote.d.ts +23 -0
- package/dist/components/promote.d.ts.map +1 -1
- package/dist/components/promote.js +60 -2
- package/dist/components/release-compile.d.ts +9 -0
- package/dist/components/release-compile.d.ts.map +1 -1
- package/dist/components/release-compile.js +9 -3
- package/dist/components/release-gate.d.ts +11 -1
- package/dist/components/release-gate.d.ts.map +1 -1
- package/dist/components/release-gate.js +10 -4
- package/dist/components/wave-plan.d.ts +16 -0
- package/dist/components/wave-plan.d.ts.map +1 -1
- package/dist/components/wave-plan.js +36 -2
- package/dist/config.d.ts +38 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -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/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 +2 -1
- package/dist/lifecycle/change-set-store.d.ts.map +1 -1
- package/dist/lifecycle/change-set-store.js +2 -1
- 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 +10 -1
- package/dist/lifecycle/gate-change-set.d.ts.map +1 -1
- package/dist/lifecycle/gate-change-set.js +35 -3
- package/dist/lifecycle/gate-ledger.d.ts +2 -3
- package/dist/lifecycle/gate-ledger.d.ts.map +1 -1
- 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 +48 -1
- package/dist/lifecycle/release-cut.d.ts.map +1 -1
- package/dist/lifecycle/release-cut.js +116 -23
- 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 +8 -3
- package/dist/lifecycle/release-ledger.d.ts.map +1 -1
- package/dist/lifecycle/release-ledger.js +2 -0
- 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 +12 -2
- package/dist/lifecycle/release-store.d.ts.map +1 -1
- package/dist/lifecycle/release-store.js +4 -2
- 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 +1 -1
- package/dist/lifecycle/run-ledger.d.ts.map +1 -1
- package/dist/lifecycle/run-ledger.js +9 -0
- package/dist/op/activities/activity-contracts.d.ts +1 -0
- package/dist/op/activities/activity-contracts.d.ts.map +1 -1
- package/dist/op/activities/activity-contracts.js +1 -0
- package/dist/op/activities/shell.d.ts +6 -0
- package/dist/op/activities/shell.d.ts.map +1 -1
- package/dist/op/activities/shell.js +1 -1
- package/dist/op/local-executor.d.ts +23 -1
- package/dist/op/local-executor.d.ts.map +1 -1
- package/dist/op/local-executor.js +9 -3
- package/dist/op/runtime.d.ts +27 -0
- package/dist/op/runtime.d.ts.map +1 -1
- package/dist/op/runtime.js +20 -0
- package/dist/plan-summary.d.ts.map +1 -1
- package/dist/plan-summary.js +8 -2
- package/dist/pr-forge.d.ts +23 -0
- package/dist/pr-forge.d.ts.map +1 -1
- package/dist/pr-forge.js +44 -0
- package/dist/pr-loop.d.ts +17 -0
- package/dist/pr-loop.d.ts.map +1 -1
- package/dist/pr-loop.js +30 -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 +29 -2
- package/dist/run-event-store.d.ts.map +1 -1
- package/dist/run-event-store.js +50 -3
- package/dist/run-event-stream.d.ts +4 -3
- package/dist/run-event-stream.d.ts.map +1 -1
- package/dist/run-event-stream.js +7 -3
- package/dist/run-event.d.ts +34 -1
- package/dist/run-event.d.ts.map +1 -1
- package/dist/run-event.js +4 -0
- package/dist/wave-runtime.mjs +260 -229
- 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/change-set.schema.json +5 -1
- 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-forge.d.ts +2 -0
- package/dist/workspace/ci-green-forge.d.ts.map +1 -1
- package/dist/workspace/ci-green.d.ts +10 -0
- package/dist/workspace/ci-green.d.ts.map +1 -1
- package/dist/workspace/ci-green.js +14 -5
- package/dist/workspace/ci-run.d.ts +222 -0
- package/dist/workspace/ci-run.d.ts.map +1 -0
- package/dist/workspace/ci-run.js +464 -0
- package/dist/workspace/ci-serve.d.ts +214 -0
- package/dist/workspace/ci-serve.d.ts.map +1 -0
- package/dist/workspace/ci-serve.js +412 -0
- package/dist/workspace/declaration.d.ts +16 -0
- package/dist/workspace/declaration.d.ts.map +1 -1
- package/dist/workspace/declaration.js +26 -0
- package/dist/workspace/declaration.schema.json +64 -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/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 +30 -6
- package/dist/workspace/intent.d.ts.map +1 -1
- package/dist/workspace/intent.js +141 -21
- package/dist/workspace/intent.schema.json +702 -6
- 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/pr-report.schema.json +5 -0
- package/dist/workspace/reason-codes.d.ts +2 -0
- package/dist/workspace/reason-codes.d.ts.map +1 -1
- package/dist/workspace/reason-codes.js +3 -0
- 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 +9 -0
- package/dist/workspace/releases.d.ts.map +1 -1
- package/dist/workspace/releases.js +9 -0
- package/dist/workspace/releases.schema.json +123 -1
- package/dist/workspace/run-event.schema.json +24 -6
- package/dist/workspace/status-gates.d.ts +8 -0
- package/dist/workspace/status-gates.d.ts.map +1 -1
- package/dist/workspace/status-stewards.d.ts +2 -0
- package/dist/workspace/status-stewards.d.ts.map +1 -1
- package/dist/workspace/status-stewards.js +1 -0
- package/dist/workspace/status.d.ts +78 -0
- package/dist/workspace/status.d.ts.map +1 -1
- package/dist/workspace/status.js +170 -3
- package/dist/workspace/status.schema.json +210 -2
- package/dist/workspace/wip.d.ts.map +1 -1
- package/dist/workspace/wip.js +11 -3
- package/package.json +1 -1
- package/src/build-params.test.ts +46 -0
- package/src/build-params.ts +55 -1
- package/src/change-set-graph.ts +10 -2
- package/src/change-set.ts +14 -3
- package/src/cli/build-params-cli.ts +22 -9
- package/src/cli/commands/build.ts +6 -3
- package/src/cli/handlers/approve-release.test.ts +5 -1
- package/src/cli/handlers/approve-revoked.test.ts +155 -0
- package/src/cli/handlers/approve.ts +47 -0
- package/src/cli/handlers/build.test.ts +30 -0
- package/src/cli/handlers/build.ts +20 -4
- package/src/cli/handlers/fan-out.test.ts +262 -1
- package/src/cli/handlers/fan-out.ts +72 -8
- 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/pr.test.ts +148 -1
- package/src/cli/handlers/pr.ts +144 -28
- package/src/cli/handlers/promote.test.ts +280 -2
- package/src/cli/handlers/promote.ts +210 -34
- package/src/cli/handlers/release-implicit.e2e.test.ts +12 -4
- 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 +146 -32
- package/src/cli/handlers/release.ts +415 -28
- package/src/cli/handlers/run-auto-release.test.ts +9 -0
- package/src/cli/handlers/run-release.test.ts +55 -0
- package/src/cli/handlers/run.ts +69 -5
- package/src/cli/main.test.ts +1 -0
- package/src/cli/main.ts +91 -10
- package/src/cli/parse-args.ts +54 -2
- package/src/cli/registry.ts +32 -4
- package/src/cli/run-events.ts +5 -2
- package/src/components/auto-release.test.ts +9 -0
- package/src/components/auto-release.ts +3 -0
- package/src/components/capability.ts +9 -0
- package/src/components/driver.test.ts +24 -0
- package/src/components/driver.ts +36 -0
- 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 +48 -0
- package/src/components/fan-out.ts +4 -0
- package/src/components/pr-pipeline.ts +67 -4
- package/src/components/pr-run.test.ts +127 -0
- package/src/components/pr-run.ts +32 -12
- package/src/components/promote.ts +68 -2
- package/src/components/release-compile.ts +17 -3
- package/src/components/release-gate.ts +18 -4
- package/src/components/wave-plan.ts +45 -2
- package/src/config.ts +8 -0
- package/src/flag-params.test.ts +144 -0
- package/src/flag-params.ts +134 -0
- package/src/lifecycle/__fixtures__/publish-fakes.ts +351 -0
- package/src/lifecycle/change-set-store.ts +2 -1
- package/src/lifecycle/delivery-metrics.ts +263 -0
- package/src/lifecycle/deploy-outcome.ts +147 -0
- package/src/lifecycle/gate-change-set.ts +37 -6
- package/src/lifecycle/gate-ledger.ts +2 -2
- 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.test.ts +74 -2
- package/src/lifecycle/release-cut.ts +158 -22
- 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.ts +9 -3
- 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 +15 -4
- 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.ts +7 -1
- package/src/op/activities/activity-contracts.ts +1 -0
- package/src/op/activities/shell.ts +7 -1
- package/src/op/local-executor.ts +27 -4
- package/src/op/runtime.ts +42 -0
- package/src/plan-summary.test.ts +20 -0
- package/src/plan-summary.ts +8 -1
- package/src/pr-forge.test.ts +25 -0
- package/src/pr-forge.ts +62 -0
- package/src/pr-loop.test.ts +13 -1
- package/src/pr-loop.ts +41 -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.ts +63 -3
- package/src/run-event-stream.ts +8 -4
- package/src/run-event.ts +38 -1
- 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/change-set.schema.json +5 -1
- 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-forge.ts +2 -0
- package/src/workspace/ci-green.ts +20 -5
- package/src/workspace/ci-run.test.ts +416 -0
- package/src/workspace/ci-run.ts +571 -0
- package/src/workspace/ci-serve.test.ts +268 -0
- package/src/workspace/ci-serve.ts +521 -0
- package/src/workspace/declaration.schema.json +64 -0
- package/src/workspace/declaration.test.ts +28 -0
- package/src/workspace/declaration.ts +38 -0
- 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/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 +148 -25
- 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/pr-report.schema.json +5 -0
- package/src/workspace/read-contract.e2e.test.ts +2 -1
- package/src/workspace/reason-codes.test.ts +5 -0
- package/src/workspace/reason-codes.ts +3 -0
- 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 +123 -1
- package/src/workspace/releases.ts +11 -0
- package/src/workspace/run-event.schema.json +24 -6
- package/src/workspace/status-contract.test.ts +29 -0
- package/src/workspace/status-gates.ts +8 -0
- package/src/workspace/status-mixed.test.ts +152 -0
- package/src/workspace/status-revoked.test.ts +153 -0
- package/src/workspace/status-stewards.ts +3 -0
- package/src/workspace/status.schema.json +210 -2
- package/src/workspace/status.ts +254 -3
- package/src/workspace/wip.ts +11 -2
package/dist/cli/handlers/pr.js
CHANGED
|
@@ -33,7 +33,15 @@
|
|
|
33
33
|
* one `run-event.schema.json` line each: the planning as a `plan` phase with
|
|
34
34
|
* a step per component, the gate's decision as a `gate` phase, and on
|
|
35
35
|
* pr-apply the apply's waves and components as `chant run --components`
|
|
36
|
-
* streams them.
|
|
36
|
+
* streams them. A component the apply does not start settles too, `blocked`
|
|
37
|
+
* behind a failed dependency or `already-applied` on a resumed apply.
|
|
38
|
+
* With or without it, pr-apply prints a line on stderr as each wave starts
|
|
39
|
+
* and as each component settles, so a job log shows the waves in order.
|
|
40
|
+
*
|
|
41
|
+
* `--report-url <s3 or file URL>` (#4007) copies `pr-<stage>.json`,
|
|
42
|
+
* `change-set.json` and, with `--events-json`, the events to
|
|
43
|
+
* `<url>/<pr>/<commit>/`, the events again as each wave and component
|
|
44
|
+
* settles (`../../pr-report-url.ts`).
|
|
37
45
|
*
|
|
38
46
|
* `--member <name>` (#3465) runs a workspace member's loop: the member's
|
|
39
47
|
* generated pipeline passes it from the member's directory. The gate is
|
|
@@ -48,10 +56,12 @@ import { resolveCommit, resolveMergeBase } from "../../components/changed-files.
|
|
|
48
56
|
import { deriveFanOut, fanOutRegistry } from "../../components/fan-out-support.js";
|
|
49
57
|
import { applyPrSet, approvalOf, approversWithoutReview, decidePrGate, planPrSet, prReport, readOnlyLedger, resumePrSet, } from "../../components/pr-run.js";
|
|
50
58
|
import { readFanOutAttempt, writeFanOutAttempt } from "../../components/fan-out-record.js";
|
|
59
|
+
import { componentInputDigests, progressThatCarries } from "../../components/fan-out-inputs.js";
|
|
51
60
|
import { samePlanDigest } from "../../lifecycle/plan-digest.js";
|
|
52
61
|
import { gitGateLedgerPort } from "../../op/gate.js";
|
|
53
62
|
import { emitGateStep, gateEventsOf, GATE_PHASE } from "../../run-event-stream.js";
|
|
54
63
|
import { openCliRunEvents, refusesEventsWithJson } from "../run-events.js";
|
|
64
|
+
import { openPrReportUpload, parseReportUrl, reportKey } from "../../pr-report-url.js";
|
|
55
65
|
import { describePlanChanged, PR_APPLY_GATE, prApproveCommand, prNoteMarker, prOp, prStatusDescription, prStatusContext, prStatusState, renderPrNote, } from "../../pr-loop.js";
|
|
56
66
|
import { FORGE_KINDS, forgeFromEnv, forgePrincipalOf } from "../../pr-forge.js";
|
|
57
67
|
import { GITHUB_COMMENT_LIMIT, GITLAB_NOTE_LIMIT } from "../../plan-summary.js";
|
|
@@ -213,12 +223,18 @@ function settleOf(status) {
|
|
|
213
223
|
return "failed";
|
|
214
224
|
}
|
|
215
225
|
}
|
|
216
|
-
/** Write the report, the change set and the note
|
|
217
|
-
function writeOutputs(ctx, report, note) {
|
|
226
|
+
/** Write the report, the change set and the note, and hand the first two to `--report-url`'s upload. */
|
|
227
|
+
function writeOutputs(ctx, report, note, upload) {
|
|
218
228
|
const dir = resolve(ctx.args.output ?? PR_REPORT_DIR);
|
|
219
229
|
mkdirSync(dir, { recursive: true });
|
|
220
|
-
|
|
221
|
-
|
|
230
|
+
const files = [
|
|
231
|
+
[`pr-${report.stage}.json`, JSON.stringify(report, null, 2) + "\n"],
|
|
232
|
+
["change-set.json", JSON.stringify(report.changeSet, null, 2) + "\n"],
|
|
233
|
+
];
|
|
234
|
+
for (const [name, body] of files) {
|
|
235
|
+
writeFileSync(join(dir, name), body);
|
|
236
|
+
upload?.file(name, body);
|
|
237
|
+
}
|
|
222
238
|
writeFileSync(join(dir, "pr-note.md"), note);
|
|
223
239
|
}
|
|
224
240
|
/** Post the note and the stage's status. A forge that refuses is a warning: the stage's outcome stands. */
|
|
@@ -262,16 +278,22 @@ function printMembers(report) {
|
|
|
262
278
|
console.error(` ${m.member.padEnd(20)} ${m.status.padEnd(12)} create ${c.create} update ${c.update} replace ${c.replace} delete ${c.delete}${m.error ? ` ${m.error}` : ""}`);
|
|
263
279
|
}
|
|
264
280
|
}
|
|
265
|
-
async function finish(ctx, p, report) {
|
|
281
|
+
async function finish(ctx, p, report, upload) {
|
|
266
282
|
const note = noteFor(report, p.forge);
|
|
267
|
-
writeOutputs(ctx, report, note);
|
|
283
|
+
writeOutputs(ctx, report, note, upload);
|
|
268
284
|
await publish(p.forge, report, note);
|
|
269
285
|
if (ctx.args.json)
|
|
270
286
|
console.log(JSON.stringify(report, null, 2));
|
|
271
287
|
}
|
|
272
|
-
/** Run a stage,
|
|
273
|
-
async function withStageEvents(stage, run) {
|
|
288
|
+
/** Run a stage, end its stream as `failed` when the stage did not settle it, and finish its upload. */
|
|
289
|
+
async function withStageEvents(stage, ctx, run) {
|
|
274
290
|
const events = {};
|
|
291
|
+
if (ctx.args.reportUrl !== undefined) {
|
|
292
|
+
const target = parseReportUrl(ctx.args.reportUrl);
|
|
293
|
+
if ("error" in target)
|
|
294
|
+
return fail(target.error);
|
|
295
|
+
events.target = target;
|
|
296
|
+
}
|
|
275
297
|
try {
|
|
276
298
|
return await run(events);
|
|
277
299
|
}
|
|
@@ -281,13 +303,32 @@ async function withStageEvents(stage, run) {
|
|
|
281
303
|
}
|
|
282
304
|
finally {
|
|
283
305
|
events.stream?.settle("failed", `${stage} stopped before it finished`);
|
|
306
|
+
if (events.upload) {
|
|
307
|
+
await events.upload.close();
|
|
308
|
+
console.error(formatInfo(`report : ${events.upload.where}/`));
|
|
309
|
+
}
|
|
284
310
|
}
|
|
285
311
|
}
|
|
286
|
-
/**
|
|
312
|
+
/**
|
|
313
|
+
* Open the stage's `--report-url` upload under its pull request and commit,
|
|
314
|
+
* when the flag was given. Its events are the lines `openCliRunEvents` writes.
|
|
315
|
+
*/
|
|
316
|
+
function openUpload(events, stage, pr, p) {
|
|
317
|
+
if (!events.target)
|
|
318
|
+
return undefined;
|
|
319
|
+
events.upload = openPrReportUpload({
|
|
320
|
+
target: events.target,
|
|
321
|
+
key: reportKey(pr, p.head, p.member),
|
|
322
|
+
stage,
|
|
323
|
+
warn: (message) => console.error(formatWarning({ message })),
|
|
324
|
+
});
|
|
325
|
+
return events.upload;
|
|
326
|
+
}
|
|
327
|
+
/** chant components pr-plan --base <ref> --pr <n> [--env <env>] [--gate <name>] [--forge <kind>] [--output <dir>] [--json] [--events-json] [--report-url <url>] */
|
|
287
328
|
export function runComponentsPrPlan(ctx) {
|
|
288
329
|
if (refusesEventsWithJson(ctx.args, "the stage's report"))
|
|
289
330
|
return Promise.resolve(1);
|
|
290
|
-
return withStageEvents("pr-plan", (events) => prPlan(ctx, events));
|
|
331
|
+
return withStageEvents("pr-plan", ctx, (events) => prPlan(ctx, events));
|
|
291
332
|
}
|
|
292
333
|
async function prPlan(ctx, stage) {
|
|
293
334
|
if (ctx.args.pr === undefined) {
|
|
@@ -297,8 +338,9 @@ async function prPlan(ctx, stage) {
|
|
|
297
338
|
if (typeof p === "number")
|
|
298
339
|
return p;
|
|
299
340
|
const op = prOp(ctx.args.pr, p.member);
|
|
341
|
+
const upload = openUpload(stage, "plan", ctx.args.pr, p);
|
|
300
342
|
// `--events-json` (#4041): planning, then where the approval stands.
|
|
301
|
-
const events = await openCliRunEvents(ctx.args, { kind: "component", name: `pr-plan ${op}`, cwd: resolve(".") });
|
|
343
|
+
const events = await openCliRunEvents(ctx.args, { kind: "component", name: `pr-plan ${op}`, cwd: resolve(".") }, upload?.line);
|
|
302
344
|
stage.stream = events;
|
|
303
345
|
events?.emit({ type: "run-start", waves: p.plan.waves });
|
|
304
346
|
const set = await planAll(p, events?.emit);
|
|
@@ -328,7 +370,7 @@ async function prPlan(ctx, stage) {
|
|
|
328
370
|
approval,
|
|
329
371
|
status,
|
|
330
372
|
});
|
|
331
|
-
await finish(ctx, p, report);
|
|
373
|
+
await finish(ctx, p, report, upload);
|
|
332
374
|
// The plan stage settles on its planning: an approval still to come is what it reports, not a stop.
|
|
333
375
|
events?.settle(settleOf(status), status === "plan-failed" ? "a member failed to plan" : undefined);
|
|
334
376
|
console.error(formatInfo(`pr-plan: ${report.members.length} member(s), ${status}`));
|
|
@@ -339,11 +381,11 @@ async function prPlan(ctx, stage) {
|
|
|
339
381
|
}
|
|
340
382
|
return status === "plan-failed" ? 1 : 0;
|
|
341
383
|
}
|
|
342
|
-
/** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] [--events-json] */
|
|
384
|
+
/** chant components pr-apply --base <ref> [--pr <n>] [--env <env>] [--gate <name>] [--forge <kind>] [--require-review] [--output <dir>] [--json] [--events-json] [--report-url <url>] */
|
|
343
385
|
export function runComponentsPrApply(ctx) {
|
|
344
386
|
if (refusesEventsWithJson(ctx.args, "the stage's report"))
|
|
345
387
|
return Promise.resolve(1);
|
|
346
|
-
return withStageEvents("pr-apply", (events) => prApply(ctx, events));
|
|
388
|
+
return withStageEvents("pr-apply", ctx, (events) => prApply(ctx, events));
|
|
347
389
|
}
|
|
348
390
|
async function prApply(ctx, stage) {
|
|
349
391
|
const { args } = ctx;
|
|
@@ -365,7 +407,8 @@ async function prApply(ctx, stage) {
|
|
|
365
407
|
// The run id the release records carry, chosen before the run so that
|
|
366
408
|
// `--events-json` (#4041, #4007) names the run by it too.
|
|
367
409
|
const release = autoReleaseRun(`${op}-${Date.now()}`);
|
|
368
|
-
const
|
|
410
|
+
const upload = openUpload(stage, "apply", pr, p);
|
|
411
|
+
const events = await openCliRunEvents(args, { kind: "component", name: `pr-apply ${op}`, runId: release.runId, cwd: resolve(".") }, upload?.line);
|
|
369
412
|
stage.stream = events;
|
|
370
413
|
events?.emit({ type: "run-start", waves: p.plan.waves });
|
|
371
414
|
// `--resume` (#3464): an earlier attempt at this change on this commit
|
|
@@ -381,14 +424,26 @@ async function prApply(ctx, stage) {
|
|
|
381
424
|
return fail(`--resume: could not read "${args.resume}": ${err instanceof Error ? err.message : String(err)}`);
|
|
382
425
|
}
|
|
383
426
|
}
|
|
384
|
-
|
|
385
|
-
|
|
427
|
+
// What each component would apply now (#4081): progress carries only where it is unchanged.
|
|
428
|
+
const inputsNow = resumePath ? componentInputDigests(p.components, { projectRoot: resolve("."), env: p.env }) : {};
|
|
429
|
+
const resumed = pr !== null && p.plan.order.length > 0 && attempt ? await tryResume(p, attempt, args.resume, op, inputsNow) : undefined;
|
|
430
|
+
// The components an earlier attempt applied settle first (#4007), each in
|
|
431
|
+
// the wave the derivation gave it, which is the run-start's.
|
|
432
|
+
const log = applyLog();
|
|
433
|
+
if (resumed) {
|
|
434
|
+
const waveOf = new Map(p.plan.waves.flatMap((wave, i) => wave.map((name) => [name, i + 1])));
|
|
435
|
+
for (const component of p.plan.order.filter((name) => resumed.completed.includes(name))) {
|
|
436
|
+
const body = { type: "component-settle", wave: waveOf.get(component), component, status: "already-applied" };
|
|
437
|
+
events?.emit(body);
|
|
438
|
+
log(body);
|
|
439
|
+
}
|
|
386
440
|
emitResumedGate(events, op, p.gate, resumed.check);
|
|
441
|
+
}
|
|
387
442
|
const set = resumed?.set ?? (await planAll(p, events?.emit));
|
|
388
443
|
const base = { stage: "apply", pr, env: p.env, ...(p.member ? { member: p.member } : {}), base: p.base, head: p.head, op, gate: p.gate, plan: p.plan, signal: p.signal, set };
|
|
389
444
|
const stop = async (report, code, settle) => {
|
|
390
445
|
events?.settle(settle ?? settleOf(report.status), report.status === "plan-failed" || report.status === "failed" ? report.message ?? `pr-apply ${report.status}` : undefined);
|
|
391
|
-
await finish(ctx, p, report);
|
|
446
|
+
await finish(ctx, p, report, upload);
|
|
392
447
|
console.error((code === 0 ? formatInfo : (m) => formatWarning({ message: m }))(`pr-apply: ${report.status}${report.refusal ? ` (${report.refusal})` : ""}`));
|
|
393
448
|
if (report.message)
|
|
394
449
|
console.error(report.message);
|
|
@@ -469,6 +524,7 @@ async function prApply(ctx, stage) {
|
|
|
469
524
|
// one settles, so a run killed partway still knows what applied.
|
|
470
525
|
const prior = resumed ? { completed: resumed.completed, outputs: resumed.outputs } : { completed: [], outputs: {} };
|
|
471
526
|
const completedSoFar = new Set(prior.completed);
|
|
527
|
+
const inputsSoFar = Object.fromEntries(prior.completed.filter((name) => inputsNow[name] !== undefined).map((name) => [name, inputsNow[name]]));
|
|
472
528
|
const failedSoFar = [];
|
|
473
529
|
const outputsSoFar = { ...prior.outputs };
|
|
474
530
|
const record = {
|
|
@@ -489,6 +545,7 @@ async function prApply(ctx, stage) {
|
|
|
489
545
|
completed: [...completedSoFar].sort(),
|
|
490
546
|
failed: [...failedSoFar].sort(),
|
|
491
547
|
outputs: outputsSoFar,
|
|
548
|
+
inputs: Object.fromEntries(Object.entries(inputsSoFar).sort(([a], [b]) => a.localeCompare(b))),
|
|
492
549
|
prApply: record,
|
|
493
550
|
});
|
|
494
551
|
};
|
|
@@ -500,13 +557,19 @@ async function prApply(ctx, stage) {
|
|
|
500
557
|
env: p.env,
|
|
501
558
|
set,
|
|
502
559
|
...(resumed ? { resumed: prior } : {}),
|
|
503
|
-
// The apply is this run's waves, so the fan-out's own run framing is
|
|
504
|
-
|
|
560
|
+
// The apply is this run's waves, so the fan-out's own run framing is
|
|
561
|
+
// dropped. The log's lines go to stderr with or without --events-json.
|
|
562
|
+
onRunEvent: (body) => {
|
|
563
|
+
events?.nested(body);
|
|
564
|
+
log(body);
|
|
565
|
+
},
|
|
505
566
|
...(resumePath
|
|
506
567
|
? {
|
|
507
568
|
onComponentSettled: (settled, outputs) => {
|
|
508
569
|
if (settled.status === "ok") {
|
|
509
570
|
completedSoFar.add(settled.component);
|
|
571
|
+
if (inputsNow[settled.component] !== undefined)
|
|
572
|
+
inputsSoFar[settled.component] = inputsNow[settled.component];
|
|
510
573
|
if (outputs)
|
|
511
574
|
outputsSoFar[settled.component] = outputs;
|
|
512
575
|
}
|
|
@@ -533,6 +596,38 @@ async function prApply(ctx, stage) {
|
|
|
533
596
|
console.error(formatSuccess(`applied the plan ${report.digest} approved by ${(approval.approvedBy ?? []).join(", ")}`));
|
|
534
597
|
return code;
|
|
535
598
|
}
|
|
599
|
+
/** What a component's settle says in the job log. */
|
|
600
|
+
function settleWords(body) {
|
|
601
|
+
switch (body.status) {
|
|
602
|
+
case "ok":
|
|
603
|
+
return "applied";
|
|
604
|
+
case "failed":
|
|
605
|
+
return "failed";
|
|
606
|
+
case "gated":
|
|
607
|
+
return "stopped at its own gate";
|
|
608
|
+
case "waiting":
|
|
609
|
+
return "waiting on a decision";
|
|
610
|
+
case "blocked":
|
|
611
|
+
return `blocked by ${body.blockedBy ?? "a dependency"}, not run`;
|
|
612
|
+
case "already-applied":
|
|
613
|
+
return "already applied in an earlier attempt";
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* pr-apply's job log (#4007): a line on stderr as each wave starts and as
|
|
618
|
+
* each component settles, so the log shows the waves in order while they run.
|
|
619
|
+
*/
|
|
620
|
+
function applyLog() {
|
|
621
|
+
let waves = 0;
|
|
622
|
+
return (body) => {
|
|
623
|
+
if (body.type === "run-start")
|
|
624
|
+
waves = body.waves?.length ?? 0;
|
|
625
|
+
else if (body.type === "wave-start")
|
|
626
|
+
console.error(formatInfo(`wave ${body.wave}${waves ? `/${waves}` : ""}: ${body.components.join(", ")}`));
|
|
627
|
+
else if (body.type === "component-settle")
|
|
628
|
+
console.error(formatInfo(` ${body.component}: ${settleWords(body)}`));
|
|
629
|
+
};
|
|
630
|
+
}
|
|
536
631
|
/** A resumed apply's gate (#3464), decided against the approved digest, as the run's `gate` phase. */
|
|
537
632
|
function emitResumedGate(events, op, gate, check) {
|
|
538
633
|
if (!events)
|
|
@@ -584,8 +679,13 @@ async function storeChangeSetForGate(ctx, p, doc) {
|
|
|
584
679
|
* derivation; when its approval still stands; and when every member left is
|
|
585
680
|
* covered by the approved set. Otherwise it says why on stderr and the apply
|
|
586
681
|
* runs as it would with no record.
|
|
682
|
+
*
|
|
683
|
+
* Of the components it applied, only those whose input digest is the same
|
|
684
|
+
* now carry (#4081), as in `components fan-out --resume`. One that changed
|
|
685
|
+
* runs again, under the same approval when the approved set covers its new
|
|
686
|
+
* plan. A record without input digests carries nothing.
|
|
587
687
|
*/
|
|
588
|
-
async function tryResume(p, attempt, file, op) {
|
|
688
|
+
async function tryResume(p, attempt, file, op, inputsNow) {
|
|
589
689
|
const skip = (why) => {
|
|
590
690
|
console.error(formatWarning({ message: `--resume: "${file}" does not carry: ${why}`, hint: "Every member is planned again, and the plan needs an approval of its own." }));
|
|
591
691
|
return undefined;
|
|
@@ -601,6 +701,14 @@ async function tryResume(p, attempt, file, op) {
|
|
|
601
701
|
return skip("the change selects other components than it did");
|
|
602
702
|
if (attempt.completed.length === 0)
|
|
603
703
|
return undefined;
|
|
704
|
+
const split = progressThatCarries(attempt, inputsNow);
|
|
705
|
+
if (split.unrecorded)
|
|
706
|
+
return skip("it does not record what each component applied, since it was written before chant recorded component inputs");
|
|
707
|
+
for (const name of split.changed)
|
|
708
|
+
console.error(formatInfo(`${name}: changed since the earlier attempt, so it runs again`));
|
|
709
|
+
if (split.carried.length === 0)
|
|
710
|
+
return undefined;
|
|
711
|
+
const completed = split.carried;
|
|
604
712
|
let check;
|
|
605
713
|
try {
|
|
606
714
|
check = await decidePrGate(readOnlyLedger(gitGateLedgerPort()), { op, gate: p.gate, digest: record.digest });
|
|
@@ -610,7 +718,7 @@ async function tryResume(p, attempt, file, op) {
|
|
|
610
718
|
}
|
|
611
719
|
if (!check.satisfied)
|
|
612
720
|
return skip(`no approval stands for the plan it applied (${record.digest}) any more`);
|
|
613
|
-
const outputs = Object.fromEntries(Object.entries(attempt.outputs).filter(([name]) =>
|
|
721
|
+
const outputs = Object.fromEntries(Object.entries(attempt.outputs).filter(([name]) => completed.includes(name)));
|
|
614
722
|
const resumed = await resumePrSet({
|
|
615
723
|
components: p.components,
|
|
616
724
|
plan: p.plan,
|
|
@@ -618,10 +726,10 @@ async function tryResume(p, attempt, file, op) {
|
|
|
618
726
|
env: p.env,
|
|
619
727
|
seededOutputs: p.seededOutputs,
|
|
620
728
|
record,
|
|
621
|
-
completed
|
|
729
|
+
completed,
|
|
622
730
|
});
|
|
623
731
|
if (!resumed.ok)
|
|
624
732
|
return skip(`what is left is not what was approved. ${resumed.reasons.join("; ")}`);
|
|
625
|
-
console.error(formatInfo(`resume : ${
|
|
626
|
-
return { plan: resumed.plan, set: resumed.set, check, approval: approvalOf(check), completed
|
|
733
|
+
console.error(formatInfo(`resume : ${completed.join(", ")} applied in an earlier attempt; applying ${resumed.plan.order.join(", ") || "nothing more"} under the approval of ${record.digest}`));
|
|
734
|
+
return { plan: resumed.plan, set: resumed.set, check, approval: approvalOf(check), completed, outputs };
|
|
627
735
|
}
|
|
@@ -12,6 +12,13 @@
|
|
|
12
12
|
* failed or stopped at a gate, so the ledger never misses a deploy that
|
|
13
13
|
* happened. Unlike an auto-recorded release, the record is what these
|
|
14
14
|
* commands are for, so a failed write is an error rather than a warning.
|
|
15
|
+
* A run that applied partly, or failed, also appends a deploy outcome
|
|
16
|
+
* (#4035, ../../lifecycle/deploy-outcome.ts) naming what it did to each
|
|
17
|
+
* component, so `workspace status` reads the environment as mixed.
|
|
18
|
+
*
|
|
19
|
+
* `rollback --release` (#4035) is a promote of an earlier release into the
|
|
20
|
+
* environment: every component of the release at the digest the environment
|
|
21
|
+
* ran from it, through the release gate `promote --release` binds (#4045).
|
|
15
22
|
*/
|
|
16
23
|
import type { CommandContext } from "../registry.js";
|
|
17
24
|
export declare function runComponentsPromote(ctx: CommandContext): Promise<number>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/promote.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"promote.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/promote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AA+CH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAukBlD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA2E/E;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAsChF;AAsCD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BhF"}
|