@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
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Overlap between in-flight work items (#4025, policy from #4016).
|
|
3
|
+
*
|
|
4
|
+
* A work lease locks one item, and nothing compares two items with each
|
|
5
|
+
* other. This report does, after the fact: it says which in-flight work items
|
|
6
|
+
* changed the same files, and which entries of a planned change set more than
|
|
7
|
+
* one of them reaches. It never blocks anything. Two people or agents read it
|
|
8
|
+
* and sort the overlap out between them.
|
|
9
|
+
*
|
|
10
|
+
* ## In flight
|
|
11
|
+
*
|
|
12
|
+
* A work item is a current record of a declared work kind. It is in flight
|
|
13
|
+
* unless it implements at least one decision and every decision it implements
|
|
14
|
+
* is confirmed, as #4024 defines confirmed ({@link decisionConfirmed}: in one
|
|
15
|
+
* of the decision kind's closed states and superseded by nothing). The item's
|
|
16
|
+
* own state does not matter: work marked done whose decision is not settled
|
|
17
|
+
* can still collide.
|
|
18
|
+
*
|
|
19
|
+
* ## Linked commits
|
|
20
|
+
*
|
|
21
|
+
* The commits of a work item are the commits linked to it as #4029 defines
|
|
22
|
+
* linked ({@link judgeCommits}): a `Chant-Record: <work kind>:<id>` trailer,
|
|
23
|
+
* or a `Chant-Lease` trailer that resolves to the item. A window match does
|
|
24
|
+
* not link. The walk covers every local branch, every remote-tracking branch
|
|
25
|
+
* and HEAD, so work pushed to a branch and fetched shows before it is merged.
|
|
26
|
+
* The ledger branches under `chant/` hold no work and are left out. Merge
|
|
27
|
+
* commits carry no work of their own and are skipped. Nothing is fetched.
|
|
28
|
+
*
|
|
29
|
+
* ## Files
|
|
30
|
+
*
|
|
31
|
+
* An item's files are the paths its linked commits add, change or delete,
|
|
32
|
+
* from the repository root, with renames read as a delete and an add. Two
|
|
33
|
+
* items overlap by file when both touch one path.
|
|
34
|
+
*
|
|
35
|
+
* ## Change-set entries
|
|
36
|
+
*
|
|
37
|
+
* A change set is planned from many commits, and a release bundles many work
|
|
38
|
+
* items, so an entry belongs to no single item on its face. An entry is
|
|
39
|
+
* attributed to a work item when:
|
|
40
|
+
*
|
|
41
|
+
* 1. the entry has a `source`: the file that declares its graph node, from
|
|
42
|
+
* the repository root, recorded when the change set was stored
|
|
43
|
+
* (`../change-set-graph.ts`);
|
|
44
|
+
* 2. a commit linked to the item changed that file; and
|
|
45
|
+
* 3. that commit is in the history the change set was planned from: an
|
|
46
|
+
* ancestor of (or equal to) the commit its graph was read at, else the
|
|
47
|
+
* commit the gate was reached at. When neither is known, or the commit is
|
|
48
|
+
* not in this repository, the third test is skipped.
|
|
49
|
+
*
|
|
50
|
+
* An entry can be attributed to several items, and two items overlap by
|
|
51
|
+
* address when one entry is attributed to both. An entry with no `source`
|
|
52
|
+
* (stored by an older chant, mapped onto no node, or a node with no source
|
|
53
|
+
* location) is attributed to none and counted in `unattributed`.
|
|
54
|
+
*
|
|
55
|
+
* The change sets read are the ones `workspace status` lists on a gate that
|
|
56
|
+
* is pending or approved: the plans still waiting to apply.
|
|
57
|
+
*/
|
|
58
|
+
import type { ChangeSetDocument } from "../change-set.js";
|
|
59
|
+
import { type Declaration } from "./declaration.js";
|
|
60
|
+
/** One in-flight work item with at least one linked commit. */
|
|
61
|
+
export interface OverlapItem {
|
|
62
|
+
/** `<work kind>:<id>`, as a `Chant-Record` trailer names it. */
|
|
63
|
+
item: string;
|
|
64
|
+
/** The work record file, from the repository root. */
|
|
65
|
+
path: string;
|
|
66
|
+
state: string | null;
|
|
67
|
+
/** The commits linked to the item, newest first. */
|
|
68
|
+
commits: string[];
|
|
69
|
+
}
|
|
70
|
+
/** One change-set entry two items both reach. */
|
|
71
|
+
export interface OverlapAddress {
|
|
72
|
+
/** The change set's digest, as `chant change-set show` takes it. */
|
|
73
|
+
changeSet: string;
|
|
74
|
+
/** The workspace member whose ledger stores the change set, or null for the flat ledger. */
|
|
75
|
+
ledgerMember: string | null;
|
|
76
|
+
/** The entry's change-set member and planner address. */
|
|
77
|
+
member: string;
|
|
78
|
+
address: string;
|
|
79
|
+
/** The entry's graph node, or null. */
|
|
80
|
+
node: string | null;
|
|
81
|
+
/** The source file the attribution went through, from the repository root. */
|
|
82
|
+
source: string;
|
|
83
|
+
}
|
|
84
|
+
/** Two in-flight work items that changed the same thing. */
|
|
85
|
+
export interface OverlapPair {
|
|
86
|
+
/** The two items, `<work kind>:<id>`, in sorted order. */
|
|
87
|
+
items: [string, string];
|
|
88
|
+
/** The files both items' linked commits touch, sorted. */
|
|
89
|
+
files: string[];
|
|
90
|
+
/** The change-set entries attributed to both items, by change set then address. */
|
|
91
|
+
addresses: OverlapAddress[];
|
|
92
|
+
}
|
|
93
|
+
/** What `workspace status` reports as `overlap`. */
|
|
94
|
+
export interface OverlapReport {
|
|
95
|
+
/** The in-flight work items with a linked commit, by item. */
|
|
96
|
+
items: OverlapItem[];
|
|
97
|
+
/** Each pair of items that share a file or an entry, by the first item then the second. */
|
|
98
|
+
pairs: OverlapPair[];
|
|
99
|
+
/** The digests of the change sets read, sorted. */
|
|
100
|
+
changeSets: string[];
|
|
101
|
+
/** Entries of those change sets with no `source`, so attributed to no item. */
|
|
102
|
+
unattributed: number;
|
|
103
|
+
}
|
|
104
|
+
/** A change set to attribute: one a pending or approved gate binds. */
|
|
105
|
+
export interface OverlapChangeSetRef {
|
|
106
|
+
digest: string;
|
|
107
|
+
/** A directory whose ledger stores it: the member's directory. */
|
|
108
|
+
cwd: string;
|
|
109
|
+
ledgerMember: string | null;
|
|
110
|
+
/** The commit the gate was reached at, when the pending fact records one. */
|
|
111
|
+
gitSha: string | null;
|
|
112
|
+
}
|
|
113
|
+
/** Reads a stored change set; the lifecycle store unless a test swaps it. */
|
|
114
|
+
export type StoredChangeSetReader = (digest: string, cwd: string) => Promise<ChangeSetDocument | null>;
|
|
115
|
+
/**
|
|
116
|
+
* The non-merge commits on every local and remote-tracking branch and HEAD
|
|
117
|
+
* that carry a `Chant-Record` or `Chant-Lease` trailer, newest first. The
|
|
118
|
+
* ledger branches under `chant/` are left out.
|
|
119
|
+
*/
|
|
120
|
+
export declare function trailerCommits(top: string): string[];
|
|
121
|
+
/** The paths each commit adds, changes or deletes, from the repository root, renames read as a delete and an add. */
|
|
122
|
+
export declare function commitFiles(top: string, shas: string[]): Map<string, string[]>;
|
|
123
|
+
/**
|
|
124
|
+
* The work items a change-set entry is attributed to, sorted: each item with
|
|
125
|
+
* a linked commit that changed the entry's `source` and is in `within`, the
|
|
126
|
+
* history the change set was planned from (null when that is unknown, so
|
|
127
|
+
* every linked commit counts). An entry with no source has none.
|
|
128
|
+
*
|
|
129
|
+
* `commitsOf` maps each in-flight item to its linked commits, and `files`
|
|
130
|
+
* each commit to the paths it touches.
|
|
131
|
+
*/
|
|
132
|
+
export declare function attributeEntry(source: string | undefined, commitsOf: ReadonlyMap<string, readonly string[]>, files: ReadonlyMap<string, readonly string[]>, within: ReadonlySet<string> | null): string[];
|
|
133
|
+
/**
|
|
134
|
+
* The overlap report for the workspace declared at `root` in the repository
|
|
135
|
+
* at `top`. Null when the declaration names no work kind. Throws when a work
|
|
136
|
+
* kind or its records can't be read, or git fails; `workspace status` writes
|
|
137
|
+
* null then.
|
|
138
|
+
*/
|
|
139
|
+
export declare function readOverlap(input: {
|
|
140
|
+
declaration: Declaration;
|
|
141
|
+
root: string;
|
|
142
|
+
top: string;
|
|
143
|
+
changeSets: OverlapChangeSetRef[];
|
|
144
|
+
readChangeSet?: StoredChangeSetReader;
|
|
145
|
+
}): Promise<OverlapReport | null>;
|
|
146
|
+
//# sourceMappingURL=overlap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlap.d.ts","sourceRoot":"","sources":["../../src/workspace/overlap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Overlap between in-flight work items (#4025, policy from #4016).
|
|
3
|
+
*
|
|
4
|
+
* A work lease locks one item, and nothing compares two items with each
|
|
5
|
+
* other. This report does, after the fact: it says which in-flight work items
|
|
6
|
+
* changed the same files, and which entries of a planned change set more than
|
|
7
|
+
* one of them reaches. It never blocks anything. Two people or agents read it
|
|
8
|
+
* and sort the overlap out between them.
|
|
9
|
+
*
|
|
10
|
+
* ## In flight
|
|
11
|
+
*
|
|
12
|
+
* A work item is a current record of a declared work kind. It is in flight
|
|
13
|
+
* unless it implements at least one decision and every decision it implements
|
|
14
|
+
* is confirmed, as #4024 defines confirmed ({@link decisionConfirmed}: in one
|
|
15
|
+
* of the decision kind's closed states and superseded by nothing). The item's
|
|
16
|
+
* own state does not matter: work marked done whose decision is not settled
|
|
17
|
+
* can still collide.
|
|
18
|
+
*
|
|
19
|
+
* ## Linked commits
|
|
20
|
+
*
|
|
21
|
+
* The commits of a work item are the commits linked to it as #4029 defines
|
|
22
|
+
* linked ({@link judgeCommits}): a `Chant-Record: <work kind>:<id>` trailer,
|
|
23
|
+
* or a `Chant-Lease` trailer that resolves to the item. A window match does
|
|
24
|
+
* not link. The walk covers every local branch, every remote-tracking branch
|
|
25
|
+
* and HEAD, so work pushed to a branch and fetched shows before it is merged.
|
|
26
|
+
* The ledger branches under `chant/` hold no work and are left out. Merge
|
|
27
|
+
* commits carry no work of their own and are skipped. Nothing is fetched.
|
|
28
|
+
*
|
|
29
|
+
* ## Files
|
|
30
|
+
*
|
|
31
|
+
* An item's files are the paths its linked commits add, change or delete,
|
|
32
|
+
* from the repository root, with renames read as a delete and an add. Two
|
|
33
|
+
* items overlap by file when both touch one path.
|
|
34
|
+
*
|
|
35
|
+
* ## Change-set entries
|
|
36
|
+
*
|
|
37
|
+
* A change set is planned from many commits, and a release bundles many work
|
|
38
|
+
* items, so an entry belongs to no single item on its face. An entry is
|
|
39
|
+
* attributed to a work item when:
|
|
40
|
+
*
|
|
41
|
+
* 1. the entry has a `source`: the file that declares its graph node, from
|
|
42
|
+
* the repository root, recorded when the change set was stored
|
|
43
|
+
* (`../change-set-graph.ts`);
|
|
44
|
+
* 2. a commit linked to the item changed that file; and
|
|
45
|
+
* 3. that commit is in the history the change set was planned from: an
|
|
46
|
+
* ancestor of (or equal to) the commit its graph was read at, else the
|
|
47
|
+
* commit the gate was reached at. When neither is known, or the commit is
|
|
48
|
+
* not in this repository, the third test is skipped.
|
|
49
|
+
*
|
|
50
|
+
* An entry can be attributed to several items, and two items overlap by
|
|
51
|
+
* address when one entry is attributed to both. An entry with no `source`
|
|
52
|
+
* (stored by an older chant, mapped onto no node, or a node with no source
|
|
53
|
+
* location) is attributed to none and counted in `unattributed`.
|
|
54
|
+
*
|
|
55
|
+
* The change sets read are the ones `workspace status` lists on a gate that
|
|
56
|
+
* is pending or approved: the plans still waiting to apply.
|
|
57
|
+
*/
|
|
58
|
+
import { execFileSync } from "node:child_process";
|
|
59
|
+
import { dirname } from "node:path";
|
|
60
|
+
import { judgeCommits, hasLeaseLedger } from "./commit-links.js";
|
|
61
|
+
import { declaredRecordKinds } from "./declaration.js";
|
|
62
|
+
import { declaredKindFile } from "./declared-kinds.js";
|
|
63
|
+
import { decisionConfirmed } from "./flags.js";
|
|
64
|
+
import { loadRecordKind } from "./records.js";
|
|
65
|
+
import { readRecordsFor } from "./records-cli.js";
|
|
66
|
+
import { LEASE_TRAILER, RECORD_TRAILER } from "./trailers.js";
|
|
67
|
+
const defaultReadChangeSet = async (digest, cwd) => {
|
|
68
|
+
const { readStoredChangeSet } = await import("../lifecycle/change-set-store.js");
|
|
69
|
+
const read = await readStoredChangeSet(digest, { cwd });
|
|
70
|
+
return read.status === "found" ? read.document : null;
|
|
71
|
+
};
|
|
72
|
+
function git(top, args, input) {
|
|
73
|
+
return execFileSync("git", ["-c", "core.quotepath=off", ...args], {
|
|
74
|
+
cwd: top,
|
|
75
|
+
encoding: "utf-8",
|
|
76
|
+
stdio: [input === undefined ? "ignore" : "pipe", "pipe", "ignore"],
|
|
77
|
+
maxBuffer: 512 * 1024 * 1024,
|
|
78
|
+
...(input !== undefined ? { input } : {}),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/** The work items of every declared work kind, with the index commits are judged against and the ones in flight. */
|
|
82
|
+
async function readWorkItems(declaration, root, top) {
|
|
83
|
+
const kinds = new Map();
|
|
84
|
+
const inFlight = new Map();
|
|
85
|
+
for (const d of declaredRecordKinds(declaration)) {
|
|
86
|
+
const file = declaredKindFile(d, root);
|
|
87
|
+
const loaded = await loadRecordKind(file, root);
|
|
88
|
+
if (!loaded.kind.work)
|
|
89
|
+
continue;
|
|
90
|
+
const decisionKind = await loadRecordKind(loaded.kind.work.decisions, dirname(loaded.file));
|
|
91
|
+
const closed = new Set(decisionKind.kind.closedStates ?? []);
|
|
92
|
+
const read = await readRecordsFor({ kind: file, cwd: root });
|
|
93
|
+
const decisions = new Map((read.result.decisions ?? []).map((x) => [x.id, x]));
|
|
94
|
+
const ids = kinds.get(loaded.kind.name) ?? new Set();
|
|
95
|
+
for (const r of read.result.records) {
|
|
96
|
+
if (r.id === null)
|
|
97
|
+
continue;
|
|
98
|
+
ids.add(r.id);
|
|
99
|
+
if (r.supersededBy !== null)
|
|
100
|
+
continue;
|
|
101
|
+
const implemented = r.implements ?? [];
|
|
102
|
+
const settled = implemented.length > 0 && implemented.every((x) => decisionConfirmed(decisions.get(x.id), closed));
|
|
103
|
+
const key = `${loaded.kind.name}:${r.id}`;
|
|
104
|
+
if (!settled && !inFlight.has(key))
|
|
105
|
+
inFlight.set(key, { path: r.path, state: r.state });
|
|
106
|
+
}
|
|
107
|
+
kinds.set(loaded.kind.name, ids);
|
|
108
|
+
}
|
|
109
|
+
if (kinds.size === 0)
|
|
110
|
+
return null;
|
|
111
|
+
return { index: { kinds, ledger: hasLeaseLedger(top) }, inFlight };
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The non-merge commits on every local and remote-tracking branch and HEAD
|
|
115
|
+
* that carry a `Chant-Record` or `Chant-Lease` trailer, newest first. The
|
|
116
|
+
* ledger branches under `chant/` are left out.
|
|
117
|
+
*/
|
|
118
|
+
export function trailerCommits(top) {
|
|
119
|
+
let text;
|
|
120
|
+
try {
|
|
121
|
+
text = git(top, [
|
|
122
|
+
"log",
|
|
123
|
+
"--no-merges",
|
|
124
|
+
`--format=%H%x1f%(trailers:key=${RECORD_TRAILER},key=${LEASE_TRAILER},valueonly,separator=%x1e)%x1d`,
|
|
125
|
+
"--exclude=chant/*",
|
|
126
|
+
"--branches",
|
|
127
|
+
"--exclude=*/chant/*",
|
|
128
|
+
"--remotes",
|
|
129
|
+
"HEAD",
|
|
130
|
+
"--",
|
|
131
|
+
]);
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
// An unborn HEAD has no history to read.
|
|
135
|
+
return [];
|
|
136
|
+
}
|
|
137
|
+
const out = [];
|
|
138
|
+
for (const chunk of text.split("\x1d")) {
|
|
139
|
+
const [sha, trailers] = chunk.trim().split("\x1f");
|
|
140
|
+
if (sha && trailers && trailers.trim() !== "")
|
|
141
|
+
out.push(sha);
|
|
142
|
+
}
|
|
143
|
+
return out;
|
|
144
|
+
}
|
|
145
|
+
/** The paths each commit adds, changes or deletes, from the repository root, renames read as a delete and an add. */
|
|
146
|
+
export function commitFiles(top, shas) {
|
|
147
|
+
const out = new Map();
|
|
148
|
+
if (shas.length === 0)
|
|
149
|
+
return out;
|
|
150
|
+
const text = git(top, ["log", "--no-walk=unsorted", "--stdin", "--no-renames", "--name-only", "--format=%x1e%H"], `${shas.join("\n")}\n`);
|
|
151
|
+
for (const block of text.split("\x1e")) {
|
|
152
|
+
const lines = block.split("\n").map((l) => l.trim()).filter(Boolean);
|
|
153
|
+
if (lines.length === 0)
|
|
154
|
+
continue;
|
|
155
|
+
out.set(lines[0], lines.slice(1));
|
|
156
|
+
}
|
|
157
|
+
return out;
|
|
158
|
+
}
|
|
159
|
+
/** Every commit reachable from `rev`, or null when `rev` is not in the repository. */
|
|
160
|
+
function reachable(top, rev) {
|
|
161
|
+
try {
|
|
162
|
+
return new Set(git(top, ["rev-list", rev, "--"]).split("\n").filter(Boolean));
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const byString = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
|
|
169
|
+
/**
|
|
170
|
+
* The work items a change-set entry is attributed to, sorted: each item with
|
|
171
|
+
* a linked commit that changed the entry's `source` and is in `within`, the
|
|
172
|
+
* history the change set was planned from (null when that is unknown, so
|
|
173
|
+
* every linked commit counts). An entry with no source has none.
|
|
174
|
+
*
|
|
175
|
+
* `commitsOf` maps each in-flight item to its linked commits, and `files`
|
|
176
|
+
* each commit to the paths it touches.
|
|
177
|
+
*/
|
|
178
|
+
export function attributeEntry(source, commitsOf, files, within) {
|
|
179
|
+
if (source === undefined)
|
|
180
|
+
return [];
|
|
181
|
+
const out = [];
|
|
182
|
+
for (const [item, commits] of commitsOf) {
|
|
183
|
+
if (commits.some((sha) => (files.get(sha) ?? []).includes(source) && (within === null || within.has(sha))))
|
|
184
|
+
out.push(item);
|
|
185
|
+
}
|
|
186
|
+
return out.sort(byString);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* The overlap report for the workspace declared at `root` in the repository
|
|
190
|
+
* at `top`. Null when the declaration names no work kind. Throws when a work
|
|
191
|
+
* kind or its records can't be read, or git fails; `workspace status` writes
|
|
192
|
+
* null then.
|
|
193
|
+
*/
|
|
194
|
+
export async function readOverlap(input) {
|
|
195
|
+
const { top } = input;
|
|
196
|
+
const work = await readWorkItems(input.declaration, input.root, top);
|
|
197
|
+
if (work === null)
|
|
198
|
+
return null;
|
|
199
|
+
// The commits of each in-flight item, newest first.
|
|
200
|
+
const commitsOf = new Map();
|
|
201
|
+
if (work.inFlight.size > 0) {
|
|
202
|
+
const candidates = trailerCommits(top);
|
|
203
|
+
const links = judgeCommits(top, candidates, work.index);
|
|
204
|
+
for (const sha of candidates) {
|
|
205
|
+
for (const id of links.get(sha)?.ids ?? []) {
|
|
206
|
+
if (!work.inFlight.has(id))
|
|
207
|
+
continue;
|
|
208
|
+
const list = commitsOf.get(id) ?? [];
|
|
209
|
+
if (!list.includes(sha))
|
|
210
|
+
list.push(sha);
|
|
211
|
+
commitsOf.set(id, list);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const items = [...commitsOf.keys()].sort(byString);
|
|
216
|
+
const files = commitFiles(top, [...new Set([...commitsOf.values()].flat())]);
|
|
217
|
+
const filesOf = new Map(items.map((id) => [id, new Set(commitsOf.get(id).flatMap((sha) => files.get(sha) ?? []))]));
|
|
218
|
+
// Each change-set entry with a source, attributed to the items whose linked commits changed it within the change set's history.
|
|
219
|
+
const read = input.readChangeSet ?? defaultReadChangeSet;
|
|
220
|
+
const seen = new Set();
|
|
221
|
+
const changeSets = [];
|
|
222
|
+
let unattributed = 0;
|
|
223
|
+
const addressesOf = new Map();
|
|
224
|
+
const history = new Map();
|
|
225
|
+
for (const ref of input.changeSets) {
|
|
226
|
+
const key = `${ref.ledgerMember ?? ""}\0${ref.digest}`;
|
|
227
|
+
if (seen.has(key))
|
|
228
|
+
continue;
|
|
229
|
+
seen.add(key);
|
|
230
|
+
const doc = await read(ref.digest, ref.cwd);
|
|
231
|
+
if (doc === null)
|
|
232
|
+
continue;
|
|
233
|
+
if (!changeSets.includes(doc.digest))
|
|
234
|
+
changeSets.push(doc.digest);
|
|
235
|
+
const at = doc.graph?.at ?? ref.gitSha;
|
|
236
|
+
for (const e of doc.entries) {
|
|
237
|
+
if (e.source === undefined) {
|
|
238
|
+
unattributed++;
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
// Only an entry two items could share needs the change set's history.
|
|
242
|
+
if (attributeEntry(e.source, commitsOf, files, null).length < 2)
|
|
243
|
+
continue;
|
|
244
|
+
if (at && !history.has(at))
|
|
245
|
+
history.set(at, reachable(top, at));
|
|
246
|
+
const owners = attributeEntry(e.source, commitsOf, files, at ? history.get(at) : null);
|
|
247
|
+
if (owners.length < 2)
|
|
248
|
+
continue;
|
|
249
|
+
const address = { changeSet: doc.digest, ledgerMember: ref.ledgerMember, member: e.member, address: e.address, node: e.node ?? null, source: e.source };
|
|
250
|
+
for (const id of owners)
|
|
251
|
+
addressesOf.set(id, [...(addressesOf.get(id) ?? []), address]);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
changeSets.sort(byString);
|
|
255
|
+
const pairs = [];
|
|
256
|
+
for (let i = 0; i < items.length; i++) {
|
|
257
|
+
for (let j = i + 1; j < items.length; j++) {
|
|
258
|
+
const a = items[i];
|
|
259
|
+
const b = items[j];
|
|
260
|
+
const fb = filesOf.get(b);
|
|
261
|
+
const shared = [...filesOf.get(a)].filter((f) => fb.has(f)).sort(byString);
|
|
262
|
+
const ab = addressesOf.get(b) ?? [];
|
|
263
|
+
const addresses = (addressesOf.get(a) ?? [])
|
|
264
|
+
.filter((x) => ab.includes(x))
|
|
265
|
+
.sort((x, y) => byString(x.changeSet, y.changeSet) || byString(x.member, y.member) || byString(x.address, y.address));
|
|
266
|
+
if (shared.length > 0 || addresses.length > 0)
|
|
267
|
+
pairs.push({ items: [a, b], files: shared, addresses });
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
items: items.map((id) => ({ item: id, path: work.inFlight.get(id).path, state: work.inFlight.get(id).state, commits: commitsOf.get(id) })),
|
|
272
|
+
pairs,
|
|
273
|
+
changeSets,
|
|
274
|
+
unattributed,
|
|
275
|
+
};
|
|
276
|
+
}
|
|
@@ -49,6 +49,11 @@
|
|
|
49
49
|
"applied": { "type": "array", "items": { "type": "string" }, "description": "Components the earlier attempt applied, which this run did not run again." }
|
|
50
50
|
}
|
|
51
51
|
},
|
|
52
|
+
"deployedOutputs": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"description": "Added within contract version 1 by #4104, written by chant 0.124.30 and newer. Per dependency a member was planned against, the names of the outputs read from the deployed estate through its capability's outputs, sorted. A dependency outside the change is listed here too, and one whose stack is not deployed yet lists []. Outputs given with --seed-outputs, or carried from an earlier attempt's record, are not listed. Absent when no dependency was read, and on a resumed apply.",
|
|
55
|
+
"additionalProperties": { "type": "array", "items": { "type": "string" } }
|
|
56
|
+
},
|
|
52
57
|
"approval": {
|
|
53
58
|
"type": "object",
|
|
54
59
|
"required": ["status"],
|
|
@@ -80,6 +80,8 @@ export declare const REASONS: {
|
|
|
80
80
|
readonly "work-contract-unknown": "A work record names a contract that no record of its kind's contract kind has.";
|
|
81
81
|
readonly "work-contract-undecided": "A work record names a contract whose state is not approved, such as a draft.";
|
|
82
82
|
readonly "work-tier-unknown": "A work record names a builder tier that its kind's work.tier.tiers does not list.";
|
|
83
|
+
readonly "flag-work-unknown": "A flag record names a work item that no record of its kind's work kind has.";
|
|
84
|
+
readonly "flag-stale": "Every decision a flag's work item implements is confirmed, so the flag is due for removal. check reports it (WSP118).";
|
|
83
85
|
readonly "answer-points-unreadable": "The points file the answer kind names can't be read, or is not valid.";
|
|
84
86
|
readonly "answer-point-unknown": "The answer's point is not declared in the points file the answer kind names.";
|
|
85
87
|
readonly "answer-point-changed": "The point's declaration changed since the question was asked, so the answer is to an older version of the question.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reason-codes.d.ts","sourceRoot":"","sources":["../../src/workspace/reason-codes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reason-codes.d.ts","sourceRoot":"","sources":["../../src/workspace/reason-codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,6 +92,9 @@ export const REASONS = {
|
|
|
92
92
|
"work-contract-unknown": "A work record names a contract that no record of its kind's contract kind has.",
|
|
93
93
|
"work-contract-undecided": "A work record names a contract whose state is not approved, such as a draft.",
|
|
94
94
|
"work-tier-unknown": "A work record names a builder tier that its kind's work.tier.tiers does not list.",
|
|
95
|
+
// A feature flag that is valid but warned about (records, check, #4024).
|
|
96
|
+
"flag-work-unknown": "A flag record names a work item that no record of its kind's work kind has.",
|
|
97
|
+
"flag-stale": "Every decision a flag's work item implements is confirmed, so the flag is due for removal. check reports it (WSP118).",
|
|
95
98
|
// An answer to a decision point that is valid but warned about (records, points, ws-058, #2739).
|
|
96
99
|
"answer-points-unreadable": "The points file the answer kind names can't be read, or is not valid.",
|
|
97
100
|
"answer-point-unknown": "The answer's point is not declared in the points file the answer kind names.",
|
|
@@ -28,6 +28,7 @@ import type { RecordSource } from "./record-source.js";
|
|
|
28
28
|
import type { WorkspaceTree } from "./tree.js";
|
|
29
29
|
import type { DecisionWork, WorkAcceptance, WorkLink, WorkWarningCode } from "./work.js";
|
|
30
30
|
import type { AnswerWarningCode } from "./points.js";
|
|
31
|
+
import type { FlagState, FlagWarningCode } from "./flags.js";
|
|
31
32
|
/**
|
|
32
33
|
* Why one record is not valid. The list is closed: a reader may switch on it,
|
|
33
34
|
* and a new code is a contract change (#2536).
|
|
@@ -87,8 +88,8 @@ export interface VerdictAttestation {
|
|
|
87
88
|
key?: string;
|
|
88
89
|
}
|
|
89
90
|
export interface RecordWarning {
|
|
90
|
-
/** A work kind's records also carry the codes of `WORK_WARNING_CODES` (#2683), an answer kind's those of `ANSWER_WARNING_CODES` (#2739), and `records` adds `SEAL_WARNING_CODES` (#2688, #2878). */
|
|
91
|
-
code: RecordWarningCode | WorkWarningCode | SealWarningCode | AnswerWarningCode;
|
|
91
|
+
/** A work kind's records also carry the codes of `WORK_WARNING_CODES` (#2683), an answer kind's those of `ANSWER_WARNING_CODES` (#2739), a flag kind's those of `FLAG_WARNING_CODES` (#4024), and `records` adds `SEAL_WARNING_CODES` (#2688, #2878). */
|
|
92
|
+
code: RecordWarningCode | WorkWarningCode | SealWarningCode | AnswerWarningCode | FlagWarningCode;
|
|
92
93
|
message: string;
|
|
93
94
|
}
|
|
94
95
|
/**
|
|
@@ -202,6 +203,16 @@ export declare const recordKindSchema: z.ZodObject<{
|
|
|
202
203
|
answers: z.ZodOptional<z.ZodObject<{
|
|
203
204
|
points: z.ZodString;
|
|
204
205
|
}, z.core.$strict>>;
|
|
206
|
+
flag: z.ZodOptional<z.ZodObject<{
|
|
207
|
+
member: z.ZodString;
|
|
208
|
+
param: z.ZodString;
|
|
209
|
+
owner: z.ZodString;
|
|
210
|
+
values: z.ZodString;
|
|
211
|
+
work: z.ZodObject<{
|
|
212
|
+
field: z.ZodString;
|
|
213
|
+
kind: z.ZodString;
|
|
214
|
+
}, z.core.$strict>;
|
|
215
|
+
}, z.core.$strict>>;
|
|
205
216
|
seal: z.ZodOptional<z.ZodObject<{
|
|
206
217
|
field: z.ZodString;
|
|
207
218
|
}, z.core.$strict>>;
|
|
@@ -479,6 +490,8 @@ export interface RecordEntry {
|
|
|
479
490
|
acceptance?: WorkAcceptance | null;
|
|
480
491
|
/** For a work kind with a contract link (#3147): the contract record the item builds, with its state, or null when it names none. */
|
|
481
492
|
contract?: WorkLink | null;
|
|
493
|
+
/** For a flag kind (#4024): the work item the flag hides, the decisions it implements, and whether the flag is due for removal. */
|
|
494
|
+
flag?: FlagState;
|
|
482
495
|
}
|
|
483
496
|
export interface ReadRecordsOptions {
|
|
484
497
|
/** Where record paths are reported from, and what `source` reads relative to. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/workspace/records.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAyB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["../../src/workspace/records.ts"],"names":[],"mappings":"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"}
|
|
@@ -447,6 +447,31 @@ export const recordKindSchema = z
|
|
|
447
447
|
* Optional.
|
|
448
448
|
*/
|
|
449
449
|
answers: z.object({ points: z.string().min(1) }).strict().optional(),
|
|
450
|
+
/**
|
|
451
|
+
* A flag kind (#4024): each record is a feature flag, a workspace record
|
|
452
|
+
* a member's build reads as one build-time parameter. The block names the
|
|
453
|
+
* fields that hold the member whose parameter it sets, the parameter's
|
|
454
|
+
* name, the flag's owner and its value per environment, and the field
|
|
455
|
+
* naming the work item the flag hides, with that work kind's file
|
|
456
|
+
* (relative to this kind file). The record's id is the flag's name.
|
|
457
|
+
*
|
|
458
|
+
* With it, `chant build --env <env>` in that member resolves the
|
|
459
|
+
* parameter from the flag (`flag-params.ts`), `chant workspace status`
|
|
460
|
+
* lists the flag under the member's `featureFlags`, and `records` warns
|
|
461
|
+
* `flag-work-unknown` for a work item no record has and `flag-stale`
|
|
462
|
+
* when every decision the work item implements is confirmed, so the
|
|
463
|
+
* flag is due for removal (`check` WSP118). Optional.
|
|
464
|
+
*/
|
|
465
|
+
flag: z
|
|
466
|
+
.object({
|
|
467
|
+
member: z.string().min(1),
|
|
468
|
+
param: z.string().min(1),
|
|
469
|
+
owner: z.string().min(1),
|
|
470
|
+
values: z.string().min(1),
|
|
471
|
+
work: z.object({ field: z.string().min(1), kind: z.string().min(1) }).strict(),
|
|
472
|
+
})
|
|
473
|
+
.strict()
|
|
474
|
+
.optional(),
|
|
450
475
|
/**
|
|
451
476
|
* The top-level field that holds a closed record's seal (#2546, ws-003,
|
|
452
477
|
* ws-063): {@link recordSeal}, the whole-file JCS/SHA-256 of the record
|
|
@@ -516,6 +541,10 @@ export const recordKindSchema = z
|
|
|
516
541
|
.refine((k) => !k.work || (k.states !== undefined && k.states.includes(k.work.open) && k.states.includes(k.work.done)), {
|
|
517
542
|
message: "a work kind must have states, and its work open and done states must be listed in them",
|
|
518
543
|
path: ["work"],
|
|
544
|
+
})
|
|
545
|
+
.refine((k) => !k.flag || k.idField !== undefined, {
|
|
546
|
+
message: "a flag kind names its id with idField: a flag's id is its name, and a build finds it by that name",
|
|
547
|
+
path: ["flag"],
|
|
519
548
|
})
|
|
520
549
|
.refine((k) => !k.work?.acceptance || k.pins !== undefined, {
|
|
521
550
|
message: "a work kind with acceptance criteria must have pins: a criterion is met by the evidence in its pins field",
|
|
@@ -1335,6 +1364,9 @@ export async function readRecords(loaded, options) {
|
|
|
1335
1364
|
// An answer kind's points (ws-058): an answer whose point is gone or changed is warned about.
|
|
1336
1365
|
if (kind.answers)
|
|
1337
1366
|
(await import("./points.js")).applyAnswers(loaded, entries, options);
|
|
1367
|
+
// A flag kind's work item and whether the flag is due for removal (#4024).
|
|
1368
|
+
if (kind.flag)
|
|
1369
|
+
await (await import("./flags.js")).applyFlags(loaded, entries, options);
|
|
1338
1370
|
for (const e of entries)
|
|
1339
1371
|
e.valid = e.reasons.length === 0;
|
|
1340
1372
|
const records = options.current ? entries.filter((e) => e.supersededBy === null) : entries;
|