@kungfu-tech/buildchain 4.0.2-alpha.8 → 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.
Files changed (157) hide show
  1. package/AGENTS.md +10 -1
  2. package/CONTRIBUTING.md +24 -0
  3. package/README.md +2 -2
  4. package/actions/promote-buildchain-ref/README.md +1 -1
  5. package/actions/v4-release-candidate-promote/README.md +28 -0
  6. package/architecture/agent-change-map.md +64 -7
  7. package/architecture/ci-lane-change-budget.json +366 -0
  8. package/architecture/internal-capabilities.json +53 -8
  9. package/architecture/maintainability-debt.json +147 -93
  10. package/architecture/maintainability-policy.json +32 -28
  11. package/architecture/release-tail-contract-inventory.json +6 -6
  12. package/architecture/v4-architecture-constitution.md +23 -20
  13. package/architecture/v4-cross-platform-adopter-qualification.json +1 -1
  14. package/architecture/v4-delivery-authority-parity.json +2 -2
  15. package/architecture/v4-delivery-warrant-shadow-bootstrap-plan.json +1 -1
  16. package/architecture/v4-floating-consumer-policy.json +2 -2
  17. package/architecture/v4-next-development-parity.json +5 -5
  18. package/architecture/v4-partial-mutation-recovery-qualification.json +4 -1
  19. package/architecture/v4-platform-stage-checkpoints.json +1 -1
  20. package/architecture/v4-provider-operation-journal-contract.json +5 -2
  21. package/architecture/v4-publication-facade-patches.json +64 -0
  22. package/architecture/v4-release-activation-shadow-domain.json +5 -2
  23. package/architecture/v4-release-topology.json +74 -39
  24. package/architecture/v4-rust-wasm-production-authority.json +58 -0
  25. package/architecture/v4-stable-publication-fence.json +5 -2
  26. package/architecture/v4-stage-capsule-qualification.json +2 -2
  27. package/architecture/v4-tail-reseal-parity.json +8 -6
  28. package/architecture/v4-universal-workflow-bootstrap.json +171 -0
  29. package/architecture/v4-universal-workflow-fault-campaign.json +72 -0
  30. package/architecture/v4-universal-workflow-train-admission.json +40 -0
  31. package/architecture/workflow-taxonomy.json +1451 -0
  32. package/bin/buildchain.mjs +7 -7
  33. package/contracts/buildchain-v2-residuals-v1.json +57 -48
  34. package/contracts/dev-delivery-authority-v2.schema.json +16 -2
  35. package/contracts/fixtures/v4-tail-reseal-v1/valid.json +1 -1
  36. package/contracts/v4-canonical-contracts-v1.schema.json +1 -0
  37. package/dist/site/buildchain-contract.json +93 -48
  38. package/dist/site/buildchain-site.json +222 -69
  39. package/dist/site/capability-registry.json +4 -4
  40. package/dist/site/controller-registry.json +50 -13
  41. package/dist/site/kfd-claims.json +2585 -1000
  42. package/dist/site/kfd-upstream-aggregate.json +1 -1
  43. package/dist/site/manual-registry.json +13 -13
  44. package/dist/site/node-api-registry.json +120 -115
  45. package/dist/site/page-registry.json +204 -51
  46. package/dist/site/public-surface-audit.json +3205 -1219
  47. package/dist/site/publication-authority-registry.json +1124 -362
  48. package/dist/site/publication-registry.json +4 -4
  49. package/dist/site/schemas/dev-delivery-authority-v2.schema.json +16 -2
  50. package/dist/site/site-manifest.json +17 -17
  51. package/dist/site/workflow-registry.json +5061 -1659
  52. package/docs/MAP.md +1 -0
  53. package/docs/auditable-demo.md +1 -1
  54. package/docs/cli.md +21 -8
  55. package/docs/dev-delivery-warrant.md +1 -1
  56. package/docs/engineering-housekeeper.md +3 -3
  57. package/docs/kfd-support.md +26 -2
  58. package/docs/next-development-transition.md +2 -2
  59. package/docs/node-api-reference.md +190 -190
  60. package/docs/publication-authority.md +2 -2
  61. package/docs/release-candidate.md +3 -3
  62. package/docs/release-flow.md +67 -19
  63. package/docs/release-governance.md +8 -8
  64. package/docs/release-passport.md +27 -2
  65. package/docs/reusable-build-surface.md +16 -0
  66. package/docs/v4-adopter-delivery.md +2 -2
  67. package/docs/v4-production-release.md +71 -8
  68. package/docs/v4-rust-wasm-production-authority.md +58 -0
  69. package/docs/v4-stage-capsule.md +2 -2
  70. package/docs/v4-tail-reseal.md +1 -1
  71. package/docs/workflow-catalog.md +154 -0
  72. package/docs/workflow-path-migration.md +109 -0
  73. package/package.json +10 -6
  74. package/packages/core/artifact-verification-envelope.js +5 -5
  75. package/packages/core/buildchain-contract.js +1 -1
  76. package/packages/core/buildchain-kfd-claims.js +2 -2
  77. package/packages/core/buildchain-publication-authority.js +42 -26
  78. package/packages/core/buildchain-v4-domain.wasm +0 -0
  79. package/packages/core/ci-lane-change-budget.js +14 -1
  80. package/packages/core/controller-evidence.js +4 -1
  81. package/packages/core/dev-delivery-candidate-identity.js +40 -6
  82. package/packages/core/dev-delivery-warrant-state.js +3 -4
  83. package/packages/core/dev-delivery-warrant.js +12 -2
  84. package/packages/core/github-governance-authority.js +4 -4
  85. package/packages/core/kfd-adopter-manifest.js +46 -47
  86. package/packages/core/next-development-projection.js +2 -2
  87. package/packages/core/paper-agent-entry.js +30 -4
  88. package/packages/core/paper-fleet.js +1 -1
  89. package/packages/core/paper-runtime-channels.js +348 -0
  90. package/packages/core/paper-scaffold-content.js +10 -0
  91. package/packages/core/paper.js +37 -71
  92. package/packages/core/release-line-dry-run.js +1 -1
  93. package/packages/core/release-passport-contract.js +5 -5
  94. package/packages/core/release-passport.js +5 -4
  95. package/packages/core/release-tail-provider-plane.js +68 -1048
  96. package/packages/core/v4-canonical-contracts.js +10 -75
  97. package/packages/core/v4-domain-wasm-artifact.js +7 -0
  98. package/packages/core/v4-domain-wasm.js +216 -0
  99. package/packages/core/v4-floating-consumer-evidence.js +1 -1
  100. package/packages/core/v4-floating-consumer-policy.js +1 -1
  101. package/packages/core/v4-partial-mutation-recovery-qualification.js +9 -386
  102. package/packages/core/v4-product-publication.js +19 -349
  103. package/packages/core/v4-protected-publication-source.js +19 -21
  104. package/packages/core/v4-provider-operation-journal.js +18 -487
  105. package/packages/core/v4-provider-readback-idempotency.js +12 -97
  106. package/packages/core/v4-release-activation-shadow.js +13 -500
  107. package/packages/core/v4-release-invocation.js +28 -389
  108. package/packages/core/v4-stable-publication-fence.js +13 -342
  109. package/packages/core/v4-universal-workflow-bootstrap.js +586 -0
  110. package/scripts/binary-publication-evidence.mjs +135 -0
  111. package/scripts/build-contract-core.mjs +1 -14
  112. package/scripts/build-v4-domain-wasm.mjs +189 -0
  113. package/scripts/check-action-bundles.mjs +12 -2
  114. package/scripts/check-ci-lane-change-budget.mjs +4 -1
  115. package/scripts/check-core-mechanism-inventory.mjs +4 -3
  116. package/scripts/check-inventory.mjs +35 -44
  117. package/scripts/check-maintainability.mjs +16 -113
  118. package/scripts/check-v4-floating-consumer-policy-contract.mjs +2 -2
  119. package/scripts/check-v4-public-dogfood-contract.mjs +22 -9
  120. package/scripts/check-v4-release-topology.mjs +90 -33
  121. package/scripts/check-v4-runtime-semantic-closure.mjs +4 -1
  122. package/scripts/check-v4-universal-workflow-bootstrap.mjs +266 -0
  123. package/scripts/check-workflow-taxonomy.mjs +6 -0
  124. package/scripts/copy-v4-domain-wasm.mjs +14 -0
  125. package/scripts/dev-delivery-authority-command-adapters.mjs +1 -1
  126. package/scripts/dev-delivery-authority.mjs +8 -8
  127. package/scripts/dev-delivery-source-proof-reuse.mjs +2 -1
  128. package/scripts/dev-delivery-warrant-options.mjs +14 -9
  129. package/scripts/dev-delivery-warrant-store.mjs +73 -7
  130. package/scripts/dev-delivery-warrant-transition.mjs +109 -0
  131. package/scripts/dev-delivery-warrant.mjs +76 -99
  132. package/scripts/dev-pr-auto-merge.mjs +15 -15
  133. package/scripts/generate-channel-build-workflow.mjs +7 -2
  134. package/scripts/generate-channel-promotion-workflow.mjs +7 -5
  135. package/scripts/generate-site-bundle.mjs +11 -11
  136. package/scripts/generate-v4-universal-workflow-facades.mjs +458 -0
  137. package/scripts/generate-workflow-taxonomy.mjs +25 -0
  138. package/scripts/github-output.mjs +31 -0
  139. package/scripts/maintainability-metrics.mjs +16 -5
  140. package/scripts/maintainability-public-surface.mjs +115 -0
  141. package/scripts/next-development-review.mjs +307 -0
  142. package/scripts/paper-work-fleet-cli.mjs +2 -0
  143. package/scripts/release-asset-client.mjs +91 -0
  144. package/scripts/release-candidate-resolver.mjs +9 -9
  145. package/scripts/source-verification-evidence.mjs +344 -0
  146. package/scripts/stable-candidate-qualification.mjs +1 -1
  147. package/scripts/universal-facade-maintainability.mjs +82 -0
  148. package/scripts/v4-product-publication-intent.mjs +13 -6
  149. package/scripts/v4-publication-settlement.mjs +211 -0
  150. package/scripts/v4-universal-workflow-backflow.mjs +212 -0
  151. package/scripts/v4-universal-workflow-engine.mjs +618 -0
  152. package/scripts/v4-universal-workflow-self-dogfood.mjs +205 -0
  153. package/scripts/verify-version-state-delta.mjs +173 -0
  154. package/scripts/workflow-taxonomy.mjs +507 -0
  155. package/templates/native-dev-delivery.yml +4 -7
  156. package/templates/universal-buildchain-bootstrap-recovery.yml +282 -0
  157. 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-alpha.8",
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": "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 && 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-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
- "check:workflows": "bash scripts/check-workflows.sh",
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/buildchain-ref-promotion.yml",
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/binary-release-assets.yml", "governance-write"],
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/auditable-demo.yml", "governance-write"],
24
- [".github/workflows/build-surface-fixture.yml", "non-publication-oidc"],
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/buildchain-alpha-self-dogfood.yml", "non-publication-oidc"],
27
- [".github/workflows/buildchain-dev-delivery.yml", "governance-write"],
28
- [".github/workflows/buildchain-patrol-daily.yml", "governance-write"],
29
- [".github/workflows/buildchain-patrol-monthly.yml", "governance-write"],
30
- [".github/workflows/buildchain-patrol-weekly.yml", "governance-write"],
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/buildchain-ref-promotion-recovery.yml", "governance-write"],
33
- [".github/workflows/buildchain-ref-promotion.yml", "governance-write"],
34
- [".github/workflows/buildchain-stable-candidate-patrol.yml", "governance-write"],
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/dev-merge-queue-governance.yml", "governance-write"],
38
+ [".github/workflows/self-ops-merge-queue.yml", "governance-write"],
40
39
  [".github/workflows/dev-pr-auto-merge.yml", "governance-write"],
41
- [".github/workflows/engineering-housekeeper-daily.yml", "governance-write"],
42
- [".github/workflows/engineering-housekeeper-monthly.yml", "governance-write"],
43
- [".github/workflows/engineering-housekeeper-weekly.yml", "governance-write"],
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/github-governance-audit.yml", "governance-write"],
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-publish.yml", "dry-run-only"],
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-bootstrap.yml", "governance-write"],
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/v4-declarative-release-tail-dogfood.yml", "product-publication", true, ["artifact.publish", "signed-channel.commit", "release.activate", "released-evidence.synthesize"], "caller-secrets", "none", "fixed", "fixed"],
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
- return DESCRIPTORS.map(([
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
  }
@@ -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
- for (const declaration of policy.declarations || []) {
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) })),