@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
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which releases are revoked (#4033, ws-105 question 2).
|
|
3
|
+
*
|
|
4
|
+
* A release traces to one commit (ws-104), and a commit is revoked when it
|
|
5
|
+
* carries a `ci/revoked/<sha>` tag that counts (ws-103). So a release is
|
|
6
|
+
* revoked exactly when its commit is, and this module derives that at read
|
|
7
|
+
* time from the tags. Nothing is written when a commit is revoked: the tag is
|
|
8
|
+
* the record, `chant ci tick` makes it once, and every reader below judges it
|
|
9
|
+
* the same way.
|
|
10
|
+
*
|
|
11
|
+
* The tags are judged as `release cut` judges them (#4031): with
|
|
12
|
+
* `ci.green.signedSince` declared, a revoked tag without a valid runner
|
|
13
|
+
* statement is ignored and revokes nothing. The declaration and the runner
|
|
14
|
+
* keys are read at base, the green branch's tip on `origin` (or the local
|
|
15
|
+
* branch, or `HEAD`). Only local tags are read; nothing is fetched.
|
|
16
|
+
*
|
|
17
|
+
* The readers:
|
|
18
|
+
*
|
|
19
|
+
* - `chant approve` refuses a release gate whose release is revoked
|
|
20
|
+
* (`release-revoked`), and `chant components promote --release` refuses to
|
|
21
|
+
* deploy one, so a pending gate for it can never pass.
|
|
22
|
+
* - `chant workspace status --json` reads such a gate as `superseded` and
|
|
23
|
+
* flags a component whose environment runs a revoked release, with the
|
|
24
|
+
* rollback line.
|
|
25
|
+
* - `chant release list` marks a revoked release.
|
|
26
|
+
*/
|
|
27
|
+
import type { CiGreen } from "../workspace/declaration.js";
|
|
28
|
+
import type { CiTags, RevokedTagView } from "../workspace/ci-green.js";
|
|
29
|
+
/** A revoked release: the commit it was cut from and the revoked tag on it, as `ci list` shows the tag. */
|
|
30
|
+
export interface ReleaseRevocation extends RevokedTagView {
|
|
31
|
+
/** The release's commit, which the tag names. */
|
|
32
|
+
commit: string;
|
|
33
|
+
}
|
|
34
|
+
/** The stable code `approve` and `promote --release` refuse a revoked release with. */
|
|
35
|
+
export declare const RELEASE_REVOKED_CODE = "release-revoked";
|
|
36
|
+
/**
|
|
37
|
+
* The ci tags at `top`, judged against `green` at base: the green branch's
|
|
38
|
+
* tip on `origin`, else the local branch, else `HEAD`. With no `ci.green`
|
|
39
|
+
* every tag counts. Throws `WorkspaceReadError` (`declaration-invalid`) when
|
|
40
|
+
* `ci.green.signedSince` names no commit here.
|
|
41
|
+
*/
|
|
42
|
+
export declare function judgedCiTags(top: string, green: CiGreen | null): Promise<CiTags>;
|
|
43
|
+
/**
|
|
44
|
+
* Every revoked commit in the repository holding `cwd`, keyed by its full
|
|
45
|
+
* sha, with the declaration's `ci.green` read at base as `release cut` reads
|
|
46
|
+
* it. Empty outside a git repository. Throws `WorkspaceReadError`
|
|
47
|
+
* (`declaration-invalid`) when the tags can't be judged.
|
|
48
|
+
*/
|
|
49
|
+
export declare function readRevokedCommits(cwd: string): Promise<Map<string, ReleaseRevocation>>;
|
|
50
|
+
/** {@link readRevokedCommits} for a caller that has the git top and the declaration's `ci.green` at base already. */
|
|
51
|
+
export declare function revokedCommitsAt(top: string, green: CiGreen | null): Promise<Map<string, ReleaseRevocation>>;
|
|
52
|
+
/** What a reader prints for a release it found revoked: the revocation, the release and its label. */
|
|
53
|
+
export interface RevokedRelease extends ReleaseRevocation {
|
|
54
|
+
releaseDigest: string;
|
|
55
|
+
/** The release's label, or null when its cuts gave it none. */
|
|
56
|
+
label: string | null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* A memoised lookup from a release digest to its revocation, for the member
|
|
60
|
+
* whose ledger is read from `memberDir`: null when the release is not
|
|
61
|
+
* revoked, or its file can't be read. `revoked` is called on the first
|
|
62
|
+
* lookup only, so a reader that meets no release reads no tags, and no
|
|
63
|
+
* release file is read while no commit is revoked.
|
|
64
|
+
*/
|
|
65
|
+
export declare function revokedReleaseLookup(memberDir: string, revoked: () => Promise<ReadonlyMap<string, ReleaseRevocation>>): (releaseDigest: string) => Promise<RevokedRelease | null>;
|
|
66
|
+
/** Whether `release` is revoked: its commit's revoked tag, or null. */
|
|
67
|
+
export declare function revocationOf(release: {
|
|
68
|
+
commit: string;
|
|
69
|
+
}, revoked: ReadonlyMap<string, ReleaseRevocation>): ReleaseRevocation | null;
|
|
70
|
+
/** What failed, in words: `phase e2e failed in deploy-smoke (Op run r-12 in staging)`. */
|
|
71
|
+
export declare function describeRevocation(r: ReleaseRevocation): string;
|
|
72
|
+
/** The refusal `approve` and `promote --release` print for a revoked release, and the line that fixes it. */
|
|
73
|
+
export declare function revokedRefusal(release: {
|
|
74
|
+
releaseDigest: string;
|
|
75
|
+
label: string | null;
|
|
76
|
+
}, r: ReleaseRevocation, fix: string): {
|
|
77
|
+
message: string;
|
|
78
|
+
hint: string;
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=release-revocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-revocation.d.ts","sourceRoot":"","sources":["../../src/lifecycle/release-revocation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEpE,2GAA2G;AAC3G,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAUtD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAQtF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAK7F;AAED,qHAAqH;AACrH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAKlH;AAED,sGAAsG;AACtG,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,GAC7D,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAqB3D;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,iBAAiB,GAAG,IAAI,CAEnI;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAK/D;AAED,6GAA6G;AAC7G,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAO7J"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which releases are revoked (#4033, ws-105 question 2).
|
|
3
|
+
*
|
|
4
|
+
* A release traces to one commit (ws-104), and a commit is revoked when it
|
|
5
|
+
* carries a `ci/revoked/<sha>` tag that counts (ws-103). So a release is
|
|
6
|
+
* revoked exactly when its commit is, and this module derives that at read
|
|
7
|
+
* time from the tags. Nothing is written when a commit is revoked: the tag is
|
|
8
|
+
* the record, `chant ci tick` makes it once, and every reader below judges it
|
|
9
|
+
* the same way.
|
|
10
|
+
*
|
|
11
|
+
* The tags are judged as `release cut` judges them (#4031): with
|
|
12
|
+
* `ci.green.signedSince` declared, a revoked tag without a valid runner
|
|
13
|
+
* statement is ignored and revokes nothing. The declaration and the runner
|
|
14
|
+
* keys are read at base, the green branch's tip on `origin` (or the local
|
|
15
|
+
* branch, or `HEAD`). Only local tags are read; nothing is fetched.
|
|
16
|
+
*
|
|
17
|
+
* The readers:
|
|
18
|
+
*
|
|
19
|
+
* - `chant approve` refuses a release gate whose release is revoked
|
|
20
|
+
* (`release-revoked`), and `chant components promote --release` refuses to
|
|
21
|
+
* deploy one, so a pending gate for it can never pass.
|
|
22
|
+
* - `chant workspace status --json` reads such a gate as `superseded` and
|
|
23
|
+
* flags a component whose environment runs a revoked release, with the
|
|
24
|
+
* rollback line.
|
|
25
|
+
* - `chant release list` marks a revoked release.
|
|
26
|
+
*/
|
|
27
|
+
import { execFileSync } from "node:child_process";
|
|
28
|
+
/** The stable code `approve` and `promote --release` refuse a revoked release with. */
|
|
29
|
+
export const RELEASE_REVOKED_CODE = "release-revoked";
|
|
30
|
+
function tryGit(top, args) {
|
|
31
|
+
try {
|
|
32
|
+
return execFileSync("git", args, { cwd: top, encoding: "utf-8", stdio: ["ignore", "pipe", "pipe"] }).trim();
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The ci tags at `top`, judged against `green` at base: the green branch's
|
|
40
|
+
* tip on `origin`, else the local branch, else `HEAD`. With no `ci.green`
|
|
41
|
+
* every tag counts. Throws `WorkspaceReadError` (`declaration-invalid`) when
|
|
42
|
+
* `ci.green.signedSince` names no commit here.
|
|
43
|
+
*/
|
|
44
|
+
export async function judgedCiTags(top, green) {
|
|
45
|
+
const { readCiTags } = await import("../workspace/ci-green.js");
|
|
46
|
+
const base = green
|
|
47
|
+
? (tryGit(top, ["rev-parse", "--verify", "--quiet", `refs/remotes/origin/${green.branch}^{commit}`]) ??
|
|
48
|
+
tryGit(top, ["rev-parse", "--verify", "--quiet", `refs/heads/${green.branch}^{commit}`]) ??
|
|
49
|
+
tryGit(top, ["rev-parse", "HEAD"]))
|
|
50
|
+
: null;
|
|
51
|
+
return readCiTags(top, green, base);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Every revoked commit in the repository holding `cwd`, keyed by its full
|
|
55
|
+
* sha, with the declaration's `ci.green` read at base as `release cut` reads
|
|
56
|
+
* it. Empty outside a git repository. Throws `WorkspaceReadError`
|
|
57
|
+
* (`declaration-invalid`) when the tags can't be judged.
|
|
58
|
+
*/
|
|
59
|
+
export async function readRevokedCommits(cwd) {
|
|
60
|
+
const top = tryGit(cwd, ["rev-parse", "--show-toplevel"]);
|
|
61
|
+
if (!top)
|
|
62
|
+
return new Map();
|
|
63
|
+
const { scopeSource } = await import("../workspace/write-scope.js");
|
|
64
|
+
return revokedCommitsAt(top, scopeSource(cwd).declaration?.ci?.green ?? null);
|
|
65
|
+
}
|
|
66
|
+
/** {@link readRevokedCommits} for a caller that has the git top and the declaration's `ci.green` at base already. */
|
|
67
|
+
export async function revokedCommitsAt(top, green) {
|
|
68
|
+
const { revokedTagView } = await import("../workspace/ci-green.js");
|
|
69
|
+
const out = new Map();
|
|
70
|
+
for (const [sha, counted] of (await judgedCiTags(top, green)).revoked)
|
|
71
|
+
out.set(sha, { commit: sha, ...revokedTagView(sha, counted) });
|
|
72
|
+
return out;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* A memoised lookup from a release digest to its revocation, for the member
|
|
76
|
+
* whose ledger is read from `memberDir`: null when the release is not
|
|
77
|
+
* revoked, or its file can't be read. `revoked` is called on the first
|
|
78
|
+
* lookup only, so a reader that meets no release reads no tags, and no
|
|
79
|
+
* release file is read while no commit is revoked.
|
|
80
|
+
*/
|
|
81
|
+
export function revokedReleaseLookup(memberDir, revoked) {
|
|
82
|
+
const seen = new Map();
|
|
83
|
+
let labels;
|
|
84
|
+
return (releaseDigest) => {
|
|
85
|
+
let found = seen.get(releaseDigest);
|
|
86
|
+
if (!found) {
|
|
87
|
+
found = (async () => {
|
|
88
|
+
const commits = await revoked();
|
|
89
|
+
if (commits.size === 0)
|
|
90
|
+
return null;
|
|
91
|
+
const { readRelease, readCuts, labelsByDigest } = await import("./release-store.js");
|
|
92
|
+
const loc = { cwd: memberDir };
|
|
93
|
+
const release = await readRelease(releaseDigest, loc).catch(() => null);
|
|
94
|
+
const r = release ? revocationOf(release, commits) : null;
|
|
95
|
+
if (!r)
|
|
96
|
+
return null;
|
|
97
|
+
labels ?? (labels = readCuts(loc).then((c) => labelsByDigest(c.cuts), () => new Map()));
|
|
98
|
+
return { ...r, releaseDigest, label: (await labels).get(releaseDigest) ?? null };
|
|
99
|
+
})();
|
|
100
|
+
seen.set(releaseDigest, found);
|
|
101
|
+
}
|
|
102
|
+
return found;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/** Whether `release` is revoked: its commit's revoked tag, or null. */
|
|
106
|
+
export function revocationOf(release, revoked) {
|
|
107
|
+
return revoked.get(release.commit) ?? null;
|
|
108
|
+
}
|
|
109
|
+
/** What failed, in words: `phase e2e failed in deploy-smoke (Op run r-12 in staging)`. */
|
|
110
|
+
export function describeRevocation(r) {
|
|
111
|
+
const run = r.run
|
|
112
|
+
? ` in ${r.run.name}${r.run.opRun ? ` (Op run ${r.run.opRun.id} in ${r.run.opRun.env})` : r.run.id !== null ? ` (run ${r.run.id})` : ""}`
|
|
113
|
+
: "";
|
|
114
|
+
return r.phase !== null ? `phase ${r.phase} failed${run}` : `a required phase failed${run}`;
|
|
115
|
+
}
|
|
116
|
+
/** The refusal `approve` and `promote --release` print for a revoked release, and the line that fixes it. */
|
|
117
|
+
export function revokedRefusal(release, r, fix) {
|
|
118
|
+
return {
|
|
119
|
+
message: `release ${release.label ?? release.releaseDigest} was cut from commit ${r.commit.slice(0, 12)}, which ${r.tag} revokes ` +
|
|
120
|
+
`(${describeRevocation(r)}), so it is not deployed and no approval of it counts [${RELEASE_REVOKED_CODE}]`,
|
|
121
|
+
hint: fix,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The release (#4026, ws-104): one green commit of one member, compiled for
|
|
3
|
+
* every environment the member declares, stored on `chant/lifecycle`.
|
|
4
|
+
*
|
|
5
|
+
* A release is a different object from a deploy record. A deploy record is
|
|
6
|
+
* one line of `<env>/releases.jsonl` (./release-ledger.ts) saying a component
|
|
7
|
+
* was deployed. A release is what is cut once from a green commit and then
|
|
8
|
+
* moves through the environments: the commit, the artifacts built once from
|
|
9
|
+
* it, and one compile target per environment, each with the template digests
|
|
10
|
+
* and the build parameters that environment was compiled with.
|
|
11
|
+
*
|
|
12
|
+
* Storage, per ws-104 question 3:
|
|
13
|
+
*
|
|
14
|
+
* _releases/<releaseDigest>.json the release, written once and never rewritten
|
|
15
|
+
* _releases/cuts.jsonl one line per cut, with the release's label
|
|
16
|
+
* _releases/templates/<digest>.txt each template's bytes, by content digest
|
|
17
|
+
*
|
|
18
|
+
* `:` is written as `_` in file names, as `_plans/` and `_builds/` do. A
|
|
19
|
+
* workspace member's copy sits under `_members/<member>/` through the same
|
|
20
|
+
* `ledgerDir` prefix every other store uses.
|
|
21
|
+
*
|
|
22
|
+
* The template bytes are kept so that a promote under a release deploys the
|
|
23
|
+
* templates the cut recorded, not whatever the promoting checkout holds
|
|
24
|
+
* (ws-104 question 5). They are named by content digest, so a template that
|
|
25
|
+
* two environments or two releases share is stored once.
|
|
26
|
+
*
|
|
27
|
+
* `releaseDigest` is `computePlanDigest("release", subject)` over the member,
|
|
28
|
+
* the commit, the artifact digests and each target's env, templates and the
|
|
29
|
+
* name and value of each param. A param's `source`, the label, the actor, the
|
|
30
|
+
* time and any signature stay outside it, so two cuts of one commit give the
|
|
31
|
+
* same digest.
|
|
32
|
+
*/
|
|
33
|
+
import { type LedgerLocation } from "./git.js";
|
|
34
|
+
import type { RunOrigin } from "./release-ledger.js";
|
|
35
|
+
/** The directory on `chant/lifecycle` that holds releases, cuts and template bytes. */
|
|
36
|
+
export declare const RELEASES_DIR = "_releases";
|
|
37
|
+
/** The cut log inside {@link RELEASES_DIR}. */
|
|
38
|
+
export declare const CUTS_FILE = "cuts.jsonl";
|
|
39
|
+
/** The directory inside {@link RELEASES_DIR} that holds template bytes by content digest. */
|
|
40
|
+
export declare const TEMPLATES_SUBDIR = "templates";
|
|
41
|
+
/** The `kind` a release digest is computed under, so it can never equal a plan digest of another kind. */
|
|
42
|
+
export declare const RELEASE_DIGEST_KIND = "release";
|
|
43
|
+
/** An artifact built once from the release's commit: an `image` or `asset` archive entry. */
|
|
44
|
+
export interface ReleaseArtifact {
|
|
45
|
+
component: string;
|
|
46
|
+
kind: "image" | "asset";
|
|
47
|
+
/** The archive path the build step wrote. */
|
|
48
|
+
path: string;
|
|
49
|
+
digest: string;
|
|
50
|
+
}
|
|
51
|
+
/** One template of a target: a file a component's deploy reads, compiled for the target's environment. */
|
|
52
|
+
export interface ReleaseTemplate {
|
|
53
|
+
/** The component whose deploy reads it, or null for a project with no components. */
|
|
54
|
+
component: string | null;
|
|
55
|
+
/** The path the deploy step names, relative to the member's directory. */
|
|
56
|
+
path: string;
|
|
57
|
+
/** `sha256:<hex>` of the file's bytes. */
|
|
58
|
+
digest: string;
|
|
59
|
+
}
|
|
60
|
+
/** One resolved build parameter of a target. */
|
|
61
|
+
export interface ReleaseParam {
|
|
62
|
+
name: string;
|
|
63
|
+
value: string | number | boolean;
|
|
64
|
+
/** Where the value came from: `cli`, `params-file`, `env` or `default`. Outside the digest. */
|
|
65
|
+
source: string;
|
|
66
|
+
}
|
|
67
|
+
/** What one environment compiles to. */
|
|
68
|
+
export interface ReleaseTarget {
|
|
69
|
+
env: string;
|
|
70
|
+
templates: ReleaseTemplate[];
|
|
71
|
+
params: ReleaseParam[];
|
|
72
|
+
}
|
|
73
|
+
/** The release file, `_releases/<releaseDigest>.json`. */
|
|
74
|
+
export interface Release {
|
|
75
|
+
version: 1;
|
|
76
|
+
releaseDigest: string;
|
|
77
|
+
/** The workspace member, its path of names joined with `/` when nested, or null outside a workspace. */
|
|
78
|
+
member: string | null;
|
|
79
|
+
/** The full sha of the green commit. */
|
|
80
|
+
commit: string;
|
|
81
|
+
artifactDigests: ReleaseArtifact[];
|
|
82
|
+
targets: ReleaseTarget[];
|
|
83
|
+
}
|
|
84
|
+
/** One line of `_releases/cuts.jsonl`. */
|
|
85
|
+
export interface ReleaseCut {
|
|
86
|
+
version: 1;
|
|
87
|
+
releaseDigest: string;
|
|
88
|
+
/** The human name of the release, such as `v1.4.0`, or null for a cut with none. */
|
|
89
|
+
label: string | null;
|
|
90
|
+
actor: string;
|
|
91
|
+
timestamp: string;
|
|
92
|
+
/**
|
|
93
|
+
* The run the cut ran in (#4027): the CI run's id in CI, or an id minted on
|
|
94
|
+
* the machine that cut (`local-<epoch ms>`). Null on every cut written
|
|
95
|
+
* before 0.124.29.
|
|
96
|
+
*/
|
|
97
|
+
runId: string | null;
|
|
98
|
+
/**
|
|
99
|
+
* Where that run ran: the CI run's origin, or `{ forge: "local" }` for a
|
|
100
|
+
* minted id (#4027). A cut written before 0.124.29 holds null outside CI.
|
|
101
|
+
*/
|
|
102
|
+
runOrigin: RunOrigin | null;
|
|
103
|
+
/**
|
|
104
|
+
* The cut's signature (#4031): an armored ssh signature by the actor's key
|
|
105
|
+
* in the `chant-release` namespace over the release digest, the label, the
|
|
106
|
+
* actor and the time, one per line (`releaseSealPayload`). Null for an
|
|
107
|
+
* unsigned cut, and on every cut written before 0.124.28.
|
|
108
|
+
*/
|
|
109
|
+
signature: string | null;
|
|
110
|
+
}
|
|
111
|
+
/** The parts of a release a digest is computed from. */
|
|
112
|
+
export type ReleaseSubject = Pick<Release, "member" | "commit" | "artifactDigests" | "targets">;
|
|
113
|
+
/** The same release with every list in the order ws-104 sets: artifacts by component then path, targets by env, templates by component then path, params by name. */
|
|
114
|
+
export declare function normalizeRelease<T extends ReleaseSubject>(release: T): T;
|
|
115
|
+
/** The hash input of ws-104 question 3: a param's `source` is left out. */
|
|
116
|
+
export declare function releaseHashInput(release: ReleaseSubject): unknown;
|
|
117
|
+
/** `computePlanDigest("release", input)` over {@link releaseHashInput}. */
|
|
118
|
+
export declare function computeReleaseDigest(release: ReleaseSubject): string;
|
|
119
|
+
/** A release with its digest computed and its lists in order. */
|
|
120
|
+
export declare function makeRelease(subject: ReleaseSubject): Release;
|
|
121
|
+
/** Whether a release's own `releaseDigest` is the digest of what it holds. */
|
|
122
|
+
export declare function verifyReleaseDigest(release: Release): boolean;
|
|
123
|
+
/** Why a label can't be used, or undefined when it can. */
|
|
124
|
+
export declare function invalidLabel(label: string): string | undefined;
|
|
125
|
+
/** Thrown when a cut would give a label two digests, or a digest two labels. */
|
|
126
|
+
export declare class ReleaseLabelError extends Error {
|
|
127
|
+
readonly code: "release-label-taken" | "release-already-labelled" | "release-label-invalid";
|
|
128
|
+
constructor(code: "release-label-taken" | "release-already-labelled" | "release-label-invalid", message: string);
|
|
129
|
+
}
|
|
130
|
+
/** A release's template bytes, as the cut read them. */
|
|
131
|
+
export interface TemplateContent {
|
|
132
|
+
digest: string;
|
|
133
|
+
content: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Store a release and its template bytes in one commit. A release already
|
|
137
|
+
* stored under its digest is never rewritten, and a template already stored
|
|
138
|
+
* is not written again. Does not push.
|
|
139
|
+
*/
|
|
140
|
+
export declare function persistRelease(release: Release, templates: readonly TemplateContent[], opts?: {
|
|
141
|
+
cwd?: string;
|
|
142
|
+
}): Promise<{
|
|
143
|
+
commit: string | null;
|
|
144
|
+
written: boolean;
|
|
145
|
+
}>;
|
|
146
|
+
/** Parse a stored release file, or null when it is not a release. */
|
|
147
|
+
export declare function parseRelease(text: string): Release | null;
|
|
148
|
+
/** Read one release by digest. Null when none is stored, or when the file is not a release whose content hashes to its digest. */
|
|
149
|
+
export declare function readRelease(digest: string, opts?: LedgerLocation): Promise<Release | null>;
|
|
150
|
+
/** Every stored release, and how many release files could not be read as one. */
|
|
151
|
+
export declare function readAllReleases(opts?: LedgerLocation): Promise<{
|
|
152
|
+
releases: Release[];
|
|
153
|
+
malformed: number;
|
|
154
|
+
}>;
|
|
155
|
+
/** Parse the lines of `cuts.jsonl`. A line that is not a cut is counted and skipped. */
|
|
156
|
+
export declare function parseCuts(text: string | null): {
|
|
157
|
+
cuts: ReleaseCut[];
|
|
158
|
+
malformed: number;
|
|
159
|
+
};
|
|
160
|
+
/** Every cut, oldest first. */
|
|
161
|
+
export declare function readCuts(opts?: LedgerLocation): Promise<{
|
|
162
|
+
cuts: ReleaseCut[];
|
|
163
|
+
malformed: number;
|
|
164
|
+
}>;
|
|
165
|
+
/** The label each digest carries, from its labelled cuts. */
|
|
166
|
+
export declare function labelsByDigest(cuts: readonly ReleaseCut[]): Map<string, string>;
|
|
167
|
+
/** What {@link appendCut} did. */
|
|
168
|
+
export type CutOutcome = {
|
|
169
|
+
appended: true;
|
|
170
|
+
cut: ReleaseCut;
|
|
171
|
+
}
|
|
172
|
+
/** The digest was already cut; nothing was written. `label` is the label it carries, or null. */
|
|
173
|
+
| {
|
|
174
|
+
appended: false;
|
|
175
|
+
label: string | null;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Append a cut for `releaseDigest`. A label names one digest and a digest
|
|
179
|
+
* takes at most one label (ws-104 question 3): cutting a digest again is a
|
|
180
|
+
* no-op that returns its label, giving an unlabelled digest a label appends a
|
|
181
|
+
* cut, and cutting a digest under a label other than its own, or under a
|
|
182
|
+
* label another digest has, throws {@link ReleaseLabelError}. Does not push.
|
|
183
|
+
*/
|
|
184
|
+
export declare function appendCut(input: Omit<ReleaseCut, "version" | "signature" | "runId"> & {
|
|
185
|
+
signature?: string | null;
|
|
186
|
+
runId?: string | null;
|
|
187
|
+
}, opts?: {
|
|
188
|
+
cwd?: string;
|
|
189
|
+
}): Promise<CutOutcome>;
|
|
190
|
+
/** A template's bytes by digest, or null when none is stored. */
|
|
191
|
+
export declare function readReleaseTemplate(digest: string, opts?: LedgerLocation): Promise<string | null>;
|
|
192
|
+
/**
|
|
193
|
+
* Find a release by its digest or its label. Null when neither names one.
|
|
194
|
+
* A string that names a digest is read as a digest first.
|
|
195
|
+
*/
|
|
196
|
+
export declare function resolveRelease(ref: string, opts?: LedgerLocation): Promise<{
|
|
197
|
+
release: Release;
|
|
198
|
+
label: string | null;
|
|
199
|
+
} | null>;
|
|
200
|
+
//# sourceMappingURL=release-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-store.d.ts","sourceRoot":"","sources":["../../src/lifecycle/release-store.ts"],"names":[],"mappings":"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"}
|