@kungfu-tech/buildchain 4.0.2-alpha.9 → 4.0.2
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 +10 -1
- package/CONTRIBUTING.md +24 -0
- package/README.md +2 -2
- package/actions/promote-buildchain-ref/README.md +1 -1
- package/actions/v4-release-candidate-promote/README.md +28 -0
- package/architecture/agent-change-map.md +64 -7
- package/architecture/ci-lane-change-budget.json +366 -0
- package/architecture/internal-capabilities.json +53 -8
- package/architecture/maintainability-debt.json +147 -93
- package/architecture/maintainability-policy.json +32 -28
- package/architecture/release-tail-contract-inventory.json +6 -6
- package/architecture/v4-architecture-constitution.md +23 -20
- package/architecture/v4-cross-platform-adopter-qualification.json +1 -1
- package/architecture/v4-delivery-authority-parity.json +2 -2
- package/architecture/v4-delivery-warrant-shadow-bootstrap-plan.json +1 -1
- package/architecture/v4-floating-consumer-policy.json +2 -2
- package/architecture/v4-next-development-parity.json +5 -5
- package/architecture/v4-partial-mutation-recovery-qualification.json +4 -1
- package/architecture/v4-platform-stage-checkpoints.json +1 -1
- package/architecture/v4-provider-operation-journal-contract.json +5 -2
- package/architecture/v4-publication-facade-patches.json +64 -0
- package/architecture/v4-release-activation-shadow-domain.json +5 -2
- package/architecture/v4-release-topology.json +74 -39
- package/architecture/v4-rust-wasm-production-authority.json +58 -0
- package/architecture/v4-stable-publication-fence.json +5 -2
- package/architecture/v4-stage-capsule-qualification.json +2 -2
- package/architecture/v4-tail-reseal-parity.json +8 -6
- package/architecture/v4-universal-workflow-bootstrap.json +171 -0
- package/architecture/v4-universal-workflow-fault-campaign.json +72 -0
- package/architecture/v4-universal-workflow-train-admission.json +40 -0
- package/architecture/workflow-taxonomy.json +1451 -0
- package/bin/buildchain.mjs +7 -7
- package/contracts/buildchain-v2-residuals-v1.json +57 -48
- package/contracts/dev-delivery-authority-v2.schema.json +16 -2
- package/contracts/fixtures/v4-tail-reseal-v1/valid.json +1 -1
- package/contracts/v4-canonical-contracts-v1.schema.json +1 -0
- package/dist/site/buildchain-contract.json +93 -48
- package/dist/site/buildchain-site.json +222 -69
- package/dist/site/capability-registry.json +4 -4
- package/dist/site/controller-registry.json +50 -13
- package/dist/site/kfd-claims.json +2585 -1000
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +13 -13
- package/dist/site/node-api-registry.json +120 -115
- package/dist/site/page-registry.json +204 -51
- package/dist/site/public-surface-audit.json +3205 -1219
- package/dist/site/publication-authority-registry.json +1124 -362
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/schemas/dev-delivery-authority-v2.schema.json +16 -2
- package/dist/site/site-manifest.json +17 -17
- package/dist/site/workflow-registry.json +5061 -1659
- package/docs/MAP.md +1 -0
- package/docs/auditable-demo.md +1 -1
- package/docs/cli.md +21 -8
- package/docs/dev-delivery-warrant.md +1 -1
- package/docs/engineering-housekeeper.md +3 -3
- package/docs/kfd-support.md +26 -2
- package/docs/next-development-transition.md +2 -2
- package/docs/node-api-reference.md +190 -190
- package/docs/publication-authority.md +2 -2
- package/docs/release-candidate.md +3 -3
- package/docs/release-flow.md +67 -19
- package/docs/release-governance.md +8 -8
- package/docs/release-passport.md +27 -2
- package/docs/reusable-build-surface.md +16 -0
- package/docs/v4-adopter-delivery.md +2 -2
- package/docs/v4-production-release.md +71 -8
- package/docs/v4-rust-wasm-production-authority.md +58 -0
- package/docs/v4-stage-capsule.md +2 -2
- package/docs/v4-tail-reseal.md +1 -1
- package/docs/workflow-catalog.md +154 -0
- package/docs/workflow-path-migration.md +109 -0
- package/package.json +10 -6
- package/packages/core/artifact-verification-envelope.js +5 -5
- package/packages/core/buildchain-contract.js +1 -1
- package/packages/core/buildchain-kfd-claims.js +2 -2
- package/packages/core/buildchain-publication-authority.js +42 -26
- package/packages/core/buildchain-v4-domain.wasm +0 -0
- package/packages/core/ci-lane-change-budget.js +14 -1
- package/packages/core/controller-evidence.js +4 -1
- package/packages/core/dev-delivery-candidate-identity.js +40 -6
- package/packages/core/dev-delivery-warrant-state.js +3 -4
- package/packages/core/dev-delivery-warrant.js +12 -2
- package/packages/core/github-governance-authority.js +4 -4
- package/packages/core/kfd-adopter-manifest.js +46 -47
- package/packages/core/next-development-projection.js +2 -2
- package/packages/core/paper-agent-entry.js +30 -4
- package/packages/core/paper-fleet.js +1 -1
- package/packages/core/paper-runtime-channels.js +348 -0
- package/packages/core/paper-scaffold-content.js +10 -0
- package/packages/core/paper.js +37 -71
- package/packages/core/release-line-dry-run.js +1 -1
- package/packages/core/release-passport-contract.js +5 -5
- package/packages/core/release-passport.js +5 -4
- package/packages/core/release-tail-provider-plane.js +68 -1048
- package/packages/core/v4-canonical-contracts.js +10 -75
- package/packages/core/v4-domain-wasm-artifact.js +7 -0
- package/packages/core/v4-domain-wasm.js +216 -0
- package/packages/core/v4-floating-consumer-evidence.js +1 -1
- package/packages/core/v4-floating-consumer-policy.js +1 -1
- package/packages/core/v4-partial-mutation-recovery-qualification.js +9 -386
- package/packages/core/v4-product-publication.js +19 -349
- package/packages/core/v4-protected-publication-source.js +19 -21
- package/packages/core/v4-provider-operation-journal.js +18 -487
- package/packages/core/v4-provider-readback-idempotency.js +12 -97
- package/packages/core/v4-release-activation-shadow.js +13 -500
- package/packages/core/v4-release-invocation.js +28 -389
- package/packages/core/v4-stable-publication-fence.js +13 -342
- package/packages/core/v4-universal-workflow-bootstrap.js +586 -0
- package/scripts/binary-publication-evidence.mjs +135 -0
- package/scripts/build-contract-core.mjs +1 -14
- package/scripts/build-v4-domain-wasm.mjs +189 -0
- package/scripts/check-action-bundles.mjs +12 -2
- package/scripts/check-ci-lane-change-budget.mjs +4 -1
- package/scripts/check-core-mechanism-inventory.mjs +4 -3
- package/scripts/check-inventory.mjs +35 -44
- package/scripts/check-maintainability.mjs +16 -113
- package/scripts/check-v4-floating-consumer-policy-contract.mjs +2 -2
- package/scripts/check-v4-public-dogfood-contract.mjs +22 -9
- package/scripts/check-v4-release-topology.mjs +90 -33
- package/scripts/check-v4-runtime-semantic-closure.mjs +4 -1
- package/scripts/check-v4-universal-workflow-bootstrap.mjs +266 -0
- package/scripts/check-workflow-taxonomy.mjs +6 -0
- package/scripts/copy-v4-domain-wasm.mjs +14 -0
- package/scripts/dev-delivery-authority-command-adapters.mjs +1 -1
- package/scripts/dev-delivery-authority.mjs +8 -8
- package/scripts/dev-delivery-source-proof-reuse.mjs +2 -1
- package/scripts/dev-delivery-warrant-options.mjs +14 -9
- package/scripts/dev-delivery-warrant-store.mjs +73 -7
- package/scripts/dev-delivery-warrant-transition.mjs +109 -0
- package/scripts/dev-delivery-warrant.mjs +76 -99
- package/scripts/dev-pr-auto-merge.mjs +15 -15
- package/scripts/generate-channel-build-workflow.mjs +7 -2
- package/scripts/generate-channel-promotion-workflow.mjs +7 -5
- package/scripts/generate-site-bundle.mjs +11 -11
- package/scripts/generate-v4-universal-workflow-facades.mjs +458 -0
- package/scripts/generate-workflow-taxonomy.mjs +25 -0
- package/scripts/github-output.mjs +31 -0
- package/scripts/maintainability-metrics.mjs +16 -5
- package/scripts/maintainability-public-surface.mjs +115 -0
- package/scripts/next-development-review.mjs +307 -0
- package/scripts/paper-work-fleet-cli.mjs +2 -0
- package/scripts/release-asset-client.mjs +91 -0
- package/scripts/release-candidate-resolver.mjs +9 -9
- package/scripts/source-verification-evidence.mjs +344 -0
- package/scripts/stable-candidate-qualification.mjs +1 -1
- package/scripts/universal-facade-maintainability.mjs +82 -0
- package/scripts/v4-product-publication-intent.mjs +13 -6
- package/scripts/v4-publication-settlement.mjs +211 -0
- package/scripts/v4-universal-workflow-backflow.mjs +212 -0
- package/scripts/v4-universal-workflow-engine.mjs +618 -0
- package/scripts/v4-universal-workflow-self-dogfood.mjs +205 -0
- package/scripts/verify-version-state-delta.mjs +173 -0
- package/scripts/workflow-taxonomy.mjs +507 -0
- package/templates/native-dev-delivery.yml +4 -7
- package/templates/universal-buildchain-bootstrap-recovery.yml +282 -0
- package/templates/universal-buildchain-bootstrap.yml +28 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: active
|
|
3
|
+
period: ongoing
|
|
4
|
+
theme: workflow-taxonomy
|
|
5
|
+
doc_type: technical-reference
|
|
6
|
+
source_level: local-files
|
|
7
|
+
confidence: high
|
|
8
|
+
sensitivity: public
|
|
9
|
+
evidence_grade: B
|
|
10
|
+
review_state: unreviewed
|
|
11
|
+
last_reviewed: 2026-09-05
|
|
12
|
+
ai_provenance:
|
|
13
|
+
model_family: GPT-6
|
|
14
|
+
product: Codex
|
|
15
|
+
generated_at: 2026-09-05
|
|
16
|
+
visible_context: Repository workflow source and the approved naming scheme
|
|
17
|
+
invisible_context_boundary: No credentials or unpublished provider configuration inspected
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Workflow catalog
|
|
21
|
+
|
|
22
|
+
Generated from `architecture/workflow-taxonomy.json`; edit that source, then run
|
|
23
|
+
`pnpm run generate:workflows`. Every YAML file, including compatibility paths,
|
|
24
|
+
is checked by the existing required workflow check.
|
|
25
|
+
|
|
26
|
+
## Naming and ownership
|
|
27
|
+
|
|
28
|
+
`public-<build|release|ops>-<purpose>.yml` is a consumer entry;
|
|
29
|
+
`.<build|release|ops>-<purpose>.yml` is an advanced component;
|
|
30
|
+
`self-<build|release|ops>-<purpose>.yml` is Buildchain's own automation.
|
|
31
|
+
Public is a product role, not GitHub access control. Dispatch services are
|
|
32
|
+
marked separately from reusable workflows. Keep workflow names, job IDs,
|
|
33
|
+
permissions, and trigger semantics stable during path migration.
|
|
34
|
+
|
|
35
|
+
## Channel rollout
|
|
36
|
+
|
|
37
|
+
Canonical names become callable on a channel only after that channel publishes
|
|
38
|
+
them. Existing `@v4`/`@v4-alpha` consumers keep their exact registered legacy
|
|
39
|
+
paths until provider readback proves canonical availability. New examples below
|
|
40
|
+
describe the target surface, not a claim that both channels already publish it.
|
|
41
|
+
Compatibility files are generated byte-identical projections, not independently
|
|
42
|
+
editable implementations. They retain full jobs to preserve called-workflow
|
|
43
|
+
identity, permission envelopes, and required check names without extra nesting.
|
|
44
|
+
|
|
45
|
+
The controller registry records the actual source path separately from a migrated
|
|
46
|
+
repository controller contractPath. This preserves the established logical
|
|
47
|
+
contract identity while exposing its current execution source. New workflows
|
|
48
|
+
do not acquire historical identities. Public controllers retain their real
|
|
49
|
+
compatibility paths while those paths remain supported.
|
|
50
|
+
|
|
51
|
+
## Adding or changing a workflow
|
|
52
|
+
|
|
53
|
+
Register a stable identity, role, category, purpose, owner, lifecycle status,
|
|
54
|
+
invocation and concrete summary before creating its derived path. A new entry
|
|
55
|
+
must explain its scope in review. New aliases cannot be invented: compatibility
|
|
56
|
+
must name an exact migration source with a reason and removal condition.
|
|
57
|
+
The policy, generator, checker, tests, required CI chain and CODEOWNERS require
|
|
58
|
+
independent `kungfu-origin` review. No wildcard compatibility admission is allowed.
|
|
59
|
+
Workflow filenames cannot contain version tokens such as `v4` or `v5`.
|
|
60
|
+
Retired aliases cannot be recreated or called; see [path migration](workflow-path-migration.md).
|
|
61
|
+
|
|
62
|
+
A role, category or implementation edit must preserve or deliberately update
|
|
63
|
+
all related declarations. Run `pnpm run generate:workflows` and
|
|
64
|
+
`pnpm run check:workflows`; the full `pnpm run check` remains required.
|
|
65
|
+
|
|
66
|
+
## public
|
|
67
|
+
|
|
68
|
+
| Canonical workflow | Category | Invocation | Status | Purpose | Compatibility path |
|
|
69
|
+
| --- | --- | --- | --- | --- | --- |
|
|
70
|
+
| [public-build-adopter-qualification.yml](../.github/workflows/public-build-adopter-qualification.yml) | build | reusable | active | V4 Adopter Delivery | — |
|
|
71
|
+
| [public-build-candidate.yml](../.github/workflows/public-build-candidate.yml) | build | reusable | active | Buildchain Channel Build | `build.yml` |
|
|
72
|
+
| [public-build-check.yml](../.github/workflows/public-build-check.yml) | build | reusable | active | Buildchain Check | `check.yml` |
|
|
73
|
+
| [public-build-demo.yml](../.github/workflows/public-build-demo.yml) | build | reusable | active | Buildchain Declarative Binary Auditable Demo | `.declarative-auditable-demo.yml` |
|
|
74
|
+
| [public-build-publication.yml](../.github/workflows/public-build-publication.yml) | build | reusable | active | Buildchain Publication Artifact | `publication-artifact.yml` |
|
|
75
|
+
| [public-build-stage-capsule-canary.yml](../.github/workflows/public-build-stage-capsule-canary.yml) | build | reusable | active | V4 Stage Capsule Canary | — |
|
|
76
|
+
| [public-ops-alpha-candidate-patrol.yml](../.github/workflows/public-ops-alpha-candidate-patrol.yml) | ops | reusable | active | Buildchain Dev to Alpha Candidate Patrol | `dev-alpha-candidate-patrol.yml` |
|
|
77
|
+
| [public-ops-bootstrap-recovery.yml](../.github/workflows/public-ops-bootstrap-recovery.yml) | ops | reusable | active | Universal Buildchain Bootstrap Recovery | `universal-bootstrap-recovery.yml` |
|
|
78
|
+
| [public-ops-bootstrap.yml](../.github/workflows/public-ops-bootstrap.yml) | ops | reusable | active | Buildchain Universal Bootstrap | `bootstrap.yml` |
|
|
79
|
+
| [public-ops-dev-auto-merge.yml](../.github/workflows/public-ops-dev-auto-merge.yml) | ops | reusable | active | Dev PR Auto Merge | `dev-pr-auto-merge.yml` |
|
|
80
|
+
| [public-ops-dev-qualification-patrol.yml](../.github/workflows/public-ops-dev-qualification-patrol.yml) | ops | reusable | active | Buildchain Dev Qualification Patrol | `dev-qualification-patrol.yml` |
|
|
81
|
+
| [public-ops-housekeeping.yml](../.github/workflows/public-ops-housekeeping.yml) | ops | reusable | active | Engineering Housekeeper | `engineering-housekeeper.yml` |
|
|
82
|
+
| [public-ops-observed-evidence.yml](../.github/workflows/public-ops-observed-evidence.yml) | ops | reusable | active | Patrol Observed Evidence | `patrol-observed-evidence.yml` |
|
|
83
|
+
| [public-ops-patrol-daily.yml](../.github/workflows/public-ops-patrol-daily.yml) | ops | reusable | active | Buildchain Patrol Daily | `patrol-daily.yml` |
|
|
84
|
+
| [public-ops-patrol-monthly.yml](../.github/workflows/public-ops-patrol-monthly.yml) | ops | reusable | active | Buildchain Patrol Monthly | `patrol-monthly.yml` |
|
|
85
|
+
| [public-ops-patrol-weekly.yml](../.github/workflows/public-ops-patrol-weekly.yml) | ops | reusable | active | Buildchain Patrol Weekly | `patrol-weekly.yml` |
|
|
86
|
+
| [public-ops-patrol.yml](../.github/workflows/public-ops-patrol.yml) | ops | reusable | active | Buildchain Patrol | `buildchain-patrol.yml` |
|
|
87
|
+
| [public-ops-release-governance.yml](../.github/workflows/public-ops-release-governance.yml) | ops | reusable | active | Release Governance Reconcile | `release-governance-reconcile.yml` |
|
|
88
|
+
| [public-ops-stable-candidate-patrol.yml](../.github/workflows/public-ops-stable-candidate-patrol.yml) | ops | reusable | active | Buildchain Stable Candidate Patrol | `stable-candidate-patrol.yml` |
|
|
89
|
+
| [public-ops-tail-reseal.yml](../.github/workflows/public-ops-tail-reseal.yml) | ops | reusable | active | V4 Retained Candidate Tail Reseal | — |
|
|
90
|
+
| [public-ops-warrant-cancel.yml](../.github/workflows/public-ops-warrant-cancel.yml) | ops | reusable | active | Dev Delivery Warrant Queued Candidate Cancel | `dev-delivery-warrant-cancel.yml` |
|
|
91
|
+
| [public-ops-warrant-close.yml](../.github/workflows/public-ops-warrant-close.yml) | ops | reusable | active | Dev Delivery Warrant Close | `dev-delivery-warrant-close.yml` |
|
|
92
|
+
| [public-release-artifact-attestation.yml](../.github/workflows/public-release-artifact-attestation.yml) | release | reusable | active | Buildchain GitHub Artifact Attestation | `github-artifact-attestation.yml` |
|
|
93
|
+
| [public-release-paper-sealed.yml](../.github/workflows/public-release-paper-sealed.yml) | release | reusable | active | Buildchain Sealed Paper Release | `paper-release-sealed.yml` |
|
|
94
|
+
| [public-release-paper.yml](../.github/workflows/public-release-paper.yml) | release | reusable | active | Buildchain Paper Release | `paper-release.yml` |
|
|
95
|
+
| [public-release-promote.yml](../.github/workflows/public-release-promote.yml) | release | reusable | active | Release Candidate Promote | `release-candidate-promote.yml` |
|
|
96
|
+
| [public-release-propagation.yml](../.github/workflows/public-release-propagation.yml) | release | reusable | active | Release Propagation | `release-propagation.yml` |
|
|
97
|
+
| [public-release-signing-authority.yml](../.github/workflows/public-release-signing-authority.yml) | release | dispatch-service | active | Buildchain Artifact Signing Authority | `artifact-signing-authority.yml` |
|
|
98
|
+
| [public-release-tail.yml](../.github/workflows/public-release-tail.yml) | release | reusable | active | Declarative Release Tail | `release-tail.yml` |
|
|
99
|
+
| [public-release-web.yml](../.github/workflows/public-release-web.yml) | release | reusable | active | Buildchain Web Surface | `.web-surface.yml` |
|
|
100
|
+
|
|
101
|
+
## component
|
|
102
|
+
|
|
103
|
+
| Canonical workflow | Category | Invocation | Status | Purpose | Compatibility path |
|
|
104
|
+
| --- | --- | --- | --- | --- | --- |
|
|
105
|
+
| [.build-demo-adapter.yml](../.github/workflows/.build-demo-adapter.yml) | build | reusable | active | Buildchain Auditable Demo | `.auditable-demo.yml` |
|
|
106
|
+
| [.build-engine.yml](../.github/workflows/.build-engine.yml) | build | reusable | active | Buildchain Build | `.build.yml` |
|
|
107
|
+
| [.build-gate-profile.yml](../.github/workflows/.build-gate-profile.yml) | build | reusable | active | Buildchain Shifu Gate Profile | `.gate-profile.yml` |
|
|
108
|
+
| [.build-release-verify-compat.yml](../.github/workflows/.build-release-verify-compat.yml) | build | reusable | compatibility | release verify | `.release-verify.yml` |
|
|
109
|
+
| [.build-sam-verify-compat.yml](../.github/workflows/.build-sam-verify-compat.yml) | build | reusable | compatibility | sam verify | `.sam-verify.yml` |
|
|
110
|
+
| [.build-wheel-verify-compat.yml](../.github/workflows/.build-wheel-verify-compat.yml) | build | reusable | compatibility | wheel verify | `.wheel-verify.yml` |
|
|
111
|
+
| [.ops-git-sync.yml](../.github/workflows/.ops-git-sync.yml) | ops | reusable | active | sync remote git | `.sync-remote-git.yml` |
|
|
112
|
+
| [.release-authority.yml](../.github/workflows/.release-authority.yml) | release | reusable | active | Buildchain Sealed Publication Authority | `.publication-authority.yml` |
|
|
113
|
+
| [.release-binary-assets.yml](../.github/workflows/.release-binary-assets.yml) | release | reusable | active | Buildchain Binary Release Assets | `.binary-release-assets.yml` |
|
|
114
|
+
| [.release-minor-bump-compat.yml](../.github/workflows/.release-minor-bump-compat.yml) | release | reusable | compatibility | bump minor version | `.bump-minor-version.yml` |
|
|
115
|
+
| [.release-page-sync-retired.yml](../.github/workflows/.release-page-sync-retired.yml) | release | reusable | retired | sync release page | `.sync-release-page.yml` |
|
|
116
|
+
| [.release-promote.yml](../.github/workflows/.release-promote.yml) | release | reusable | active | Release Candidate Promote Advanced | `.release-candidate-promote.yml` |
|
|
117
|
+
|
|
118
|
+
## self
|
|
119
|
+
|
|
120
|
+
| Canonical workflow | Category | Invocation | Status | Purpose | Compatibility path |
|
|
121
|
+
| --- | --- | --- | --- | --- | --- |
|
|
122
|
+
| [self-build-adopter-dogfood.yml](../.github/workflows/self-build-adopter-dogfood.yml) | build | repository | active | V4 Adopter Delivery Dogfood | — |
|
|
123
|
+
| [self-build-alpha-dogfood.yml](../.github/workflows/self-build-alpha-dogfood.yml) | build | repository | active | Buildchain Alpha Self-Dogfood | — |
|
|
124
|
+
| [self-build-binary-distribution.yml](../.github/workflows/self-build-binary-distribution.yml) | build | repository | active | Binary Distribution | — |
|
|
125
|
+
| [self-build-candidate-lab.yml](../.github/workflows/self-build-candidate-lab.yml) | build | repository | active | Candidate Lab | — |
|
|
126
|
+
| [self-build-demo-dogfood.yml](../.github/workflows/self-build-demo-dogfood.yml) | build | repository | active | Buildchain Declarative Demo Dogfood | — |
|
|
127
|
+
| [self-build-demo-media-qualification.yml](../.github/workflows/self-build-demo-media-qualification.yml) | build | repository | active | Auditable Demo Media Profile Qualification | — |
|
|
128
|
+
| [self-build-fixture.yml](../.github/workflows/self-build-fixture.yml) | build | repository | active | Build Surface Fixture | — |
|
|
129
|
+
| [self-build-public-consumer-dogfood.yml](../.github/workflows/self-build-public-consumer-dogfood.yml) | build | repository | active | V4 Public Consumer Dogfood | — |
|
|
130
|
+
| [self-build-release-verify-compat.yml](../.github/workflows/self-build-release-verify-compat.yml) | build | repository | compatibility | Release - Verify | — |
|
|
131
|
+
| [self-build-stable-candidate-qualification.yml](../.github/workflows/self-build-stable-candidate-qualification.yml) | build | repository | active | Buildchain Stable Candidate Qualification | — |
|
|
132
|
+
| [self-build-verify.yml](../.github/workflows/self-build-verify.yml) | build | repository | active | Verify | — |
|
|
133
|
+
| [self-ops-bootstrap-dogfood.yml](../.github/workflows/self-ops-bootstrap-dogfood.yml) | ops | repository | active | Universal Bootstrap Train-First Self-Dogfood | — |
|
|
134
|
+
| [self-ops-dev-delivery.yml](../.github/workflows/self-ops-dev-delivery.yml) | ops | repository | active | Buildchain Dev Delivery | — |
|
|
135
|
+
| [self-ops-governance-audit.yml](../.github/workflows/self-ops-governance-audit.yml) | ops | repository | active | GitHub Governance Authority Audit | — |
|
|
136
|
+
| [self-ops-housekeeping-daily.yml](../.github/workflows/self-ops-housekeeping-daily.yml) | ops | repository | active | Engineering Housekeeper Daily | — |
|
|
137
|
+
| [self-ops-housekeeping-monthly.yml](../.github/workflows/self-ops-housekeeping-monthly.yml) | ops | repository | active | Engineering Housekeeper Monthly | — |
|
|
138
|
+
| [self-ops-housekeeping-weekly.yml](../.github/workflows/self-ops-housekeeping-weekly.yml) | ops | repository | active | Engineering Housekeeper Weekly | — |
|
|
139
|
+
| [self-ops-merge-queue.yml](../.github/workflows/self-ops-merge-queue.yml) | ops | repository | active | Dev Merge Queue Governance | — |
|
|
140
|
+
| [self-ops-patrol-daily.yml](../.github/workflows/self-ops-patrol-daily.yml) | ops | repository | active | Buildchain Dogfood Patrol Daily | — |
|
|
141
|
+
| [self-ops-patrol-monthly.yml](../.github/workflows/self-ops-patrol-monthly.yml) | ops | repository | active | Buildchain Dogfood Patrol Monthly | — |
|
|
142
|
+
| [self-ops-patrol-weekly.yml](../.github/workflows/self-ops-patrol-weekly.yml) | ops | repository | active | Buildchain Dogfood Patrol Weekly | — |
|
|
143
|
+
| [self-ops-promotion-recovery.yml](../.github/workflows/self-ops-promotion-recovery.yml) | ops | repository | active | Buildchain Ref Promotion Recovery | — |
|
|
144
|
+
| [self-ops-recovery-failure-dogfood.yml](../.github/workflows/self-ops-recovery-failure-dogfood.yml) | ops | repository | active | Buildchain Candidate Recovery Dogfood Startup Failure | — |
|
|
145
|
+
| [self-ops-runner-smoke.yml](../.github/workflows/self-ops-runner-smoke.yml) | ops | repository | active | Self-hosted Runner Smoke | — |
|
|
146
|
+
| [self-ops-stable-candidate-patrol.yml](../.github/workflows/self-ops-stable-candidate-patrol.yml) | ops | repository | active | Buildchain Dogfood Stable Candidate Patrol | — |
|
|
147
|
+
| [self-release-binary-assets.yml](../.github/workflows/self-release-binary-assets.yml) | release | repository | active | Binary Release Assets | — |
|
|
148
|
+
| [self-release-line-open.yml](../.github/workflows/self-release-line-open.yml) | release | repository | active | Release Line Bootstrap | — |
|
|
149
|
+
| [self-release-new-version-compat.yml](../.github/workflows/self-release-new-version-compat.yml) | release | repository | compatibility | Release - New Version | — |
|
|
150
|
+
| [self-release-next-development.yml](../.github/workflows/self-release-next-development.yml) | release | repository | active | Next Development Review | — |
|
|
151
|
+
| [self-release-npm-dry-run.yml](../.github/workflows/self-release-npm-dry-run.yml) | release | repository | active | Publish npm package | — |
|
|
152
|
+
| [self-release-promote.yml](../.github/workflows/self-release-promote.yml) | release | repository | active | Buildchain Ref Promotion | — |
|
|
153
|
+
| [self-release-rehearsal-dogfood.yml](../.github/workflows/self-release-rehearsal-dogfood.yml) | release | repository | active | V4 Publication Rehearsal Dogfood | — |
|
|
154
|
+
| [self-release-tail-dogfood.yml](../.github/workflows/self-release-tail-dogfood.yml) | release | repository | active | V4 Declarative Release Tail Dogfood | — |
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: draft
|
|
3
|
+
period: ongoing
|
|
4
|
+
theme: workflow-path-migration
|
|
5
|
+
doc_type: migration-guide
|
|
6
|
+
source_level: local-files
|
|
7
|
+
confidence: high
|
|
8
|
+
sensitivity: public
|
|
9
|
+
evidence_grade: B
|
|
10
|
+
review_state: unreviewed
|
|
11
|
+
last_reviewed: 2026-09-06
|
|
12
|
+
ai_provenance:
|
|
13
|
+
model_family: GPT-6
|
|
14
|
+
product: Codex
|
|
15
|
+
generated_at: 2026-09-05
|
|
16
|
+
visible_context: Exact GitHub channel refs and workflow files on 23 organization default branches
|
|
17
|
+
invisible_context_boundary: Other branches, private or unlisted consumers and future floating ref updates were not established by this audit
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Version-prefixed workflow path migration
|
|
21
|
+
|
|
22
|
+
This source change retires three filenames. Their reusable capabilities, inputs,
|
|
23
|
+
outputs, jobs and permission envelopes remain at the canonical paths below.
|
|
24
|
+
Keep the existing channel selector and dual contract-lock policy when migrating.
|
|
25
|
+
|
|
26
|
+
| Retired path | Canonical path |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| `v4-adopter-delivery.yml` | `public-build-adopter-qualification.yml` |
|
|
29
|
+
| `v4-stage-capsule-canary.yml` | `public-build-stage-capsule-canary.yml` |
|
|
30
|
+
| `v4-tail-reseal.yml` | `public-ops-tail-reseal.yml` |
|
|
31
|
+
|
|
32
|
+
All paths are beneath `.github/workflows/`. The taxonomy gate rejects version
|
|
33
|
+
segments in filenames and calls to version-prefixed Buildchain workflows. An
|
|
34
|
+
explicit retirement record keeps the original migration identity for historical
|
|
35
|
+
metrics and frozen facade source; generators resolve that identity to the
|
|
36
|
+
canonical implementation and cannot recreate the removed file.
|
|
37
|
+
|
|
38
|
+
## Development merge and channel rollout
|
|
39
|
+
|
|
40
|
+
The development change retires these filenames on `dev/v4/v4.0`, updates the
|
|
41
|
+
Buildchain-owned callers, and enforces the canonical paths through generators
|
|
42
|
+
and required checks. Its delivery boundary is the protected development merge.
|
|
43
|
+
External-repository migration and stable publication are separate follow-up
|
|
44
|
+
work and do not block this development merge.
|
|
45
|
+
|
|
46
|
+
The published channel boundary still requires the following rollout order:
|
|
47
|
+
|
|
48
|
+
1. Publish and verify the canonical entries on every affected channel while the
|
|
49
|
+
old entries remain available. The admission identity must match the actual
|
|
50
|
+
invoked canonical workflow, rather than its previous filename.
|
|
51
|
+
2. Migrate consumers on their existing floating channels, refresh locks through
|
|
52
|
+
the supported contract acceptance path if required, and verify real consumer
|
|
53
|
+
runs. Stable callers remain on stable; alpha callers remain on alpha.
|
|
54
|
+
3. Before publishing the retirement into a channel, recheck its live consumers
|
|
55
|
+
and resolve any remaining old-path calls. A protected development merge does
|
|
56
|
+
not by itself establish this channel readiness.
|
|
57
|
+
|
|
58
|
+
## Initial consumer readback
|
|
59
|
+
|
|
60
|
+
On 2026-09-05, all workflow files from 23 accessible `kungfu-systems` repository
|
|
61
|
+
_default branches_ were read at their returned Git revisions. Five calls were
|
|
62
|
+
found in three repositories. This is a bounded inventory, not evidence that
|
|
63
|
+
unknown or non-default-branch consumers do not exist.
|
|
64
|
+
|
|
65
|
+
| Repository and observed revision | Caller | Existing selector |
|
|
66
|
+
| --- | --- | --- |
|
|
67
|
+
| Buildchain `d434a73d2d4fb010ee80fede2bf3ce872b1d04c8` | `self-build-adopter-dogfood.yml` | `v4-alpha` |
|
|
68
|
+
| Buildchain `d434a73d2d4fb010ee80fede2bf3ce872b1d04c8` | `self-build-public-consumer-dogfood.yml` | `v4-alpha` |
|
|
69
|
+
| agent-hub-demo `3f5de882b63464d70c50df0fd7ca418f487b794b` | `v4-adopter-delivery-qualification.yml` | `v4-alpha` |
|
|
70
|
+
| agent-hub-demo `3f5de882b63464d70c50df0fd7ca418f487b794b` | `v4-stage-capsule-canary.yml` | `v4` |
|
|
71
|
+
| taolu `6dcccdc3bd2c8b1801c7f6decea08ae7877aac2b` | `verify.yml` | `v4-alpha` |
|
|
72
|
+
|
|
73
|
+
The initial published channel readback was `v4` at
|
|
74
|
+
`da5e2db8384313e899eace87aea0a1a8e28c0aa8` and `v4-alpha` at
|
|
75
|
+
`dd87f43f7122b41c4ce7f1f6d1888521cc7f892f`. Neither contained the three canonical
|
|
76
|
+
filenames at that initial readback. The later evidence below records progress
|
|
77
|
+
without changing the scope or revisions of that initial inventory.
|
|
78
|
+
|
|
79
|
+
## Rollout evidence as of 2026-09-06
|
|
80
|
+
|
|
81
|
+
The canonical invocation-identity preparation was merged in
|
|
82
|
+
[Buildchain PR 3508](https://github.com/kungfu-systems/buildchain/pull/3508).
|
|
83
|
+
All three canonical paths are available in the immutable `v4.0.2-alpha.35`
|
|
84
|
+
release (`feab078f5d7c9927a3525154003e321700e8ca30`) and the later
|
|
85
|
+
`v4.0.2-alpha.37` release (`f5fa1a4a3e8d83eccee79c077e5f48417760c9df`).
|
|
86
|
+
The floating `v4-alpha` readback selects alpha.37.
|
|
87
|
+
|
|
88
|
+
[Taolu PR 30](https://github.com/kungfu-systems/taolu/pull/30) migrated its
|
|
89
|
+
Stage Capsule call on `@v4-alpha`, preserving the existing dual locks.
|
|
90
|
+
Its exact source `b3f4c12578d733ff44165ff1acafe131251b8907` passed
|
|
91
|
+
[consumer Verify](https://github.com/kungfu-systems/taolu/actions/runs/33975786413)
|
|
92
|
+
on all declared platforms and
|
|
93
|
+
[native delivery](https://github.com/kungfu-systems/taolu/actions/runs/34005576362).
|
|
94
|
+
The protected dev landing is `7e15123733110ad8ce484241934bbf0ef99fbb45`.
|
|
95
|
+
|
|
96
|
+
The stable `v4` readback remains
|
|
97
|
+
`da5e2db8384313e899eace87aea0a1a8e28c0aa8`, which does not contain the canonical
|
|
98
|
+
paths. Stable publication and the agent-hub-demo migration remain **pending**
|
|
99
|
+
outside this development change's completion boundary. The alpha.35
|
|
100
|
+
[Build Surface Fixture](https://github.com/kungfu-systems/buildchain/actions/runs/34005360217)
|
|
101
|
+
passed, but this individual result does not establish complete stable
|
|
102
|
+
qualification or authorize moving the stable channel.
|
|
103
|
+
|
|
104
|
+
## Recovery
|
|
105
|
+
|
|
106
|
+
Before channel retirement, revert consumer changes to the still-available old
|
|
107
|
+
paths if verification fails. After retirement, restore the exact previous
|
|
108
|
+
provider implementation through a reviewed corrective commit and normal
|
|
109
|
+
publication; do not rewrite immutable release tags or bypass admission checks.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kungfu-tech/buildchain",
|
|
3
|
-
"version": "4.0.2
|
|
3
|
+
"version": "4.0.2",
|
|
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",
|
|
@@ -156,16 +156,18 @@
|
|
|
156
156
|
"scripts": {
|
|
157
157
|
"precheck:static": "prettier --check architecture/decisions/0003-two-phase-delivery-warrant.md architecture/v4-delivery-authority-parity.json contracts/dev-delivery-authority-v2.schema.json dist/site/schemas/dev-delivery-authority-v2.schema.json docs/dev-delivery-qualification-landing-adr.md packages/core/dev-delivery-authority-candidate.js packages/core/dev-delivery-authority-evidence.js packages/core/dev-delivery-authority-landing.js packages/core/dev-delivery-authority-observation.js packages/core/dev-delivery-authority-qualification.js packages/core/dev-delivery-authority-settlement.js packages/core/dev-delivery-authority-state.js packages/core/dev-delivery-execution-failure.js packages/core/dev-delivery-execution-transfer.js packages/core/dev-delivery-landing-readback.js packages/core/dev-delivery-landing-terminal-evidence.js packages/core/dev-delivery-landing-testing-port.js packages/core/dev-delivery-native-execution.js packages/core/dev-delivery-native-proof.js packages/core/dev-delivery-process-boundary.js packages/core/dev-delivery-warrant-qualification.js packages/core/dev-delivery-warrant-state.js scripts/dev-delivery-authority-command-adapters.mjs scripts/dev-delivery-authority-provider.mjs scripts/dev-delivery-authority.mjs scripts/dev-delivery-native-run.mjs scripts/dev-delivery-process-boundary.mjs scripts/dev-delivery-two-phase-resume.mjs scripts/dev-delivery-two-phase.mjs scripts/dev-delivery-warrant-options.mjs scripts/dev-delivery-warrant-store.mjs templates/native-dev-delivery.yml",
|
|
158
158
|
"operator:windows-jit": "bash scripts/aws-windows-jit-operator.sh",
|
|
159
|
-
"check": "pnpm run check:static && node scripts/check-ci-lane-change-budget.mjs && node scripts/check-v4-public-dogfood-contract.mjs && node scripts/check-v4-floating-consumer-policy-contract.mjs && node scripts/check-v4-release-topology.mjs && pnpm run check:v4-bridge && pnpm run check:v4-contracts && node scripts/check-maintainability.mjs && node scripts/check-internal-architecture.mjs && node scripts/generate-agent-change-map.mjs && node scripts/check-inventory.mjs && node scripts/check-core-mechanism-inventory.mjs && node scripts/check-v4-runtime-semantic-closure.mjs && node scripts/check-v3-v4-capability-inventory.mjs && node scripts/check-release-tail-contract.mjs && node scripts/v4-publication-rehearsal-fixture.mjs --check && node scripts/v4-architecture.mjs validate && node scripts/v4-warrant-shadow-plan.mjs validate && pnpm run check:site && pnpm run check:workflows && pnpm run test:unit && pnpm run check:golden-path && node scripts/check-action-bundles.mjs",
|
|
159
|
+
"check": "pnpm run check:static && node scripts/check-ci-lane-change-budget.mjs && node scripts/check-v4-public-dogfood-contract.mjs && node scripts/check-v4-floating-consumer-policy-contract.mjs && node scripts/check-v4-release-topology.mjs && node scripts/check-v4-universal-workflow-bootstrap.mjs && pnpm run check:v4-bridge && pnpm run check:v4-contracts:rust && pnpm run check:v4-wasm && node scripts/check-maintainability.mjs && node scripts/check-internal-architecture.mjs && node scripts/generate-agent-change-map.mjs && node scripts/check-inventory.mjs && node scripts/check-core-mechanism-inventory.mjs && node scripts/check-v4-runtime-semantic-closure.mjs && node scripts/check-v3-v4-capability-inventory.mjs && node scripts/check-release-tail-contract.mjs && node scripts/v4-publication-rehearsal-fixture.mjs --check && node scripts/v4-architecture.mjs validate && node scripts/v4-warrant-shadow-plan.mjs validate && pnpm run check:site && pnpm run check:workflows && pnpm run test:unit && pnpm run check:golden-path && node scripts/check-action-bundles.mjs",
|
|
160
160
|
"check:static": "node scripts/check-javascript-syntax.mjs && prettier --check architecture/*.json contracts/release-tail-provider-bindings-v1.schema.json contracts/v4-canonical-contracts-v1.schema.json contracts/v4-compatibility-facts-v1.schema.json contracts/v4-delivery-warrant-semantic-diff-report-v1.schema.json contracts/v4-delivery-warrant-trace-v1.schema.json contracts/v4-floating-consumer-policy-receipt-v1.schema.json contracts/v4-runtime-ref-resume-authority-v1.schema.json contracts/v4-tail-reseal-v1.schema.json contracts/v4-host-contract-v1.schema.json contracts/v4-provider-operation-journal-v1.schema.json contracts/v4-release-activation-shadow-v1.schema.json contracts/v4-stable-publication-fence-v1.schema.json contracts/v4-partial-mutation-recovery-v1.schema.json contracts/v4-stage-capsule-v1.schema.json contracts/v4-stage-capsule-store-v1.schema.json contracts/v4-stage-capsule-resume-v1.schema.json contracts/release-tail-capabilities-v1.schema.json contracts/fixtures/release-tail-capabilities-v1/*.json contracts/fixtures/v4-delivery-warrant-trace-v1/*.json contracts/fixtures/v4-floating-consumer-policy-v1/*.json contracts/fixtures/v4-runtime-ref-resume-authority-v1/*.json contracts/fixtures/v4-tail-reseal-v1/*.json contracts/fixtures/v4-compatibility-facts-v1/*.json contracts/fixtures/v4-provider-operation-journal-v1/*.json contracts/fixtures/v4-provider-readback-idempotency-v1/*.json contracts/fixtures/v4-release-activation-shadow-v1/*.json contracts/fixtures/v4-stable-publication-fence-v1/*.json contracts/fixtures/v4-partial-mutation-recovery-v1/*.json contracts/fixtures/v4-stage-capsule-v1/*.json contracts/fixtures/v4-stage-capsule-store-v1/*.json contracts/fixtures/v4-stage-capsule-resume-v1/*.json bin/internal/command-registry.mjs bin/internal/compatibility-facts-cli.mjs packages/core/v4-canonical-contracts.js packages/core/kungfu-temporal-fact.js packages/core/buildchain-compatibility-fact.js packages/core/buildchain-compatibility-authority.js packages/core/buildchain-compatibility-proof.js packages/core/v4-floating-consumer-evidence.js packages/core/v4-floating-consumer-policy.js packages/core/v4-floating-consumer-release-passport.js packages/core/v4-runtime-ref-resume-authority.js packages/core/v4-tail-reseal-contract.js packages/core/v4-tail-reseal-github.js packages/core/v4-tail-reseal-receipt.js packages/core/v4-tail-reseal.js packages/core/v4-runtime-selector-persistence.js packages/core/v4-provider-operation-journal.js packages/core/v4-provider-readback-idempotency.js packages/core/v4-release-activation-shadow.js packages/core/v4-stable-publication-fence.js packages/core/v4-partial-mutation-recovery-qualification.js packages/core/v4-stage-capsule.js packages/core/v4-stage-capsule-store.js packages/core/v4-stage-capsule-local-store.js packages/core/v4-platform-stage-checkpoints.js packages/core/v4-stage-capsule-resume-planner.js packages/core/v4-stage-capsule-qualification.js packages/core/v4-stage-capsule-qualification-campaign.js packages/core/v4-delivery-warrant-fixture-runner.js packages/core/v4-delivery-warrant-read-candidate.js packages/core/v4-delivery-warrant-semantic-diff-gate.js packages/core/v4-delivery-warrant-shadow-adapter.js scripts/authorize-promotion-runtime-override.cjs scripts/check-core-mechanism-inventory.mjs scripts/check-v4-runtime-semantic-closure.mjs scripts/check-release-tail-contract.mjs scripts/check-javascript-syntax.mjs scripts/check-maintainability.mjs scripts/dev-pr-prequeue-guard.mjs scripts/check-v4-public-dogfood-contract.mjs scripts/maintainability-metrics.mjs scripts/maintainability-domain-metrics.mjs scripts/maintainability-governance.mjs scripts/generate-agent-change-map.mjs scripts/public-reference.mjs scripts/site-reference-registry.mjs scripts/generate-public-reference.mjs scripts/v4-architecture.mjs scripts/v4-bridge-bootstrap.mjs scripts/v4-bridge-evidence.mjs scripts/v4-consumer-policy.mjs scripts/v4-host-adapter.mjs scripts/v4-platform-stage-checkpoint-rehearsal.mjs scripts/v4-stage-capsule-resume-rehearsal.mjs scripts/v4-stage-capsule-qualification.mjs scripts/v4-tail-reseal-macos-rehearsal.mjs scripts/v4-tail-reseal.mjs scripts/v4-warrant-shadow-plan.mjs scripts/verify-golden-path.mjs tests/authorize-promotion-runtime-override.test.mjs tests/command-registry.test.mjs tests/core-mechanism-inventory.test.mjs tests/release-tail-contract.test.mjs tests/maintainability.test.mjs tests/maintainability-governance.test.mjs tests/promotion-responsibilities.test.mjs tests/public-reference.test.mjs tests/v4-architecture.test.mjs tests/v4-bridge.test.mjs tests/v4-canonical-contracts.test.mjs tests/v4-delivery-warrant-fixture-runner.test.mjs tests/v4-delivery-warrant-read-candidate.test.mjs tests/v4-floating-consumer-policy.test.mjs tests/v4-runtime-ref-resume-authority.test.mjs tests/v4-runtime-semantic-closure.test.mjs tests/v4-tail-reseal.test.mjs tests/v4-tail-reseal-parity.test.mjs tests/v4-compatibility-facts.test.mjs tests/v4-platform-stage-checkpoints.test.mjs tests/v4-provider-operation-journal.test.mjs tests/v4-provider-readback-idempotency.test.mjs tests/v4-public-dogfood-contract.test.mjs tests/v4-release-activation-shadow.test.mjs tests/v4-stable-publication-fence.test.mjs tests/v4-partial-mutation-recovery-qualification.test.mjs tests/v4-stage-capsule.test.mjs tests/v4-stage-capsule-store.test.mjs tests/v4-stage-capsule-resume-planner.test.mjs tests/v4-stage-capsule-qualification.test.mjs tests/v4-warrant-shadow-plan.test.mjs",
|
|
161
161
|
"check:v4-bridge": "cargo fmt --manifest-path crates/buildchain-v4-bridge/Cargo.toml -- --check && cargo clippy --locked --manifest-path crates/buildchain-v4-bridge/Cargo.toml -- -D warnings && cargo test --locked --manifest-path crates/buildchain-v4-bridge/Cargo.toml",
|
|
162
|
-
"check:v4-contracts": "
|
|
163
|
-
"
|
|
162
|
+
"check:v4-contracts": "pnpm run check:v4-contracts:rust && node --test tests/v4-canonical-contracts.test.mjs tests/v4-delivery-warrant-fixture-runner.test.mjs tests/v4-delivery-warrant-read-candidate.test.mjs tests/v4-domain-wasm.test.mjs tests/v4-floating-consumer-policy-contract.test.mjs tests/v4-floating-consumer-policy.test.mjs tests/v4-runtime-ref-resume-authority.test.mjs tests/v4-tail-reseal.test.mjs tests/v4-tail-reseal-parity.test.mjs tests/v4-compatibility-facts.test.mjs tests/v4-publication-rehearsal.test.mjs tests/v4-platform-stage-checkpoints.test.mjs tests/v4-provider-operation-journal.test.mjs tests/v4-provider-readback-idempotency.test.mjs tests/v4-public-dogfood-contract.test.mjs tests/v4-release-activation-shadow.test.mjs tests/v4-stable-publication-fence.test.mjs tests/v4-partial-mutation-recovery-qualification.test.mjs tests/v4-stage-capsule.test.mjs tests/v4-stage-capsule-store.test.mjs tests/v4-stage-capsule-resume-planner.test.mjs tests/v4-stage-capsule-qualification.test.mjs",
|
|
163
|
+
"build:v4-wasm": "node scripts/build-v4-domain-wasm.mjs",
|
|
164
|
+
"check:v4-wasm": "prettier --check packages/core/v4-domain-wasm.js packages/core/v4-domain-wasm-artifact.js scripts/build-v4-domain-wasm.mjs scripts/copy-v4-domain-wasm.mjs tests/v4-domain-wasm.test.mjs && node scripts/build-v4-domain-wasm.mjs --check",
|
|
165
|
+
"check:workflows": "node scripts/check-workflow-taxonomy.mjs && bash scripts/check-workflows.sh",
|
|
164
166
|
"generate:reference": "node scripts/generate-public-reference.mjs",
|
|
165
167
|
"check:reference": "node scripts/generate-public-reference.mjs --check",
|
|
166
168
|
"generate:next-development": "node scripts/generate-next-development-guidance.mjs",
|
|
167
169
|
"check:next-development": "node scripts/generate-next-development-guidance.mjs --check",
|
|
168
|
-
"generate:site": "pnpm run generate:next-development && pnpm run generate:reference && node scripts/generate-site-bundle.mjs",
|
|
170
|
+
"generate:site": "pnpm run generate:workflows && pnpm run generate:next-development && pnpm run generate:reference && node scripts/generate-site-bundle.mjs",
|
|
169
171
|
"check:site": "pnpm run check:next-development && pnpm run check:reference && node scripts/generate-site-bundle.mjs --check",
|
|
170
172
|
"check:golden-path": "node scripts/verify-golden-path.mjs",
|
|
171
173
|
"test:unit": "node --test tests/*.test.mjs",
|
|
@@ -175,7 +177,9 @@
|
|
|
175
177
|
"pack:check": "npm pack --dry-run --json --registry=https://registry.npmjs.org/",
|
|
176
178
|
"bridge:v4:build": "node scripts/v4-bridge-bootstrap.mjs build",
|
|
177
179
|
"bridge:v4:run": "node scripts/v4-bridge-bootstrap.mjs run",
|
|
178
|
-
"bridge:v4:evidence": "node scripts/v4-bridge-evidence.mjs"
|
|
180
|
+
"bridge:v4:evidence": "node scripts/v4-bridge-evidence.mjs",
|
|
181
|
+
"check:v4-contracts:rust": "cargo fmt --manifest-path crates/buildchain-v4-contracts/Cargo.toml -- --check && cargo clippy --locked --manifest-path crates/buildchain-v4-contracts/Cargo.toml -- -D warnings && cargo test --locked --manifest-path crates/buildchain-v4-contracts/Cargo.toml",
|
|
182
|
+
"generate:workflows": "node scripts/generate-workflow-taxonomy.mjs"
|
|
179
183
|
},
|
|
180
184
|
"devDependencies": {
|
|
181
185
|
"ajv": "8.17.1",
|
|
@@ -417,7 +417,7 @@ function kfdBindingBody({ manifest, manifestGate, legacyProjection, paths }) {
|
|
|
417
417
|
gatePath: paths.gate,
|
|
418
418
|
gateRoot: manifestGate.gateRoot,
|
|
419
419
|
},
|
|
420
|
-
source: jsonClone(manifestGate.source),
|
|
420
|
+
adopter: jsonClone(manifestGate.adopter), source: jsonClone(manifestGate.source),
|
|
421
421
|
standardPackage: jsonClone(manifestGate.standardPackage),
|
|
422
422
|
witness: {
|
|
423
423
|
decisionRoot: manifestGate.decisionWitness.root,
|
|
@@ -445,10 +445,10 @@ export function createKfdAdopterReleaseBinding({
|
|
|
445
445
|
manifestPath = "kfd-adopter-manifest.json",
|
|
446
446
|
gatePath = "kfd-adopter-manifest-gate.json",
|
|
447
447
|
legacyProjectionPath = "kfd-support.json",
|
|
448
|
-
expectedSourceSha = "",
|
|
448
|
+
expectedAdopterId = "kungfu-systems/buildchain", expectedSourceRepository = "", expectedSourceSha = "",
|
|
449
449
|
} = {}) {
|
|
450
450
|
const gate = validateKfdAdopterManifestGate(manifestGate, {
|
|
451
|
-
expectedSourceSha,
|
|
451
|
+
expectedAdopterId, expectedSourceRepository, expectedSourceSha,
|
|
452
452
|
checkedAt: manifestGate?.checkedAt,
|
|
453
453
|
});
|
|
454
454
|
const legacy = validateKfdLegacySupportMatrixProjection(legacyProjection, { manifest, manifestGate });
|
|
@@ -468,7 +468,7 @@ export function validateKfdAdopterReleaseBinding(binding, {
|
|
|
468
468
|
manifest,
|
|
469
469
|
manifestGate,
|
|
470
470
|
legacyProjection,
|
|
471
|
-
expectedSourceSha = "",
|
|
471
|
+
expectedAdopterId = "kungfu-systems/buildchain", expectedSourceRepository = "", expectedSourceSha = "",
|
|
472
472
|
} = {}) {
|
|
473
473
|
const issues = [];
|
|
474
474
|
if (!binding || binding.schemaVersion !== 1 || binding.contract !== KFD_ADOPTER_RELEASE_BINDING_CONTRACT) {
|
|
@@ -488,7 +488,7 @@ export function validateKfdAdopterReleaseBinding(binding, {
|
|
|
488
488
|
manifestPath: binding.authority?.manifestPath,
|
|
489
489
|
gatePath: binding.authority?.gatePath,
|
|
490
490
|
legacyProjectionPath: binding.legacyProjection?.path,
|
|
491
|
-
expectedSourceSha,
|
|
491
|
+
expectedAdopterId, expectedSourceRepository, expectedSourceSha,
|
|
492
492
|
});
|
|
493
493
|
if (stableJson(binding) !== stableJson(expected)) {
|
|
494
494
|
issues.push({ code: "adopter-release-binding-drift", path: "", message: "release binding differs from the exact manifest, gate, or legacy projection closure" });
|
|
@@ -833,7 +833,7 @@ export function createBuildchainContractWorld({
|
|
|
833
833
|
breakingDefaults: {
|
|
834
834
|
evidenceContract: "buildchain.controller-evidence/v1",
|
|
835
835
|
descriptorVersion: descriptor.version,
|
|
836
|
-
workflowPath: descriptor.workflow.path,
|
|
836
|
+
workflowPath: descriptor.workflow.contractPath || descriptor.workflow.path,
|
|
837
837
|
requiredStages: descriptor.expected.stages.filter((stage) => stage.required).map((stage) => stage.id),
|
|
838
838
|
capabilities: descriptor.expected.capabilities,
|
|
839
839
|
evidenceRequirements: descriptor.expected.evidence,
|
|
@@ -58,7 +58,7 @@ const WORKFLOW_AND_ACTION_FILES = Object.freeze([
|
|
|
58
58
|
".github/workflows/.build.yml",
|
|
59
59
|
".github/workflows/.release-candidate-promote.yml",
|
|
60
60
|
".github/workflows/release-candidate-promote.yml",
|
|
61
|
-
".github/workflows/
|
|
61
|
+
".github/workflows/self-release-promote.yml",
|
|
62
62
|
".github/workflows/github-artifact-attestation.yml",
|
|
63
63
|
"actions/github-artifact-attestation/action.yml",
|
|
64
64
|
"actions/github-artifact-attestation/index.js",
|
|
@@ -446,7 +446,7 @@ export function createBuildchainKfdSurfaceRegistry({ root = process.cwd() } = {}
|
|
|
446
446
|
{
|
|
447
447
|
name: "Buildchain standalone binary distribution",
|
|
448
448
|
artifactPath: "dist/binary",
|
|
449
|
-
evidencePath: ".github/workflows/binary-distribution.yml",
|
|
449
|
+
evidencePath: ".github/workflows/self-build-binary-distribution.yml",
|
|
450
450
|
distribution: normalizeKfd3DistributionDeclaration({
|
|
451
451
|
registrar: "shifu",
|
|
452
452
|
tasks: ["binary:build"],
|
|
@@ -10,41 +10,40 @@ const DESCRIPTORS = Object.freeze([
|
|
|
10
10
|
[".github/workflows/.release-candidate-promote.yml", "product-publication", true, ["npm-publish", "github-release", "channel-ref"], "trusted-publishing", "none", "fixed", "caller-bound"],
|
|
11
11
|
[".github/workflows/.publication-authority.yml", "evidence-publication"],
|
|
12
12
|
[".github/workflows/.release-verify.yml", "governance-write"],
|
|
13
|
-
[".github/workflows/.sam-release.yml", "retired-deny"],
|
|
14
13
|
[".github/workflows/.sam-verify.yml", "retired-deny"],
|
|
15
14
|
[".github/workflows/.sync-remote-git.yml", "governance-write"],
|
|
16
15
|
[".github/workflows/.web-surface.yml", "product-publication", true, ["web-production"], "oidc", "consumer-defined", "caller-bound", "caller-bound"],
|
|
17
|
-
[".github/workflows/.wheel-release.yml", "retired-deny"],
|
|
18
16
|
[".github/workflows/.wheel-verify.yml", "retired-deny"],
|
|
19
17
|
[".github/workflows/.binary-release-assets.yml", "product-publication", true, ["github-release"], "github-token", "buildchain-release-assets"],
|
|
20
|
-
[".github/workflows/binary-distribution.yml", "evidence-publication"],
|
|
21
|
-
[".github/workflows/
|
|
18
|
+
[".github/workflows/self-build-binary-distribution.yml", "evidence-publication"],
|
|
19
|
+
[".github/workflows/self-release-binary-assets.yml", "governance-write"],
|
|
22
20
|
[".github/workflows/artifact-signing-authority.yml", "evidence-publication"],
|
|
23
|
-
[".github/workflows/
|
|
24
|
-
[".github/workflows/build-
|
|
21
|
+
[".github/workflows/self-build-demo-dogfood.yml", "governance-write"],
|
|
22
|
+
[".github/workflows/self-build-fixture.yml", "non-publication-oidc"],
|
|
25
23
|
[".github/workflows/build.yml", "non-publication-oidc"],
|
|
26
|
-
[".github/workflows/
|
|
27
|
-
[".github/workflows/
|
|
28
|
-
[".github/workflows/
|
|
29
|
-
[".github/workflows/
|
|
30
|
-
[".github/workflows/
|
|
24
|
+
[".github/workflows/bootstrap.yml", "product-publication", true, ["universal-candidate-execution"], "caller-secrets", "none", "fixed", "caller-bound"],
|
|
25
|
+
[".github/workflows/self-build-alpha-dogfood.yml", "non-publication-oidc"],
|
|
26
|
+
[".github/workflows/self-ops-dev-delivery.yml", "governance-write"],
|
|
27
|
+
[".github/workflows/self-ops-patrol-daily.yml", "governance-write"],
|
|
28
|
+
[".github/workflows/self-ops-patrol-monthly.yml", "governance-write"],
|
|
29
|
+
[".github/workflows/self-ops-patrol-weekly.yml", "governance-write"],
|
|
31
30
|
[".github/workflows/buildchain-patrol.yml", "governance-write"],
|
|
32
|
-
[".github/workflows/
|
|
33
|
-
[".github/workflows/
|
|
34
|
-
[".github/workflows/
|
|
31
|
+
[".github/workflows/self-ops-promotion-recovery.yml", "governance-write"],
|
|
32
|
+
[".github/workflows/self-release-promote.yml", "governance-write"],
|
|
33
|
+
[".github/workflows/self-ops-stable-candidate-patrol.yml", "governance-write"],
|
|
35
34
|
[".github/workflows/dev-qualification-patrol.yml", "governance-write"],
|
|
36
35
|
[".github/workflows/dev-alpha-candidate-patrol.yml", "governance-write"],
|
|
37
36
|
[".github/workflows/dev-delivery-warrant-close.yml", "governance-write"],
|
|
38
37
|
[".github/workflows/dev-delivery-warrant-cancel.yml", "governance-write"],
|
|
39
|
-
[".github/workflows/
|
|
38
|
+
[".github/workflows/self-ops-merge-queue.yml", "governance-write"],
|
|
40
39
|
[".github/workflows/dev-pr-auto-merge.yml", "governance-write"],
|
|
41
|
-
[".github/workflows/
|
|
42
|
-
[".github/workflows/
|
|
43
|
-
[".github/workflows/
|
|
40
|
+
[".github/workflows/self-ops-housekeeping-daily.yml", "governance-write"],
|
|
41
|
+
[".github/workflows/self-ops-housekeeping-monthly.yml", "governance-write"],
|
|
42
|
+
[".github/workflows/self-ops-housekeeping-weekly.yml", "governance-write"],
|
|
44
43
|
[".github/workflows/engineering-housekeeper.yml", "governance-write"],
|
|
45
|
-
[".github/workflows/
|
|
44
|
+
[".github/workflows/self-ops-governance-audit.yml", "governance-write"],
|
|
46
45
|
[".github/workflows/github-artifact-attestation.yml", "evidence-publication", true, ["github-artifact-attestation"], "oidc", "consumer-defined", "caller-bound", "caller-bound"],
|
|
47
|
-
[".github/workflows/npm-
|
|
46
|
+
[".github/workflows/self-release-npm-dry-run.yml", "dry-run-only"],
|
|
48
47
|
[".github/workflows/paper-release-sealed.yml", "product-publication", true, ["npm-publish", "github-release"], "trusted-publishing", "none", "fixed", "caller-bound"],
|
|
49
48
|
[".github/workflows/paper-release.yml", "product-publication", true, ["npm-publish", "github-release"], "trusted-publishing", "none", "fixed", "caller-bound"],
|
|
50
49
|
[".github/workflows/patrol-daily.yml", "governance-write"],
|
|
@@ -53,16 +52,18 @@ const DESCRIPTORS = Object.freeze([
|
|
|
53
52
|
[".github/workflows/patrol-weekly.yml", "governance-write"],
|
|
54
53
|
[".github/workflows/publication-artifact.yml", "evidence-publication"],
|
|
55
54
|
[".github/workflows/release-candidate-promote.yml", "product-publication", true, ["npm-publish", "github-release", "channel-ref"], "trusted-publishing", "none", "fixed", "caller-bound"],
|
|
56
|
-
[".github/workflows/release-line-
|
|
55
|
+
[".github/workflows/self-release-line-open.yml", "governance-write"],
|
|
57
56
|
[".github/workflows/release-propagation.yml", "governance-write"],
|
|
58
57
|
[".github/workflows/release-tail.yml", "product-publication", true, ["artifact.publish", "signed-channel.commit", "release.activate", "released-evidence.synthesize"], "caller-secrets", "caller-bound", "caller-bound", "fixed"],
|
|
59
|
-
[".github/workflows/release-verify.yml", "governance-write"],
|
|
58
|
+
[".github/workflows/self-build-release-verify-compat.yml", "governance-write"],
|
|
60
59
|
[".github/workflows/stable-candidate-patrol.yml", "governance-write"],
|
|
61
|
-
[".github/workflows/
|
|
60
|
+
[".github/workflows/universal-bootstrap-recovery.yml", "product-publication", true, ["universal-candidate-execution"], "caller-secrets", "none", "fixed", "caller-bound"],
|
|
61
|
+
[".github/workflows/self-ops-bootstrap-dogfood.yml", "product-publication", true, ["universal-candidate-execution"], "caller-secrets", "none", "fixed", "caller-bound"],
|
|
62
|
+
[".github/workflows/self-release-tail-dogfood.yml", "product-publication", true, ["artifact.publish", "signed-channel.commit", "release.activate", "released-evidence.synthesize"], "caller-secrets", "none", "fixed", "fixed"],
|
|
62
63
|
]);
|
|
63
64
|
|
|
64
|
-
export function buildchainPublicationAuthorityDescriptors() {
|
|
65
|
-
|
|
65
|
+
export function buildchainPublicationAuthorityDescriptors({ root = process.cwd() } = {}) {
|
|
66
|
+
const descriptors = DESCRIPTORS.map(([
|
|
66
67
|
workflowPath,
|
|
67
68
|
authorityClass,
|
|
68
69
|
publicationCapable = false,
|
|
@@ -84,6 +85,21 @@ export function buildchainPublicationAuthorityDescriptors() {
|
|
|
84
85
|
environmentMode,
|
|
85
86
|
runnerPolicy: publicationCapable ? "qualified-measured" : "unqualified",
|
|
86
87
|
}));
|
|
88
|
+
const taxonomyPath = path.join(root, "architecture/workflow-taxonomy.json");
|
|
89
|
+
if (!fs.existsSync(taxonomyPath)) return descriptors;
|
|
90
|
+
const taxonomy = JSON.parse(fs.readFileSync(taxonomyPath, "utf8"));
|
|
91
|
+
for (const entry of taxonomy.entries) {
|
|
92
|
+
if (!entry.compatibility) continue;
|
|
93
|
+
const previous = descriptors.find((item) => item.workflowPath === entry.compatibility.path);
|
|
94
|
+
if (!previous) continue;
|
|
95
|
+
const prefix = entry.role === "component" ? "." : `${entry.role}-`;
|
|
96
|
+
const workflowPath = `.github/workflows/${prefix}${entry.category}-${entry.purpose}.yml`;
|
|
97
|
+
if (fs.readFileSync(path.join(root, workflowPath), "utf8") !== fs.readFileSync(path.join(root, entry.compatibility.path), "utf8")) {
|
|
98
|
+
throw new Error(`publication authority alias differs from canonical workflow: ${workflowPath}`);
|
|
99
|
+
}
|
|
100
|
+
descriptors.push({ ...previous, workflowPath, publisherWorkflowPath: previous.publisherWorkflowPath === previous.workflowPath ? workflowPath : previous.publisherWorkflowPath });
|
|
101
|
+
}
|
|
102
|
+
return descriptors;
|
|
87
103
|
}
|
|
88
104
|
export function createBuildchainPublicationAuthorityRegistry({ root = process.cwd() } = {}) {
|
|
89
105
|
const workflowsDir = path.join(root, ".github", "workflows");
|
|
@@ -94,7 +110,7 @@ export function createBuildchainPublicationAuthorityRegistry({ root = process.cw
|
|
|
94
110
|
text: fs.readFileSync(path.join(workflowsDir, name), "utf8"),
|
|
95
111
|
}));
|
|
96
112
|
return createPublicationAuthorityRegistry({
|
|
97
|
-
descriptors: buildchainPublicationAuthorityDescriptors(),
|
|
113
|
+
descriptors: buildchainPublicationAuthorityDescriptors({ root }),
|
|
98
114
|
workflows,
|
|
99
115
|
});
|
|
100
116
|
}
|
|
Binary file
|
|
@@ -10,6 +10,7 @@ const AUTHORITY_CLASSES = new Set([
|
|
|
10
10
|
"post-merge-advisory",
|
|
11
11
|
"diagnostic",
|
|
12
12
|
"evidence",
|
|
13
|
+
"governed-delegation",
|
|
13
14
|
"release",
|
|
14
15
|
]);
|
|
15
16
|
const TRIGGER_CLASSES = new Set([
|
|
@@ -196,7 +197,19 @@ export function evaluateCiLaneChangeBudget({
|
|
|
196
197
|
}
|
|
197
198
|
const declarations = new Map();
|
|
198
199
|
const diagnostics = [];
|
|
199
|
-
|
|
200
|
+
const familyDeclarations = (policy.declarationFamilies || []).flatMap(
|
|
201
|
+
({ laneIds, ...declaration }) => {
|
|
202
|
+
if (!Array.isArray(laneIds) || laneIds.length === 0)
|
|
203
|
+
throw new Error("CI lane declaration family requires laneIds");
|
|
204
|
+
if (new Set(laneIds).size !== laneIds.length)
|
|
205
|
+
throw new Error("CI lane declaration family laneIds must be unique");
|
|
206
|
+
return laneIds.map((laneId) => ({ ...declaration, laneId }));
|
|
207
|
+
},
|
|
208
|
+
);
|
|
209
|
+
for (const declaration of [
|
|
210
|
+
...(policy.declarations || []),
|
|
211
|
+
...familyDeclarations,
|
|
212
|
+
]) {
|
|
200
213
|
const laneId = String(declaration?.laneId || "").trim();
|
|
201
214
|
if (!laneId) throw new Error("CI lane declaration laneId is required");
|
|
202
215
|
if (declarations.has(laneId))
|
|
@@ -196,6 +196,9 @@ function descriptorDigest(descriptor) {
|
|
|
196
196
|
|
|
197
197
|
export function createControllerRegistry({ workflows = [] } = {}) {
|
|
198
198
|
const workflowById = new Map(workflows.map((entry) => [entry.id, entry]));
|
|
199
|
+
for (const entry of workflows) {
|
|
200
|
+
if (entry.taxonomy && !entry.taxonomy.compatibilityAlias && !workflowById.has(entry.taxonomy.id)) workflowById.set(entry.taxonomy.id, entry);
|
|
201
|
+
}
|
|
199
202
|
const controllers = CONTROLLER_SPECS.map((spec) => {
|
|
200
203
|
const workflow = workflowById.get(spec.workflowId);
|
|
201
204
|
if (!workflow) throw new Error(`controller ${spec.id} requires workflow descriptor ${spec.workflowId}`);
|
|
@@ -215,7 +218,7 @@ export function createControllerRegistry({ workflows = [] } = {}) {
|
|
|
215
218
|
contract: BUILDCHAIN_CONTROLLER_DESCRIPTOR_CONTRACT,
|
|
216
219
|
id: spec.id,
|
|
217
220
|
version: spec.version,
|
|
218
|
-
workflow: { id: workflow.id, path: workflow.path },
|
|
221
|
+
workflow: { id: workflow.id, path: workflow.path, ...(workflow.taxonomy?.contractPath ? { contractPath: workflow.taxonomy.contractPath } : {}) },
|
|
219
222
|
inputs,
|
|
220
223
|
expected: {
|
|
221
224
|
stages: spec.stages.map((id) => ({ id, required: !optionalStages.has(id) })),
|