@kungfu-tech/buildchain 4.1.3-alpha.9 → 4.1.4-alpha.0
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/AGENTS.md +11 -13
- package/CONTRIBUTING.md +32 -9
- package/README.md +56 -140
- package/actions/release/promotion/ref/README.md +1 -1
- package/architecture/action-taxonomy.json +1 -1
- package/architecture/agent-change-map.md +32 -45
- package/architecture/build-orchestration.json +1 -1
- package/architecture/capability-state-machine-manifest.json +5 -5
- package/architecture/ci-lane-change-budget.json +92 -92
- package/architecture/code-layout.json +2 -12
- package/architecture/core-mechanisms.json +38 -39
- package/architecture/cross-platform-adopter-qualification.json +1 -1
- package/architecture/dev-delivery-orchestration.json +2 -2
- package/architecture/floating-consumer-policy.json +3 -3
- package/architecture/internal-capabilities.json +27 -28
- package/architecture/maintainability-debt.json +60 -94
- package/architecture/maintainability-policy.json +7 -13
- package/architecture/minimal-consumer-migration.json +43 -5014
- package/architecture/platform-stage-checkpoints.json +1 -1
- package/architecture/release-tail-contract.json +2 -2
- package/architecture/release-topology.json +33 -25
- package/architecture/stage-capsule-qualification.json +1 -1
- package/architecture/universal-workflow-bootstrap.json +60 -60
- package/architecture/universal-workflow-capability-policy.json +3 -3
- package/architecture/universal-workflow-fault-campaign.json +7 -7
- package/architecture/workflow-taxonomy.json +59 -60
- package/contracts/fixtures/v4-tail-reseal-v1/valid.json +1 -1
- package/dist/site/buildchain-contract.json +138 -66
- package/dist/site/buildchain-site.json +257 -331
- package/dist/site/capability-registry.json +4 -4
- package/dist/site/cli-registry.json +6 -142
- package/dist/site/controller-registry.json +19 -19
- package/dist/site/kfd-claims.json +481 -529
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +22 -22
- package/dist/site/node-api-registry.json +82 -339
- package/dist/site/page-registry.json +229 -304
- package/dist/site/public-surface-audit.json +544 -754
- package/dist/site/publication-authority-registry.json +316 -316
- package/dist/site/publication-registry.json +1 -1
- package/dist/site/site-manifest.json +23 -23
- package/dist/site/workflow-registry.json +1071 -1027
- package/docs/MAP.md +28 -20
- package/docs/auditable-demo.md +17 -49
- package/docs/bootstrap-recovery.md +46 -37
- package/docs/cli-reference.md +2 -46
- package/docs/cli.md +97 -186
- package/docs/code-organization.md +7 -5
- package/docs/dev-alpha-candidate-patrol.md +19 -42
- package/docs/dev-delivery-orchestration.md +15 -11
- package/docs/dev-delivery-qualification-landing-adr.md +10 -9
- package/docs/dev-delivery-warrant.md +17 -16
- package/docs/dev-qualification-patrol.md +25 -20
- package/docs/getting-started.md +80 -139
- package/docs/github-artifact-attestation.md +31 -81
- package/docs/install.md +66 -30
- package/docs/lifecycle-protocol.md +19 -57
- package/docs/migration-inventory.md +17 -45
- package/docs/next-development-transition.md +13 -13
- package/docs/node-api-reference.md +122 -138
- package/docs/oci-publication.md +13 -10
- package/docs/publication-artifacts.md +128 -486
- package/docs/publication-authority.md +15 -45
- package/docs/publish-transaction.md +13 -11
- package/docs/release-candidate.md +126 -355
- package/docs/release-discussions.md +36 -67
- package/docs/release-flow.md +80 -339
- package/docs/release-governance.md +114 -962
- package/docs/release-promotion-request.md +45 -43
- package/docs/release-propagation.md +13 -27
- package/docs/release-tail-provider-plane.md +38 -65
- package/docs/reusable-build-surface.md +78 -196
- package/docs/runtime-train-validation.md +8 -6
- package/docs/stable-candidate-patrol.md +13 -66
- package/docs/v4-adopter-delivery.md +15 -15
- package/docs/v4-declarative-release-tail-migration.md +19 -17
- package/docs/v4-production-release.md +11 -6
- package/docs/v4-publication-rehearsal.md +12 -27
- package/docs/v4-stage-capsule.md +14 -20
- package/docs/v4-tail-reseal.md +34 -20
- package/docs/web-surface-deployments.md +26 -264
- package/docs/workflow-catalog.md +31 -31
- package/docs/workflow-path-migration.md +10 -4
- package/package.json +5 -4
- package/packages/core/adoption/buildchain-kfd-claims.js +7 -7
- package/packages/core/adoption/cli/output.mjs +1 -9
- package/packages/core/adoption/cli/product-gate.mjs +1 -15
- package/packages/core/adoption/cli/project.mjs +9 -10
- package/packages/core/adoption/cli/standards.mjs +1 -14
- package/packages/core/adoption/cli/support.mjs +0 -2
- package/packages/core/adoption/cli/surface-register.mjs +0 -2
- package/packages/core/adoption/commands/init-repo.mjs +77 -485
- package/packages/core/adoption/consumer-init.js +279 -0
- package/packages/core/adoption/qualification/admission.js +1 -1
- package/packages/core/build/cli/cache.mjs +0 -2
- package/packages/core/build/cli/facts.mjs +0 -3
- package/packages/core/build/cli/homebrew.mjs +0 -4
- package/packages/core/build/cli/lifecycle.mjs +0 -3
- package/packages/core/build/github-artifact-attestation.js +2 -2
- package/packages/core/build/platform-stage-checkpoints.js +1 -1
- package/packages/core/build/signing/dispatch.js +1 -1
- package/packages/core/consumer/buildchain-config.js +9 -0
- package/packages/core/consumer/contract/inspection.js +351 -9
- package/packages/core/consumer/contract/javascript-syntax.js +439 -0
- package/packages/core/consumer/contract/javascript-values.js +61 -0
- package/packages/core/consumer/contract/javascript.js +555 -0
- package/packages/core/consumer/contract/local-validation.js +84 -0
- package/packages/core/contracts/buildchain-contract.js +39 -8
- package/packages/core/contracts/cli/introspection.mjs +1 -9
- package/packages/core/contracts/public-surface-cli.js +0 -1
- package/packages/core/dev-delivery/dev-delivery-contract-surface.js +2 -2
- package/packages/core/governance/buildchain-publication-authority.js +24 -24
- package/packages/core/governance/cli/doctor.mjs +58 -42
- package/packages/core/governance/commands/architecture.mjs +6 -1
- package/packages/core/governance/commands/audit-publication-control-plane.mjs +1 -1
- package/packages/core/governance/commands/workflow-friction-report.mjs +1 -1
- package/packages/core/governance/github-governance-authority.js +2 -2
- package/packages/core/governance/publication/collection.js +1 -1
- package/packages/core/index.js +1 -3
- package/packages/core/observability/cli/candidate.mjs +0 -2
- package/packages/core/observability/cli/context.mjs +0 -5
- package/packages/core/observability/cli/diagnostics.mjs +0 -7
- package/packages/core/observability/cli/events.mjs +2 -10
- package/packages/core/paper/commands/paper-work-fleet-cli.mjs +1 -1
- package/packages/core/paper/commands/paper.mjs +33 -422
- package/packages/core/paper/consumer-status.js +72 -0
- package/packages/core/paper/operations/identity.js +0 -3
- package/packages/core/paper/operations/migration.js +460 -0
- package/packages/core/paper/operations/preflight-checks.js +8 -68
- package/packages/core/paper/operations/scaffold.js +16 -326
- package/packages/core/paper/operations/status.js +27 -53
- package/packages/core/paper/paper-agent-entry.js +36 -147
- package/packages/core/paper/paper-fleet.js +24 -39
- package/packages/core/paper/paper-repository.js +16 -0
- package/packages/core/paper/paper-runtime-channels.js +1 -1
- package/packages/core/paper/paper-scaffold-content.js +153 -162
- package/packages/core/paper/paper-work.js +3 -10
- package/packages/core/paper/paper.js +43 -5
- package/packages/core/providers/github/artifact-attestation.js +1 -1
- package/packages/core/providers/github/pipeline-context-artifacts.js +172 -0
- package/packages/core/providers/github/pipeline-release-evidence.js +17 -98
- package/packages/core/providers/github/pipeline-stable-baseline.js +86 -0
- package/packages/core/providers/github/pipeline-stable-source.js +22 -4
- package/packages/core/providers/github/release-evidence-assets.js +97 -0
- package/packages/core/publication/authority/control-plane.js +2 -2
- package/packages/core/publication/authority/seal.js +1 -1
- package/packages/core/publication/cli/dispatch.mjs +1 -12
- package/packages/core/publication/pipeline/actions.js +16 -9
- package/packages/core/publication/pipeline/apply.js +17 -9
- package/packages/core/publication/pipeline/context.js +29 -0
- package/packages/core/publication/pipeline/journal.js +13 -1
- package/packages/core/publication/pipeline/prepare.js +15 -6
- package/packages/core/publication/pipeline/recovery-import.js +1 -1
- package/packages/core/publication/pipeline/recovery-materials.js +63 -1
- package/packages/core/publication/pipeline/recovery-prepare.js +21 -9
- package/packages/core/publication/pipeline/stable-entry.js +12 -3
- package/packages/core/publication/pipeline/stable-products.js +21 -19
- package/packages/core/publication/pipeline/version-actions.js +15 -6
- package/packages/core/publication/publication-rehearsal-projection.js +0 -9
- package/packages/core/release/cli/dispatch.mjs +1 -4
- package/packages/core/release/cli/inspection-handlers.mjs +1 -33
- package/packages/core/release/cli/release-handlers.mjs +2 -19
- package/packages/core/release/cli/verification-handlers.mjs +4 -25
- package/packages/core/release/next-development-projection.js +13 -13
- package/packages/core/release/passport/locations.js +13 -8
- package/packages/core/release/release-passport.js +70 -5
- package/packages/core/web/cli/badges.mjs +0 -4
- package/packages/core/web/publication-admission.js +1 -1
- package/packages/core/web/publication-capability.js +1 -1
- package/packages/core/web/readme-badges.js +1 -1
- package/packages/core/workflow/cli/main.mjs +1 -4
- package/packages/core/workflow/cli/process.mjs +1 -1
- package/packages/core/workflow/commands/buildchain-cli-help.mjs +2 -8
- package/packages/core/workflow/engine/conformance.js +1 -1
- package/packages/core/workflow/pipeline/build.js +21 -1
- package/packages/core/workflow/pipeline/delivery-observation.js +6 -2
- package/packages/core/workflow/workflow-taxonomy.mjs +61 -17
- package/scripts/check-code-layout.mjs +2 -0
- package/scripts/check-core-mechanism-inventory.mjs +29 -13
- package/scripts/check-floating-consumer-policy-contract.mjs +3 -3
- package/scripts/check-inventory.mjs +27 -27
- package/scripts/check-maintainability.mjs +28 -5
- package/scripts/check-public-dogfood-contract.mjs +3 -3
- package/scripts/check-release-topology.mjs +1 -1
- package/scripts/check-self-consumer-contract.mjs +7 -7
- package/scripts/check-universal-workflow-bootstrap.mjs +1 -1
- package/scripts/generate-channel-promotion-workflow.mjs +1 -1
- package/scripts/generate-minimal-consumer-contract.mjs +21 -1
- package/scripts/generate-site-bundle.mjs +2 -1
- package/scripts/generate-tail-reseal-fixture.mjs +3 -3
- package/scripts/inventory/promotion.mjs +1 -1
- package/scripts/next-development-self-dogfood-harness.mjs +1 -1
- package/scripts/next-development-self-dogfood.mjs +4 -4
- package/scripts/site-capability-metadata.mjs +2 -6
- package/scripts/source-metric-lineage.mjs +62 -7
- package/scripts/verify-golden-path.mjs +31 -35
- package/templates/native-dev-delivery.yml +1 -1
- package/templates/universal-buildchain-bootstrap.yml +1 -1
- package/packages/core/paper/operations/bootstrap.js +0 -75
- package/packages/core/paper/operations/plans.js +0 -213
- package/packages/core/paper/operations/provisioning.js +0 -113
- package/packages/core/paper/operations/scaffold-config.js +0 -77
- package/packages/core/paper/operations/scaffold-workflows.js +0 -116
- package/packages/core/paper/operations/workspace.js +0 -60
- package/packages/core/paper/paper-npm-bootstrap.js +0 -492
|
@@ -8,16 +8,23 @@ confidence: high
|
|
|
8
8
|
sensitivity: public
|
|
9
9
|
evidence_grade: A
|
|
10
10
|
review_state: unreviewed
|
|
11
|
-
last_reviewed: 2026-09-
|
|
11
|
+
last_reviewed: 2026-09-20
|
|
12
12
|
ai_provenance:
|
|
13
13
|
model_family: GPT-6
|
|
14
14
|
product: Codex
|
|
15
|
-
generated_at: 2026-09-
|
|
15
|
+
generated_at: 2026-09-20
|
|
16
16
|
invisible_context_boundary: No credentials, private logs, or unpublished deployment values are included.
|
|
17
|
+
visible_context: Current two-entry consumer contract and retained internal implementation references.
|
|
17
18
|
---
|
|
18
19
|
|
|
19
20
|
# Web-Surface Deployment Contract
|
|
20
21
|
|
|
22
|
+
This is a reference for the retained internal web deployment engine. It is not
|
|
23
|
+
schema-2 consumer onboarding: web is not an additional product type or public
|
|
24
|
+
reusable entry in the minimal contract. Current consumers use the shared
|
|
25
|
+
normal/recovery pair. The deployment configurations, request envelopes and
|
|
26
|
+
provider ports below belong to the internal engine or historical integrations.
|
|
27
|
+
|
|
21
28
|
Buildchain supports `project.type = "web-surface"` for repositories that publish
|
|
22
29
|
sites, docs, product pages, operator consoles, or browser apps. These projects
|
|
23
30
|
need auditable deployment semantics, but they are not package release lines and
|
|
@@ -179,18 +186,8 @@ Buildchain validates these hard constraints:
|
|
|
179
186
|
|
|
180
187
|
### Floating Runtime Contract Lock
|
|
181
188
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
```yaml
|
|
186
|
-
jobs:
|
|
187
|
-
web:
|
|
188
|
-
uses: kungfu-systems/buildchain/.github/workflows/public-release-web.yml@v4
|
|
189
|
-
with:
|
|
190
|
-
contract-lock: .buildchain/contract-lock.json
|
|
191
|
-
build-command: pnpm build
|
|
192
|
-
artifact-path: dist
|
|
193
|
-
```
|
|
189
|
+
The internal web component retains runtime-lock validation before build or
|
|
190
|
+
provider planning. It is not invoked through a separate consumer web caller.
|
|
194
191
|
|
|
195
192
|
The caller repository commits `.buildchain/contract-lock.json` after reviewing an
|
|
196
193
|
accepted Buildchain runtime SHA and contract digest. The reusable workflow then
|
|
@@ -737,259 +734,24 @@ cleanup can derive `pr-N` from `--pull-number`, records the event, source SHA,
|
|
|
737
734
|
actor, run id, preview bucket/prefix, manifest key, and adapter steps, and is an
|
|
738
735
|
auditable no-op when no aliases are requested.
|
|
739
736
|
|
|
740
|
-
##
|
|
741
|
-
|
|
742
|
-
Buildchain ships `.github/workflows/public-release-web.yml` for repositories that want
|
|
743
|
-
the standard PR review and promotion flow without copying bespoke glue:
|
|
744
|
-
|
|
745
|
-
```yaml
|
|
746
|
-
jobs:
|
|
747
|
-
web-surface:
|
|
748
|
-
uses: kungfu-systems/buildchain/.github/workflows/public-release-web.yml@v4
|
|
749
|
-
with:
|
|
750
|
-
build-command: npm run build
|
|
751
|
-
verify-command: npm run check
|
|
752
|
-
artifact-path: dist
|
|
753
|
-
```
|
|
754
|
-
|
|
755
|
-
The reusable workflow maps GitHub events to Buildchain web-surface semantics:
|
|
756
|
-
|
|
757
|
-
| Event | Buildchain behavior |
|
|
758
|
-
| --- | --- |
|
|
759
|
-
| `pull_request` opened / synchronized / reopened | validate, build, verify, and plan `preview` for `pr-N` |
|
|
760
|
-
| `pull_request` closed | plan apply-mode cleanup for the `pr-N` preview alias and manifest |
|
|
761
|
-
| `pull_request` closed for a matching release PR | verify the release intent, then wait for the protected `main` push; do not plan or apply production from `refs/pull/*/merge` |
|
|
762
|
-
| `push` to `main` | validate, build, verify, plan and apply `staging` from the merged `main` SHA, then optionally open a production release PR |
|
|
763
|
-
| `push` to `main` from a matching release PR merge | validate the associated release PR, plan `production`, and enter the configured GitHub Environment gate from the protected mainline ref |
|
|
764
|
-
| `workflow_dispatch` with `production-approved = true` | plan `production` and enter the configured GitHub Environment gate |
|
|
765
|
-
|
|
766
|
-
The optional `runtime-ref` parameter selects a transient execution runtime.
|
|
767
|
-
An empty value uses the selected consumer contract lock or entry default.
|
|
768
|
-
All preparation goes through the shared [Runtime entry](runtime-entry.md).
|
|
769
|
-
A maintainer can expose a manual input for train validation or repair:
|
|
770
|
-
|
|
771
|
-
```yaml
|
|
772
|
-
on:
|
|
773
|
-
workflow_dispatch:
|
|
774
|
-
inputs:
|
|
775
|
-
runtime-ref:
|
|
776
|
-
description: "Temporary Buildchain runtime ref for trusted manual validation"
|
|
777
|
-
required: false
|
|
778
|
-
default: ""
|
|
779
|
-
|
|
780
|
-
jobs:
|
|
781
|
-
web-surface:
|
|
782
|
-
uses: kungfu-systems/buildchain/.github/workflows/public-release-web.yml@v4
|
|
783
|
-
with:
|
|
784
|
-
runtime-ref: ${{ inputs.runtime-ref || '' }}
|
|
785
|
-
build-command: pnpm run build
|
|
786
|
-
verify-command: pnpm run check
|
|
787
|
-
artifact-path: dist
|
|
788
|
-
```
|
|
789
|
-
|
|
790
|
-
Only repository actors with write,
|
|
791
|
-
maintain, or admin permission may use a non-empty runtime override. Train refs
|
|
792
|
-
such as `train/v4/v4.1/site-source-of-truth` are temporary validation refs, not
|
|
793
|
-
stable production dependencies or pending merge targets. They may remain for a
|
|
794
|
-
retention window after release as a fast-use and rollback channel, with old
|
|
795
|
-
trains handled by periodic Buildchain cleanup. The web-surface deployment
|
|
796
|
-
manifest records the resolved runtime SHA as `runtimeId` and the stable
|
|
797
|
-
rollback ref as `rollbackPointer`.
|
|
798
|
-
|
|
799
|
-
The workflow deliberately plans and emits manifests by default. Live mutation is
|
|
800
|
-
opt-in per channel:
|
|
801
|
-
|
|
802
|
-
```yaml
|
|
803
|
-
permissions:
|
|
804
|
-
contents: read
|
|
805
|
-
id-token: write
|
|
806
|
-
pull-requests: write
|
|
807
|
-
|
|
808
|
-
jobs:
|
|
809
|
-
web-surface:
|
|
810
|
-
uses: kungfu-systems/buildchain/.github/workflows/public-release-web.yml@v4
|
|
811
|
-
with:
|
|
812
|
-
build-command: pnpm run build
|
|
813
|
-
verify-command: pnpm run check
|
|
814
|
-
artifact-path: dist
|
|
815
|
-
preview-apply: true
|
|
816
|
-
preview-cleanup-apply: true
|
|
817
|
-
preview-aws-role-arn: arn:aws:iam::123456789012:role/site-preview-github-actions
|
|
818
|
-
staging-apply: true
|
|
819
|
-
staging-aws-role-arn: arn:aws:iam::123456789012:role/site-staging-github-actions
|
|
820
|
-
production-apply: false
|
|
821
|
-
production-release-on-main: false
|
|
822
|
-
production-aws-role-arn: arn:aws:iam::123456789012:role/site-production-github-actions
|
|
823
|
-
production-environment: production
|
|
824
|
-
release-feedback-actor-privacy: public
|
|
825
|
-
```
|
|
826
|
-
|
|
827
|
-
When enabled, Buildchain owns the full release apply state machine:
|
|
828
|
-
|
|
829
|
-
- PR preview deploys run `deploy-apply --dry-run false` with the preview role
|
|
830
|
-
and update a single idempotent PR comment.
|
|
831
|
-
- Closed PR cleanup runs `cleanup-apply --dry-run false` with the preview role
|
|
832
|
-
only.
|
|
833
|
-
- Pushes to `main` run staging `deploy-apply --dry-run false` with the staging
|
|
834
|
-
role, then write a staging release feedback passport artifact and comment the
|
|
835
|
-
associated merged PR with the staging URL, source SHA, artifact identity, run
|
|
836
|
-
URL, and failure context when apply did not complete.
|
|
837
|
-
- When `production-release-on-main=true`, successful staging applies open or
|
|
838
|
-
update a Buildchain-owned release PR from
|
|
839
|
-
`release/<channel>-<short-sha>` to `main`, unless the current push already
|
|
840
|
-
came from a matching release PR merge. The release PR contains one empty
|
|
841
|
-
release-intent commit, carries `production-release-label`, and includes the
|
|
842
|
-
staging URLs, source SHA, artifact hash, and staging release-passport artifact
|
|
843
|
-
link in the PR body.
|
|
844
|
-
- Production release PR handoff is permission-aware. Staging apply and staging
|
|
845
|
-
health remain successful even when the repository or organization has
|
|
846
|
-
GitHub Actions workflow permissions set to read-only. In that case Buildchain
|
|
847
|
-
records `release-pr-status=permission-denied`, uploads the release PR handoff
|
|
848
|
-
summary/body plus staging release passport artifacts, and writes an exact
|
|
849
|
-
manual `gh pr create` command to the step summary. Set
|
|
850
|
-
`fail-on-release-pr-error=true` only when PR creation failure should fail the
|
|
851
|
-
whole workflow.
|
|
852
|
-
- Release pull requests that match the configured production gate get a
|
|
853
|
-
Buildchain review comment with the staging URL and production target, so the
|
|
854
|
-
operator can verify staging from the PR page and use merge as the approval
|
|
855
|
-
action. Consumers do not need to hand-write `gh pr create` or production
|
|
856
|
-
release-intent glue.
|
|
857
|
-
- `production-apply=true` enables the production capability; it does not request
|
|
858
|
-
production for every event. Ordinary `main` pushes remain staging-only and
|
|
859
|
-
can create or update a release PR. Production runs only when the capability
|
|
860
|
-
is enabled and either:
|
|
861
|
-
- a `workflow_dispatch` passes `production-approved=true` and the triggering
|
|
862
|
-
actor currently has `write`, `maintain`, or `admin` permission; or
|
|
863
|
-
- `production-release-on-main=true` and the `main` push commit is associated
|
|
864
|
-
with exactly one same-repository, merged release pull request matching
|
|
865
|
-
`production-release-label` and `production-release-head-prefix`.
|
|
866
|
-
The production job is then gated by the configured GitHub Environment.
|
|
867
|
-
- Before production artifact download, Buildchain assembles a managed sealed
|
|
868
|
-
publication capability from the exact source/runtime SHAs, production plan
|
|
869
|
-
and artifact hash, a qualifying pre-publication controller receipt, the
|
|
870
|
-
trusted manual or reviewed-release-PR decision, production Environment and
|
|
871
|
-
AWS role target, an ephemeral-runner receipt, and a fresh nonce. Production
|
|
872
|
-
revalidates that capability against the downloaded plan before it downloads
|
|
873
|
-
product bytes. The later AWS OIDC exchange remains the provider's final
|
|
874
|
-
transaction-time authorization decision and fails closed before deploy apply.
|
|
875
|
-
- The `publication-*-json` inputs are an advanced external-evidence
|
|
876
|
-
compatibility path, not a prerequisite for the standard release-PR or trusted
|
|
877
|
-
manual mechanisms. External evidence must now include
|
|
878
|
-
`publication-gate-aggregate-json`; supplying only a partial set still fails
|
|
879
|
-
closed.
|
|
880
|
-
- Production apply writes a production release feedback passport artifact and
|
|
881
|
-
comments the release PR with the production URL, source SHA, artifact
|
|
882
|
-
identity, run URL, rollback pointer, and failure context when apply did not
|
|
883
|
-
complete.
|
|
884
|
-
|
|
885
|
-
The feedback passport records the release responsibility chain:
|
|
886
|
-
|
|
887
|
-
- human decision actor;
|
|
888
|
-
- trigger actor;
|
|
889
|
-
- runner/execution actor;
|
|
890
|
-
- OIDC/deploy identity reference;
|
|
891
|
-
- decision type and time;
|
|
892
|
-
- source event, PR number, merge commit, and required gate label/head-prefix.
|
|
893
|
-
|
|
894
|
-
`release-feedback-actor-privacy` controls actor values in the passport and
|
|
895
|
-
comments. `public` records GitHub actor names, `redacted` records only the actor
|
|
896
|
-
role, and `private-ref` records a stable private reference hash without exposing
|
|
897
|
-
the actor name.
|
|
898
|
-
|
|
899
|
-
For release-PR publishing, callers opt in explicitly:
|
|
900
|
-
|
|
901
|
-
```yaml
|
|
902
|
-
jobs:
|
|
903
|
-
web-surface:
|
|
904
|
-
uses: kungfu-systems/buildchain/.github/workflows/public-release-web.yml@v4
|
|
905
|
-
with:
|
|
906
|
-
build-command: npm run build
|
|
907
|
-
verify-command: npm run check
|
|
908
|
-
artifact-path: dist
|
|
909
|
-
production-apply: true
|
|
910
|
-
production-release-on-main: true
|
|
911
|
-
production-release-label: buildchain-release
|
|
912
|
-
production-release-head-prefix: release/
|
|
913
|
-
production-release-branch-channel: production
|
|
914
|
-
production-release-pr-mode: auto
|
|
915
|
-
production-aws-role-arn: arn:aws:iam::123456789012:role/site-production-github-actions
|
|
916
|
-
production-environment: production
|
|
917
|
-
```
|
|
918
|
-
|
|
919
|
-
Keep `production-apply` enabled in the caller when the repository supports
|
|
920
|
-
production. Buildchain derives whether the current event may use that
|
|
921
|
-
capability: an ordinary `main` push plans and applies staging, a matching
|
|
922
|
-
reviewed release PR merge authorizes production, and an approved trusted manual
|
|
923
|
-
dispatch authorizes production. Inputs from an untrusted event cannot turn that
|
|
924
|
-
decision on.
|
|
925
|
-
|
|
926
|
-
`production-release-pr-mode` controls the post-staging handoff:
|
|
737
|
+
## Internal workflow authority
|
|
927
738
|
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
Automatic release PR creation normally uses the workflow `github.token`.
|
|
935
|
-
Consumers that cannot enable "GitHub Actions can create and approve pull
|
|
936
|
-
requests" globally should prefer the first-class GitHub App path. Pass the App
|
|
937
|
-
client id as an input and the private key as a reusable workflow secret; Buildchain
|
|
938
|
-
creates an installation token inside the release PR job and uses it only for the
|
|
939
|
-
release-intent branch, PR, and label operations:
|
|
940
|
-
|
|
941
|
-
```yaml
|
|
942
|
-
with:
|
|
943
|
-
production-release-app-client-id: ${{ vars.KUNGFU_RELEASE_APP_CLIENT_ID }}
|
|
944
|
-
secrets:
|
|
945
|
-
production-release-app-private-key: ${{ secrets.KUNGFU_RELEASE_APP_PRIVATE_KEY }}
|
|
946
|
-
```
|
|
947
|
-
|
|
948
|
-
When either side of the App configuration is missing, Buildchain does not hide
|
|
949
|
-
that behind the fallback `github.token`. The handoff JSON and job summary report
|
|
950
|
-
`status: "app-token-unavailable"` with an `appTokenStatus` such as
|
|
951
|
-
`missing-client-id`, `missing-private-key`, or `create-failed`, and still include
|
|
952
|
-
the manual PR creation command. If the repository intentionally uses another
|
|
953
|
-
narrow token, pass it through `production-release-pr-token`.
|
|
739
|
+
`.release-web.yml` retains the web engine's job and credential boundaries.
|
|
740
|
+
It is an internal component, without a public product-specific alias. Its source,
|
|
741
|
+
artifact, runtime, deployment-plan and environment ports must come from admitted
|
|
742
|
+
runtime state; consumers do not write a third web workflow or pass these ports
|
|
743
|
+
through their generated normal/recovery pair.
|
|
954
744
|
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
production-release-pr-token: ${{ secrets.BUILDCHAIN_RELEASE_PR_TOKEN }}
|
|
961
|
-
```
|
|
745
|
+
Preview, staging and production keep separate provider permissions and evidence.
|
|
746
|
+
Production requires exact source/artifact identity and independent admission;
|
|
747
|
+
untrusted event inputs cannot grant provider mutation. A successful staging
|
|
748
|
+
receipt does not prove production, and an API response does not replace provider
|
|
749
|
+
readback. Provider failures preserve the previously valid public authority.
|
|
962
750
|
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
release label and comes from the configured source-branch prefix. Ordinary pull
|
|
968
|
-
requests merged into `main` deploy staging and open a release-intent PR; merging
|
|
969
|
-
that release PR triggers production. A release PR merge push does not open
|
|
970
|
-
another release PR.
|
|
971
|
-
|
|
972
|
-
Apply-only inputs are validated before the caller build or verification command
|
|
973
|
-
runs. If the current event would run preview, staging, or production apply,
|
|
974
|
-
missing role inputs, a production apply without `production-approved=true` on
|
|
975
|
-
manual dispatch, or a manual actor without repository write authority fail
|
|
976
|
-
immediately instead of spending the build and plan jobs first.
|
|
977
|
-
|
|
978
|
-
Callers must grant `id-token: write` for OIDC role assumption. Preview comments
|
|
979
|
-
need `pull-requests: write`. Automatic release PR creation also needs
|
|
980
|
-
`contents: write`, `pull-requests: write`, and `issues: write` so Buildchain can
|
|
981
|
-
create the release branch, write the empty release-intent commit, open or update
|
|
982
|
-
the PR, and apply the release label. If these permissions are unavailable,
|
|
983
|
-
Buildchain degrades the release handoff instead of marking a successful staging
|
|
984
|
-
deployment as failed, unless `fail-on-release-pr-error=true`. The AWS roles remain caller-owned and
|
|
985
|
-
should be scoped by channel: preview can mutate only preview resources, staging
|
|
986
|
-
can mutate only staging resources, and production can mutate only production
|
|
987
|
-
resources.
|
|
988
|
-
|
|
989
|
-
Apply mode fails closed when the deploy config still contains placeholder AWS
|
|
990
|
-
targets such as `pending-preview-distribution`. Planning can use placeholders
|
|
991
|
-
for dry-run-only design work, but live apply requires concrete bucket and
|
|
992
|
-
CloudFront distribution identifiers.
|
|
751
|
+
The component's historical release-PR, cleanup and feedback mechanisms remain
|
|
752
|
+
internal implementation contracts. Their workflow inputs are not schema-2 TOML
|
|
753
|
+
fields or recommended consumer setup. Provider configuration still requires its
|
|
754
|
+
own explicit authority and cannot be inferred from product metadata or evidence.
|
|
993
755
|
|
|
994
756
|
## Site Repository Shape
|
|
995
757
|
|
package/docs/workflow-catalog.md
CHANGED
|
@@ -21,9 +21,9 @@ ai_provenance:
|
|
|
21
21
|
|
|
22
22
|
Generated from `architecture/workflow-taxonomy.json`. Every workflow has one canonical implementation; alternate paths and historical forwarding aliases are rejected.
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
The two public workflows own normal pipeline execution and exact-attempt recovery. Component workflows are internal runtime implementation, including once-only setup and the dispatch signing service; consumers do not wire these components. Self workflows are the generated consumer pair. Actions own execution steps; JS adapters and Rust/WASM own implementation.
|
|
25
25
|
|
|
26
|
-
Names use `public
|
|
26
|
+
Names use `public-ops-pipeline.yml`, `public-ops-recover.yml`, internal `.<category>-<purpose>.yml`, and the generated self callers `buildchain.yml` and `buildchain-recover.yml`. Categories are `build`, `release`, and `ops`; the internal build engine retains `.build.yml`.
|
|
27
27
|
|
|
28
28
|
Register ownership before adding a workflow. `pnpm run check:workflows` validates source, calls, required CI integration and independent review ownership. `pnpm run generate:workflows` regenerates this catalog.
|
|
29
29
|
|
|
@@ -31,53 +31,53 @@ Register ownership before adding a workflow. `pnpm run check:workflows` validate
|
|
|
31
31
|
|
|
32
32
|
| Workflow | Category | Invocation | Status | Purpose |
|
|
33
33
|
| --- | --- | --- | --- | --- |
|
|
34
|
-
| [build.yml](../.github/workflows/build.yml) | build | reusable | active | Buildchain Channel Build |
|
|
35
|
-
| [public-build-adopter-qualification.yml](../.github/workflows/public-build-adopter-qualification.yml) | build | reusable | active | V4 Adopter Delivery |
|
|
36
|
-
| [public-build-check.yml](../.github/workflows/public-build-check.yml) | build | reusable | active | Buildchain Check |
|
|
37
|
-
| [public-build-demo.yml](../.github/workflows/public-build-demo.yml) | build | reusable | active | Buildchain Declarative Binary Auditable Demo |
|
|
38
|
-
| [public-build-publication.yml](../.github/workflows/public-build-publication.yml) | build | reusable | active | Buildchain Publication Artifact |
|
|
39
|
-
| [public-build-stage-capsule-canary.yml](../.github/workflows/public-build-stage-capsule-canary.yml) | build | reusable | active | V4 Stage Capsule Canary |
|
|
40
|
-
| [public-ops-alpha-candidate-patrol.yml](../.github/workflows/public-ops-alpha-candidate-patrol.yml) | ops | reusable | active | Buildchain Dev to Alpha Candidate Patrol |
|
|
41
|
-
| [public-ops-bootstrap.yml](../.github/workflows/public-ops-bootstrap.yml) | ops | reusable | active | Buildchain Universal Bootstrap |
|
|
42
|
-
| [public-ops-dev-auto-merge.yml](../.github/workflows/public-ops-dev-auto-merge.yml) | ops | reusable | active | Dev PR Auto Merge |
|
|
43
|
-
| [public-ops-dev-qualification-patrol.yml](../.github/workflows/public-ops-dev-qualification-patrol.yml) | ops | reusable | active | Buildchain Dev Qualification Patrol |
|
|
44
|
-
| [public-ops-housekeeping.yml](../.github/workflows/public-ops-housekeeping.yml) | ops | reusable | active | Engineering Housekeeper |
|
|
45
|
-
| [public-ops-observed-evidence.yml](../.github/workflows/public-ops-observed-evidence.yml) | ops | reusable | active | Patrol Observed Evidence |
|
|
46
|
-
| [public-ops-patrol-daily.yml](../.github/workflows/public-ops-patrol-daily.yml) | ops | reusable | active | Buildchain Patrol Daily |
|
|
47
|
-
| [public-ops-patrol-monthly.yml](../.github/workflows/public-ops-patrol-monthly.yml) | ops | reusable | active | Buildchain Patrol Monthly |
|
|
48
|
-
| [public-ops-patrol-weekly.yml](../.github/workflows/public-ops-patrol-weekly.yml) | ops | reusable | active | Buildchain Patrol Weekly |
|
|
49
|
-
| [public-ops-patrol.yml](../.github/workflows/public-ops-patrol.yml) | ops | reusable | active | Buildchain Patrol |
|
|
50
34
|
| [public-ops-pipeline.yml](../.github/workflows/public-ops-pipeline.yml) | ops | reusable | active | Buildchain pipeline |
|
|
51
35
|
| [public-ops-recover.yml](../.github/workflows/public-ops-recover.yml) | ops | reusable | active | Buildchain recovery |
|
|
52
|
-
| [public-ops-release-governance.yml](../.github/workflows/public-ops-release-governance.yml) | ops | reusable | active | Release Governance Reconcile |
|
|
53
|
-
| [public-ops-stable-candidate-patrol.yml](../.github/workflows/public-ops-stable-candidate-patrol.yml) | ops | reusable | active | Buildchain Stable Candidate Patrol |
|
|
54
|
-
| [public-ops-tail-reseal.yml](../.github/workflows/public-ops-tail-reseal.yml) | ops | reusable | active | V4 Retained Candidate Tail Reseal |
|
|
55
|
-
| [public-ops-warrant-cancel.yml](../.github/workflows/public-ops-warrant-cancel.yml) | ops | reusable | active | Dev Delivery Warrant Queued Candidate Cancel |
|
|
56
|
-
| [public-ops-warrant-close.yml](../.github/workflows/public-ops-warrant-close.yml) | ops | reusable | active | Dev Delivery Warrant Close |
|
|
57
|
-
| [public-release-artifact-attestation.yml](../.github/workflows/public-release-artifact-attestation.yml) | release | reusable | active | Buildchain GitHub Artifact Attestation |
|
|
58
|
-
| [public-release-oci-compose-preview.yml](../.github/workflows/public-release-oci-compose-preview.yml) | release | reusable | active | Buildchain OCI Compose Preview |
|
|
59
|
-
| [public-release-paper.yml](../.github/workflows/public-release-paper.yml) | release | reusable | active | Buildchain Paper Release |
|
|
60
|
-
| [public-release-promote.yml](../.github/workflows/public-release-promote.yml) | release | reusable | active | Release Candidate Promote |
|
|
61
|
-
| [public-release-propagation.yml](../.github/workflows/public-release-propagation.yml) | release | reusable | active | Release Propagation |
|
|
62
|
-
| [public-release-signing-authority.yml](../.github/workflows/public-release-signing-authority.yml) | release | dispatch-service | active | Buildchain Artifact Signing Authority |
|
|
63
|
-
| [public-release-tail.yml](../.github/workflows/public-release-tail.yml) | release | reusable | active | Declarative Release Tail |
|
|
64
|
-
| [public-release-web.yml](../.github/workflows/public-release-web.yml) | release | reusable | active | Buildchain Web Surface |
|
|
65
36
|
|
|
66
37
|
## component
|
|
67
38
|
|
|
68
39
|
| Workflow | Category | Invocation | Status | Purpose |
|
|
69
40
|
| --- | --- | --- | --- | --- |
|
|
41
|
+
| [.build-adopter-qualification.yml](../.github/workflows/.build-adopter-qualification.yml) | build | reusable | active | V4 Adopter Delivery |
|
|
42
|
+
| [.build-candidate.yml](../.github/workflows/.build-candidate.yml) | build | reusable | active | Buildchain Channel Build |
|
|
43
|
+
| [.build-check.yml](../.github/workflows/.build-check.yml) | build | reusable | active | Buildchain Check |
|
|
70
44
|
| [.build-demo-adapter.yml](../.github/workflows/.build-demo-adapter.yml) | build | reusable | active | Buildchain Auditable Demo |
|
|
45
|
+
| [.build-demo.yml](../.github/workflows/.build-demo.yml) | build | reusable | active | Buildchain Declarative Binary Auditable Demo |
|
|
71
46
|
| [.build-gate-profile.yml](../.github/workflows/.build-gate-profile.yml) | build | reusable | active | Buildchain Shifu Gate Profile |
|
|
47
|
+
| [.build-publication.yml](../.github/workflows/.build-publication.yml) | build | reusable | active | Buildchain Publication Artifact |
|
|
48
|
+
| [.build-stage-capsule-canary.yml](../.github/workflows/.build-stage-capsule-canary.yml) | build | reusable | active | V4 Stage Capsule Canary |
|
|
72
49
|
| [.build.yml](../.github/workflows/.build.yml) | build | reusable | active | Buildchain Build |
|
|
50
|
+
| [.ops-alpha-candidate-patrol.yml](../.github/workflows/.ops-alpha-candidate-patrol.yml) | ops | reusable | active | Buildchain Dev to Alpha Candidate Patrol |
|
|
51
|
+
| [.ops-bootstrap.yml](../.github/workflows/.ops-bootstrap.yml) | ops | reusable | active | Buildchain Universal Bootstrap |
|
|
52
|
+
| [.ops-dev-auto-merge.yml](../.github/workflows/.ops-dev-auto-merge.yml) | ops | reusable | active | Dev PR Auto Merge |
|
|
53
|
+
| [.ops-dev-qualification-patrol.yml](../.github/workflows/.ops-dev-qualification-patrol.yml) | ops | reusable | active | Buildchain Dev Qualification Patrol |
|
|
73
54
|
| [.ops-git-sync.yml](../.github/workflows/.ops-git-sync.yml) | ops | reusable | active | sync remote git |
|
|
55
|
+
| [.ops-housekeeping.yml](../.github/workflows/.ops-housekeeping.yml) | ops | reusable | active | Engineering Housekeeper |
|
|
56
|
+
| [.ops-observed-evidence.yml](../.github/workflows/.ops-observed-evidence.yml) | ops | reusable | active | Patrol Observed Evidence |
|
|
57
|
+
| [.ops-patrol-daily.yml](../.github/workflows/.ops-patrol-daily.yml) | ops | reusable | active | Buildchain Patrol Daily |
|
|
58
|
+
| [.ops-patrol-monthly.yml](../.github/workflows/.ops-patrol-monthly.yml) | ops | reusable | active | Buildchain Patrol Monthly |
|
|
59
|
+
| [.ops-patrol-weekly.yml](../.github/workflows/.ops-patrol-weekly.yml) | ops | reusable | active | Buildchain Patrol Weekly |
|
|
60
|
+
| [.ops-patrol.yml](../.github/workflows/.ops-patrol.yml) | ops | reusable | active | Buildchain Patrol |
|
|
74
61
|
| [.ops-pipeline-delivery.yml](../.github/workflows/.ops-pipeline-delivery.yml) | ops | reusable | active | Internal pipeline delivery |
|
|
75
62
|
| [.ops-pipeline-execute.yml](../.github/workflows/.ops-pipeline-execute.yml) | ops | reusable | active | Internal pipeline execution |
|
|
63
|
+
| [.ops-release-governance.yml](../.github/workflows/.ops-release-governance.yml) | ops | reusable | active | Release Governance Reconcile |
|
|
64
|
+
| [.ops-stable-candidate-patrol.yml](../.github/workflows/.ops-stable-candidate-patrol.yml) | ops | reusable | active | Buildchain Stable Candidate Patrol |
|
|
65
|
+
| [.ops-tail-reseal.yml](../.github/workflows/.ops-tail-reseal.yml) | ops | reusable | active | V4 Retained Candidate Tail Reseal |
|
|
66
|
+
| [.ops-warrant-cancel.yml](../.github/workflows/.ops-warrant-cancel.yml) | ops | reusable | active | Dev Delivery Warrant Queued Candidate Cancel |
|
|
67
|
+
| [.ops-warrant-close.yml](../.github/workflows/.ops-warrant-close.yml) | ops | reusable | active | Dev Delivery Warrant Close |
|
|
68
|
+
| [.release-artifact-attestation.yml](../.github/workflows/.release-artifact-attestation.yml) | release | reusable | active | Buildchain GitHub Artifact Attestation |
|
|
76
69
|
| [.release-authority.yml](../.github/workflows/.release-authority.yml) | release | reusable | active | Buildchain Sealed Publication Authority |
|
|
77
70
|
| [.release-binary-assets.yml](../.github/workflows/.release-binary-assets.yml) | release | reusable | active | Buildchain Binary Release Assets |
|
|
71
|
+
| [.release-candidate-promote.yml](../.github/workflows/.release-candidate-promote.yml) | release | reusable | active | Release Candidate Promote |
|
|
72
|
+
| [.release-oci-compose-preview.yml](../.github/workflows/.release-oci-compose-preview.yml) | release | reusable | active | Buildchain OCI Compose Preview |
|
|
73
|
+
| [.release-paper.yml](../.github/workflows/.release-paper.yml) | release | reusable | active | Buildchain Paper Release |
|
|
78
74
|
| [.release-pipeline-products.yml](../.github/workflows/.release-pipeline-products.yml) | release | reusable | active | Internal pipeline product publication |
|
|
79
75
|
| [.release-pipeline-version.yml](../.github/workflows/.release-pipeline-version.yml) | release | reusable | active | Internal pipeline version preparation |
|
|
80
76
|
| [.release-promote.yml](../.github/workflows/.release-promote.yml) | release | reusable | active | Release Candidate Promote Advanced |
|
|
77
|
+
| [.release-propagation.yml](../.github/workflows/.release-propagation.yml) | release | reusable | active | Release Propagation |
|
|
78
|
+
| [.release-signing-authority.yml](../.github/workflows/.release-signing-authority.yml) | release | dispatch-service | active | Buildchain Artifact Signing Authority |
|
|
79
|
+
| [.release-tail.yml](../.github/workflows/.release-tail.yml) | release | reusable | active | Declarative Release Tail |
|
|
80
|
+
| [.release-web.yml](../.github/workflows/.release-web.yml) | release | reusable | active | Buildchain Web Surface |
|
|
81
81
|
|
|
82
82
|
## self
|
|
83
83
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
status:
|
|
2
|
+
status: historical
|
|
3
3
|
period: ongoing
|
|
4
4
|
theme: workflow-path-migration
|
|
5
5
|
doc_type: migration-guide
|
|
@@ -8,22 +8,28 @@ confidence: high
|
|
|
8
8
|
sensitivity: public
|
|
9
9
|
evidence_grade: B
|
|
10
10
|
review_state: unreviewed
|
|
11
|
-
last_reviewed: 2026-09-
|
|
11
|
+
last_reviewed: 2026-09-20
|
|
12
12
|
ai_provenance:
|
|
13
13
|
model_family: GPT-6
|
|
14
14
|
product: Codex
|
|
15
|
-
generated_at: 2026-09-
|
|
15
|
+
generated_at: 2026-09-20
|
|
16
16
|
visible_context: Exact GitHub channel refs and workflow files on 23 organization default branches
|
|
17
17
|
invisible_context_boundary: Other branches, private or unlisted consumers and future floating ref updates were not established by this audit
|
|
18
18
|
---
|
|
19
19
|
|
|
20
20
|
# Version-prefixed workflow path migration
|
|
21
21
|
|
|
22
|
+
This page retains the dated 2026-09-05/06 migration observations. Its paths and
|
|
23
|
+
channel readbacks are historical, not current consumer instructions. The current
|
|
24
|
+
contract uses `public-ops-pipeline.yml` and `public-ops-recover.yml`; see
|
|
25
|
+
[Getting started](getting-started.md). Former product-specific public workflows
|
|
26
|
+
are now internal components, with no consumer compatibility aliases.
|
|
27
|
+
|
|
22
28
|
This source change retires three filenames. Their reusable capabilities, inputs,
|
|
23
29
|
outputs, jobs and permission envelopes remain at the canonical paths below.
|
|
24
30
|
Keep the existing channel selector and dual contract-lock policy when migrating.
|
|
25
31
|
|
|
26
|
-
| Retired path |
|
|
32
|
+
| Retired path at that migration | Replacement observed at that migration |
|
|
27
33
|
| --- | --- |
|
|
28
34
|
| `v4-adopter-delivery.yml` | `public-build-adopter-qualification.yml` |
|
|
29
35
|
| `v4-stage-capsule-canary.yml` | `public-build-stage-capsule-canary.yml` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kungfu-tech/buildchain",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.4-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Buildchain Release Passport, release governance, CLI toolkit, and site facts.",
|
|
6
6
|
"repository": "https://github.com/kungfu-systems/buildchain",
|
|
@@ -192,8 +192,7 @@
|
|
|
192
192
|
"ajv": "8.17.1",
|
|
193
193
|
"prettier": "^3.9.0",
|
|
194
194
|
"tsup": "^8.5.0",
|
|
195
|
-
"typescript": "^5.9.0"
|
|
196
|
-
"yaml": "2.8.2"
|
|
195
|
+
"typescript": "^5.9.0"
|
|
197
196
|
},
|
|
198
197
|
"dependencies": {
|
|
199
198
|
"@actions/artifact": "6.2.1",
|
|
@@ -202,6 +201,8 @@
|
|
|
202
201
|
"@actions/glob": "0.7.0",
|
|
203
202
|
"@electron/osx-sign": "1.3.3",
|
|
204
203
|
"@kungfu-tech/kfd": "1.0.0-alpha.62",
|
|
205
|
-
"
|
|
204
|
+
"acorn": "8.17.0",
|
|
205
|
+
"smol-toml": "1.7.0",
|
|
206
|
+
"yaml": "2.8.2"
|
|
206
207
|
}
|
|
207
208
|
}
|
|
@@ -57,15 +57,15 @@ const SCHEMA_AND_STANDARD_FILES = Object.freeze([
|
|
|
57
57
|
const WORKFLOW_AND_ACTION_FILES = Object.freeze([
|
|
58
58
|
".github/workflows/.build.yml",
|
|
59
59
|
".github/workflows/.release-promote.yml",
|
|
60
|
-
".github/workflows
|
|
60
|
+
".github/workflows/.release-candidate-promote.yml",
|
|
61
61
|
".github/workflows/buildchain.yml",
|
|
62
62
|
".github/workflows/buildchain-recover.yml",
|
|
63
63
|
".github/workflows/public-ops-pipeline.yml",
|
|
64
64
|
".github/workflows/public-ops-recover.yml",
|
|
65
|
-
".github/workflows
|
|
65
|
+
".github/workflows/.release-artifact-attestation.yml",
|
|
66
66
|
"actions/build/artifact/prepare-attestation/action.yml",
|
|
67
67
|
"actions/build/artifact/prepare-attestation/index.js",
|
|
68
|
-
".github/workflows
|
|
68
|
+
".github/workflows/.release-propagation.yml",
|
|
69
69
|
"actions/build/credential/macos-island/action.yml",
|
|
70
70
|
"actions/build/credential/macos-island/index.js",
|
|
71
71
|
"actions/release/promotion/ref/action.yml",
|
|
@@ -354,7 +354,7 @@ export function createBuildchainPublicClaimDefinitions() {
|
|
|
354
354
|
"packages/core/contracts/commands/buildchain-contract-lock.mjs",
|
|
355
355
|
".github/workflows/.build.yml",
|
|
356
356
|
".github/workflows/.release-promote.yml",
|
|
357
|
-
".github/workflows
|
|
357
|
+
".github/workflows/.release-candidate-promote.yml",
|
|
358
358
|
"docs/reusable-build-surface.md",
|
|
359
359
|
],
|
|
360
360
|
artifactPaths: [
|
|
@@ -370,7 +370,7 @@ export function createBuildchainPublicClaimDefinitions() {
|
|
|
370
370
|
"actions/release/promotion/ref/action.yml",
|
|
371
371
|
"packages/core/release/commands/ensure-github-release.mjs",
|
|
372
372
|
".github/workflows/.release-promote.yml",
|
|
373
|
-
".github/workflows
|
|
373
|
+
".github/workflows/.release-candidate-promote.yml",
|
|
374
374
|
"docs/release-governance.md",
|
|
375
375
|
],
|
|
376
376
|
artifactPaths: [
|
|
@@ -384,7 +384,7 @@ export function createBuildchainPublicClaimDefinitions() {
|
|
|
384
384
|
sourcePaths: [
|
|
385
385
|
"packages/core/release/release-propagation.js",
|
|
386
386
|
"packages/core/release/commands/release-propagation.mjs",
|
|
387
|
-
".github/workflows
|
|
387
|
+
".github/workflows/.release-propagation.yml",
|
|
388
388
|
"docs/release-propagation.md",
|
|
389
389
|
],
|
|
390
390
|
artifactPaths: [
|
|
@@ -399,7 +399,7 @@ export function createBuildchainPublicClaimDefinitions() {
|
|
|
399
399
|
"packages/core/publication/commands/npm-publish-transaction.mjs",
|
|
400
400
|
"actions/release/promotion/ref/index.js",
|
|
401
401
|
".github/workflows/.release-promote.yml",
|
|
402
|
-
".github/workflows
|
|
402
|
+
".github/workflows/.release-candidate-promote.yml",
|
|
403
403
|
"docs/publish-transaction.md",
|
|
404
404
|
],
|
|
405
405
|
artifactPaths: [
|
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
printJson,
|
|
3
|
-
readBooleanFlag,
|
|
4
|
-
readFlag,
|
|
5
|
-
readJsonInput,
|
|
6
|
-
readRepeatedFlag,
|
|
7
|
-
readRepeatedJsonInputs,
|
|
8
|
-
writeJsonFile,
|
|
9
|
-
} from "../../contracts/cli/options.mjs";
|
|
1
|
+
import { printJson } from "../../contracts/cli/options.mjs";
|
|
10
2
|
|
|
11
3
|
export function printKfdSchemaOrJson({ result, json }) {
|
|
12
4
|
if (json) {
|
|
@@ -1,17 +1,5 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
3
|
-
checkKfdUpstreamFacts,
|
|
4
|
-
collectKfdAggregate,
|
|
5
|
-
collectKfdStatus,
|
|
6
|
-
collectKfdUpstreamFacts,
|
|
7
|
-
kfd1,
|
|
8
|
-
kfd2,
|
|
9
|
-
layout as buildchainLayout,
|
|
10
|
-
listKfdUpstreamRoles,
|
|
11
|
-
listKfdSchemas,
|
|
12
|
-
normalizeKfdStandardId,
|
|
13
|
-
readKfdSchema,
|
|
14
|
-
} from "../kfd.js";
|
|
2
|
+
import { readKfdSchema } from "../kfd.js";
|
|
15
3
|
import {
|
|
16
4
|
evaluateKfdProductGate,
|
|
17
5
|
validateKfdProductGateResult,
|
|
@@ -21,8 +9,6 @@ import {
|
|
|
21
9
|
readBooleanFlag,
|
|
22
10
|
readFlag,
|
|
23
11
|
readJsonInput,
|
|
24
|
-
readRepeatedFlag,
|
|
25
|
-
readRepeatedJsonInputs,
|
|
26
12
|
writeJsonFile,
|
|
27
13
|
} from "../../contracts/cli/options.mjs";
|
|
28
14
|
import { printKfdSchemaOrJson } from "./output.mjs";
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { initBuildchainRepo } from "../commands/init-repo.mjs";
|
|
2
2
|
import { validateBuildchainConfig } from "../../consumer/buildchain-config.js";
|
|
3
|
+
import { validateConsumerWiring } from "../../consumer/contract/local-validation.js";
|
|
3
4
|
import {
|
|
4
5
|
printJson,
|
|
5
6
|
readBooleanFlag,
|
|
6
7
|
readFlag,
|
|
7
|
-
readJsonInput,
|
|
8
|
-
readRepeatedFlag,
|
|
9
|
-
readRepeatedJsonInputs,
|
|
10
|
-
writeJsonFile,
|
|
11
8
|
} from "../../contracts/cli/options.mjs";
|
|
12
9
|
|
|
13
10
|
export async function handleInitCommand(args) {
|
|
@@ -28,11 +25,13 @@ export async function handleValidateCommand(args) {
|
|
|
28
25
|
.split(",")
|
|
29
26
|
.map((entry) => entry.trim())
|
|
30
27
|
.filter(Boolean);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
)
|
|
28
|
+
const cwd = readFlag(args, "cwd", process.cwd());
|
|
29
|
+
const result = validateBuildchainConfig(cwd, {
|
|
30
|
+
requireVersionState: readBooleanFlag(args, "require-version-state"),
|
|
31
|
+
requireLifecycleStages: lifecycleStages,
|
|
32
|
+
});
|
|
33
|
+
if (result.config?.schema === 2)
|
|
34
|
+
result.consumer = validateConsumerWiring(cwd, result.config.path);
|
|
35
|
+
printJson(result);
|
|
37
36
|
return;
|
|
38
37
|
}
|
|
@@ -1,23 +1,10 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
|
-
import {
|
|
3
|
-
checkKfdUpstreamFacts,
|
|
4
|
-
collectKfdAggregate,
|
|
5
|
-
collectKfdStatus,
|
|
6
|
-
collectKfdUpstreamFacts,
|
|
7
|
-
kfd1,
|
|
8
|
-
kfd2,
|
|
9
|
-
layout as buildchainLayout,
|
|
10
|
-
listKfdUpstreamRoles,
|
|
11
|
-
listKfdSchemas,
|
|
12
|
-
normalizeKfdStandardId,
|
|
13
|
-
readKfdSchema,
|
|
14
|
-
} from "../kfd.js";
|
|
2
|
+
import { kfd1, kfd2, readKfdSchema } from "../kfd.js";
|
|
15
3
|
import {
|
|
16
4
|
printJson,
|
|
17
5
|
readBooleanFlag,
|
|
18
6
|
readFlag,
|
|
19
7
|
readJsonInput,
|
|
20
|
-
readRepeatedFlag,
|
|
21
8
|
readRepeatedJsonInputs,
|
|
22
9
|
writeJsonFile,
|
|
23
10
|
} from "../../contracts/cli/options.mjs";
|