@kungfu-tech/buildchain 4.0.2-alpha.34 → 4.0.2-alpha.35
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 +9 -0
- package/CONTRIBUTING.md +24 -0
- package/README.md +2 -2
- package/actions/promote-buildchain-ref/README.md +1 -1
- package/architecture/agent-change-map.md +6 -4
- package/architecture/internal-capabilities.json +4 -4
- package/architecture/maintainability-debt.json +13 -11
- package/architecture/maintainability-policy.json +4 -4
- package/architecture/release-tail-contract-inventory.json +6 -6
- 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 +1 -1
- package/architecture/v4-next-development-parity.json +4 -4
- package/architecture/v4-platform-stage-checkpoints.json +1 -1
- package/architecture/v4-publication-facade-patches.json +53 -0
- package/architecture/v4-release-topology.json +46 -29
- package/architecture/v4-rust-wasm-production-authority.json +1 -0
- package/architecture/v4-stage-capsule-qualification.json +1 -1
- package/architecture/v4-universal-workflow-bootstrap.json +1 -1
- package/architecture/v4-universal-workflow-fault-campaign.json +1 -1
- package/architecture/v4-universal-workflow-train-admission.json +4 -4
- package/architecture/workflow-taxonomy.json +1437 -0
- package/contracts/buildchain-v2-residuals-v1.json +64 -1
- 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 +20 -20
- package/dist/site/buildchain-site.json +122 -56
- package/dist/site/capability-registry.json +4 -4
- package/dist/site/controller-registry.json +5 -4
- package/dist/site/kfd-claims.json +2617 -964
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +10 -10
- package/dist/site/node-api-registry.json +26 -21
- package/dist/site/page-registry.json +107 -41
- package/dist/site/public-surface-audit.json +3196 -1128
- package/dist/site/publication-authority-registry.json +1179 -417
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/site-manifest.json +14 -14
- package/dist/site/workflow-registry.json +5484 -1924
- package/docs/MAP.md +1 -0
- package/docs/auditable-demo.md +1 -1
- package/docs/cli.md +3 -3
- package/docs/dev-delivery-warrant.md +1 -1
- package/docs/engineering-housekeeper.md +3 -3
- package/docs/next-development-transition.md +1 -1
- package/docs/node-api-reference.md +30 -30
- 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/v4-adopter-delivery.md +1 -1
- package/docs/v4-production-release.md +45 -8
- package/docs/v4-stage-capsule.md +1 -1
- package/docs/workflow-catalog.md +151 -0
- package/package.json +8 -6
- package/packages/core/buildchain-contract.js +1 -1
- package/packages/core/buildchain-kfd-claims.js +2 -2
- package/packages/core/buildchain-publication-authority.js +40 -25
- package/packages/core/buildchain-v4-domain.wasm +0 -0
- package/packages/core/controller-evidence.js +4 -1
- package/packages/core/github-governance-authority.js +4 -4
- package/packages/core/next-development-projection.js +1 -1
- package/packages/core/release-line-dry-run.js +1 -1
- package/packages/core/v4-canonical-contracts.js +1 -0
- package/packages/core/v4-domain-wasm-artifact.js +2 -2
- package/packages/core/v4-floating-consumer-evidence.js +1 -1
- package/packages/core/v4-floating-consumer-policy.js +1 -1
- package/scripts/binary-publication-evidence.mjs +135 -0
- package/scripts/check-ci-lane-change-budget.mjs +4 -1
- package/scripts/check-core-mechanism-inventory.mjs +4 -3
- package/scripts/check-inventory.mjs +22 -22
- package/scripts/check-v4-floating-consumer-policy-contract.mjs +1 -1
- package/scripts/check-v4-public-dogfood-contract.mjs +18 -5
- package/scripts/check-v4-release-topology.mjs +5 -2
- package/scripts/check-v4-runtime-semantic-closure.mjs +4 -1
- package/scripts/check-v4-universal-workflow-bootstrap.mjs +5 -9
- package/scripts/check-workflow-taxonomy.mjs +6 -0
- package/scripts/generate-channel-build-workflow.mjs +2 -1
- package/scripts/generate-channel-promotion-workflow.mjs +4 -3
- package/scripts/generate-site-bundle.mjs +11 -11
- package/scripts/generate-v4-universal-workflow-facades.mjs +24 -6
- package/scripts/generate-workflow-taxonomy.mjs +25 -0
- package/scripts/maintainability-metrics.mjs +16 -5
- package/scripts/release-asset-client.mjs +90 -0
- package/scripts/release-candidate-resolver.mjs +1 -1
- package/scripts/source-verification-evidence.mjs +344 -0
- package/scripts/stable-candidate-qualification.mjs +1 -1
- package/scripts/v4-publication-settlement.mjs +207 -0
- package/scripts/v4-universal-workflow-self-dogfood.mjs +1 -1
- package/scripts/verify-version-state-delta.mjs +173 -0
- package/scripts/workflow-taxonomy.mjs +468 -0
|
@@ -7,12 +7,12 @@ source_level: repository-contracts + protected-provider-readback
|
|
|
7
7
|
confidence: high
|
|
8
8
|
sensitivity: public
|
|
9
9
|
evidence_grade: A
|
|
10
|
-
review_state:
|
|
11
|
-
last_reviewed: 2026-
|
|
10
|
+
review_state: unreviewed
|
|
11
|
+
last_reviewed: 2026-09-05
|
|
12
12
|
ai_provenance:
|
|
13
|
-
model_family: GPT-
|
|
13
|
+
model_family: GPT-6
|
|
14
14
|
product: Codex
|
|
15
|
-
generated_at: 2026-
|
|
15
|
+
generated_at: 2026-09-05
|
|
16
16
|
invisible_context: Provider credentials and private provider state were not read.
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -26,8 +26,9 @@ dev/v4/v4.0 -> alpha/v4/v4.0 -> release/v4/v4.0
|
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
Public consumers use `v4-alpha` for the current prerelease channel and `v4`
|
|
29
|
-
for stable
|
|
30
|
-
|
|
29
|
+
for stable, with matching stable and alpha contract locks. Exact commits and
|
|
30
|
+
immutable release tags identify retained evidence and explicitly admitted runtime
|
|
31
|
+
inputs; tracked v4 reusable-workflow selectors remain `@v4` or `@v4-alpha`.
|
|
31
32
|
|
|
32
33
|
The release transaction is fail-closed. The v4 provider-operation journal,
|
|
33
34
|
activation plan, stable publication fence, and partial-mutation recovery plan
|
|
@@ -51,8 +52,9 @@ exact alpha tag, and npm's `alpha` tag.
|
|
|
51
52
|
## Non-destructive rollback
|
|
52
53
|
|
|
53
54
|
Rollback never rewrites an exact tag, release, package version, Passport, or
|
|
54
|
-
provider journal. Stop forward promotion
|
|
55
|
-
|
|
55
|
+
provider journal. Stop forward promotion and select the last verified exact
|
|
56
|
+
v4 runtime through an admitted, non-persistent recovery input; keep tracked v4
|
|
57
|
+
workflow selectors on their locked floating channel. Use `release/v3/v3.0`
|
|
56
58
|
coordinate only as an explicit compatibility rollback reference. Restoring v3
|
|
57
59
|
as production authority requires a new reviewed cutover; it is not an implicit
|
|
58
60
|
fallback.
|
|
@@ -61,3 +63,38 @@ Before any retry, compare the current provider state with the retained
|
|
|
61
63
|
transaction and operation roots. Resume only missing eligible operations.
|
|
62
64
|
Conflicting state remains `repair-required` or terminal and must not be
|
|
63
65
|
converted into success by moving a floating ref.
|
|
66
|
+
|
|
67
|
+
## Publication settlement and binary recovery
|
|
68
|
+
|
|
69
|
+
Publication, next-development advancement, and binary distribution have separate
|
|
70
|
+
results. A completed native ReleaseReceipt remains publication evidence when the
|
|
71
|
+
later generated Dev PR is still pending or its enqueue call fails. SETTLE verifies
|
|
72
|
+
the immutable invocation, transaction, both provider states, receipt and Passport
|
|
73
|
+
roots even when APPLY fails after publication. It has no provider write permission.
|
|
74
|
+
|
|
75
|
+
APPLY retains that exact chain in the existing GitHub Release as
|
|
76
|
+
`buildchain-publication-settlement.json`; it reads the exact tag and original
|
|
77
|
+
`buildchain.release.json` before adding the packet. The APPLY artifact also retains
|
|
78
|
+
`delivery-summary.json`, which reports publication and next-development separately.
|
|
79
|
+
A green workflow label cannot substitute for this receipt verification.
|
|
80
|
+
|
|
81
|
+
Binary Distribution reads this settlement and the original publication Passport.
|
|
82
|
+
Tag creation can precede settlement, so it waits at most 40 observations, 15 seconds
|
|
83
|
+
apart, for missing evidence. A mismatched source, tag, Passport or receipt fails
|
|
84
|
+
immediately. It no longer requires a legacy `buildchain/release-state/*` ref for v4.
|
|
85
|
+
|
|
86
|
+
The sealed binary publisher retains the publication Passport and writes its own
|
|
87
|
+
Passport as `buildchain.binary.release.json`. All v4 asset collisions are checked
|
|
88
|
+
before uploads: identical bytes are preserved, absent assets are added, and
|
|
89
|
+
conflicting bytes are rejected. Each publication authorization is retained as
|
|
90
|
+
`buildchain.binary.capability-<sha256>.json`, so a fresh recovery capability does
|
|
91
|
+
not overwrite an earlier grant. Existing assets are never clobbered. Recovery uses
|
|
92
|
+
the same exact successful Binary Distribution evidence run through
|
|
93
|
+
`self-release-binary-assets.yml`; it does not rebuild already admitted archives or
|
|
94
|
+
create another npm version. Read back all three platform archives, checksums,
|
|
95
|
+
both Passports and the settlement packet before declaring distribution complete.
|
|
96
|
+
|
|
97
|
+
The native publication receipt authorizes no stable promotion and makes no claim
|
|
98
|
+
that a pending next-development PR has merged. Inspect the exact PR head, protected
|
|
99
|
+
base and merge result independently. A retry of the publication phase must first
|
|
100
|
+
read retained provider facts and resume only missing operations.
|
package/docs/v4-stage-capsule.md
CHANGED
|
@@ -137,7 +137,7 @@ shadow-only: it does not skip a v3 production stage or move v3 authority.
|
|
|
137
137
|
qualification boundary. Buildchain and external repositories use the same
|
|
138
138
|
Buildchain-owned public reusable workflow,
|
|
139
139
|
`.github/workflows/v4-stage-capsule-canary.yml`. Buildchain's caller is the thin
|
|
140
|
-
`.github/workflows/
|
|
140
|
+
`.github/workflows/self-build-public-consumer-dogfood.yml`; it has no steps, copied
|
|
141
141
|
orchestration, local action, direct qualification invocation, or private
|
|
142
142
|
consumer profile. Candidate recursion is resolved only by publishing the exact
|
|
143
143
|
candidate at `train/v4/v4.0/<capability>` and calling that fully qualified
|
|
@@ -0,0 +1,151 @@
|
|
|
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
|
+
|
|
60
|
+
A role, category or implementation edit must preserve or deliberately update
|
|
61
|
+
all related declarations. Run `pnpm run generate:workflows` and
|
|
62
|
+
`pnpm run check:workflows`; the full `pnpm run check` remains required.
|
|
63
|
+
|
|
64
|
+
## public
|
|
65
|
+
|
|
66
|
+
| Canonical workflow | Category | Invocation | Status | Purpose | Compatibility path |
|
|
67
|
+
| --- | --- | --- | --- | --- | --- |
|
|
68
|
+
| [public-build-adopter-qualification.yml](../.github/workflows/public-build-adopter-qualification.yml) | build | reusable | active | V4 Adopter Delivery | `v4-adopter-delivery.yml` |
|
|
69
|
+
| [public-build-candidate.yml](../.github/workflows/public-build-candidate.yml) | build | reusable | active | Buildchain Channel Build | `build.yml` |
|
|
70
|
+
| [public-build-check.yml](../.github/workflows/public-build-check.yml) | build | reusable | active | Buildchain Check | `check.yml` |
|
|
71
|
+
| [public-build-demo.yml](../.github/workflows/public-build-demo.yml) | build | reusable | active | Buildchain Declarative Binary Auditable Demo | `.declarative-auditable-demo.yml` |
|
|
72
|
+
| [public-build-publication.yml](../.github/workflows/public-build-publication.yml) | build | reusable | active | Buildchain Publication Artifact | `publication-artifact.yml` |
|
|
73
|
+
| [public-build-stage-capsule-canary.yml](../.github/workflows/public-build-stage-capsule-canary.yml) | build | reusable | active | V4 Stage Capsule Canary | `v4-stage-capsule-canary.yml` |
|
|
74
|
+
| [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` |
|
|
75
|
+
| [public-ops-bootstrap-recovery.yml](../.github/workflows/public-ops-bootstrap-recovery.yml) | ops | reusable | active | Universal Buildchain Bootstrap Recovery | `universal-bootstrap-recovery.yml` |
|
|
76
|
+
| [public-ops-bootstrap.yml](../.github/workflows/public-ops-bootstrap.yml) | ops | reusable | active | Buildchain Universal Bootstrap | `bootstrap.yml` |
|
|
77
|
+
| [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` |
|
|
78
|
+
| [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` |
|
|
79
|
+
| [public-ops-housekeeping.yml](../.github/workflows/public-ops-housekeeping.yml) | ops | reusable | active | Engineering Housekeeper | `engineering-housekeeper.yml` |
|
|
80
|
+
| [public-ops-observed-evidence.yml](../.github/workflows/public-ops-observed-evidence.yml) | ops | reusable | active | Patrol Observed Evidence | `patrol-observed-evidence.yml` |
|
|
81
|
+
| [public-ops-patrol-daily.yml](../.github/workflows/public-ops-patrol-daily.yml) | ops | reusable | active | Buildchain Patrol Daily | `patrol-daily.yml` |
|
|
82
|
+
| [public-ops-patrol-monthly.yml](../.github/workflows/public-ops-patrol-monthly.yml) | ops | reusable | active | Buildchain Patrol Monthly | `patrol-monthly.yml` |
|
|
83
|
+
| [public-ops-patrol-weekly.yml](../.github/workflows/public-ops-patrol-weekly.yml) | ops | reusable | active | Buildchain Patrol Weekly | `patrol-weekly.yml` |
|
|
84
|
+
| [public-ops-patrol.yml](../.github/workflows/public-ops-patrol.yml) | ops | reusable | active | Buildchain Patrol | `buildchain-patrol.yml` |
|
|
85
|
+
| [public-ops-release-governance.yml](../.github/workflows/public-ops-release-governance.yml) | ops | reusable | active | Release Governance Reconcile | `release-governance-reconcile.yml` |
|
|
86
|
+
| [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` |
|
|
87
|
+
| [public-ops-tail-reseal.yml](../.github/workflows/public-ops-tail-reseal.yml) | ops | reusable | active | V4 Retained Candidate Tail Reseal | `v4-tail-reseal.yml` |
|
|
88
|
+
| [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` |
|
|
89
|
+
| [public-ops-warrant-close.yml](../.github/workflows/public-ops-warrant-close.yml) | ops | reusable | active | Dev Delivery Warrant Close | `dev-delivery-warrant-close.yml` |
|
|
90
|
+
| [public-release-artifact-attestation.yml](../.github/workflows/public-release-artifact-attestation.yml) | release | reusable | active | Buildchain GitHub Artifact Attestation | `github-artifact-attestation.yml` |
|
|
91
|
+
| [public-release-paper-sealed.yml](../.github/workflows/public-release-paper-sealed.yml) | release | reusable | active | Buildchain Sealed Paper Release | `paper-release-sealed.yml` |
|
|
92
|
+
| [public-release-paper.yml](../.github/workflows/public-release-paper.yml) | release | reusable | active | Buildchain Paper Release | `paper-release.yml` |
|
|
93
|
+
| [public-release-promote.yml](../.github/workflows/public-release-promote.yml) | release | reusable | active | Release Candidate Promote | `release-candidate-promote.yml` |
|
|
94
|
+
| [public-release-propagation.yml](../.github/workflows/public-release-propagation.yml) | release | reusable | active | Release Propagation | `release-propagation.yml` |
|
|
95
|
+
| [public-release-signing-authority.yml](../.github/workflows/public-release-signing-authority.yml) | release | dispatch-service | active | Buildchain Artifact Signing Authority | `artifact-signing-authority.yml` |
|
|
96
|
+
| [public-release-tail.yml](../.github/workflows/public-release-tail.yml) | release | reusable | active | Declarative Release Tail | `release-tail.yml` |
|
|
97
|
+
| [public-release-web.yml](../.github/workflows/public-release-web.yml) | release | reusable | active | Buildchain Web Surface | `.web-surface.yml` |
|
|
98
|
+
|
|
99
|
+
## component
|
|
100
|
+
|
|
101
|
+
| Canonical workflow | Category | Invocation | Status | Purpose | Compatibility path |
|
|
102
|
+
| --- | --- | --- | --- | --- | --- |
|
|
103
|
+
| [.build-demo-adapter.yml](../.github/workflows/.build-demo-adapter.yml) | build | reusable | active | Buildchain Auditable Demo | `.auditable-demo.yml` |
|
|
104
|
+
| [.build-engine.yml](../.github/workflows/.build-engine.yml) | build | reusable | active | Buildchain Build | `.build.yml` |
|
|
105
|
+
| [.build-gate-profile.yml](../.github/workflows/.build-gate-profile.yml) | build | reusable | active | Buildchain Shifu Gate Profile | `.gate-profile.yml` |
|
|
106
|
+
| [.build-release-verify-compat.yml](../.github/workflows/.build-release-verify-compat.yml) | build | reusable | compatibility | release verify | `.release-verify.yml` |
|
|
107
|
+
| [.build-sam-verify-compat.yml](../.github/workflows/.build-sam-verify-compat.yml) | build | reusable | compatibility | sam verify | `.sam-verify.yml` |
|
|
108
|
+
| [.build-wheel-verify-compat.yml](../.github/workflows/.build-wheel-verify-compat.yml) | build | reusable | compatibility | wheel verify | `.wheel-verify.yml` |
|
|
109
|
+
| [.ops-git-sync.yml](../.github/workflows/.ops-git-sync.yml) | ops | reusable | active | sync remote git | `.sync-remote-git.yml` |
|
|
110
|
+
| [.release-authority.yml](../.github/workflows/.release-authority.yml) | release | reusable | active | Buildchain Sealed Publication Authority | `.publication-authority.yml` |
|
|
111
|
+
| [.release-binary-assets.yml](../.github/workflows/.release-binary-assets.yml) | release | reusable | active | Buildchain Binary Release Assets | `.binary-release-assets.yml` |
|
|
112
|
+
| [.release-minor-bump-compat.yml](../.github/workflows/.release-minor-bump-compat.yml) | release | reusable | compatibility | bump minor version | `.bump-minor-version.yml` |
|
|
113
|
+
| [.release-page-sync-retired.yml](../.github/workflows/.release-page-sync-retired.yml) | release | reusable | retired | sync release page | `.sync-release-page.yml` |
|
|
114
|
+
| [.release-promote.yml](../.github/workflows/.release-promote.yml) | release | reusable | active | Release Candidate Promote Advanced | `.release-candidate-promote.yml` |
|
|
115
|
+
|
|
116
|
+
## self
|
|
117
|
+
|
|
118
|
+
| Canonical workflow | Category | Invocation | Status | Purpose | Compatibility path |
|
|
119
|
+
| --- | --- | --- | --- | --- | --- |
|
|
120
|
+
| [self-build-adopter-dogfood.yml](../.github/workflows/self-build-adopter-dogfood.yml) | build | repository | active | V4 Adopter Delivery Dogfood | — |
|
|
121
|
+
| [self-build-alpha-dogfood.yml](../.github/workflows/self-build-alpha-dogfood.yml) | build | repository | active | Buildchain Alpha Self-Dogfood | — |
|
|
122
|
+
| [self-build-binary-distribution.yml](../.github/workflows/self-build-binary-distribution.yml) | build | repository | active | Binary Distribution | — |
|
|
123
|
+
| [self-build-candidate-lab.yml](../.github/workflows/self-build-candidate-lab.yml) | build | repository | active | Candidate Lab | — |
|
|
124
|
+
| [self-build-demo-dogfood.yml](../.github/workflows/self-build-demo-dogfood.yml) | build | repository | active | Buildchain Declarative Demo Dogfood | — |
|
|
125
|
+
| [self-build-demo-media-qualification.yml](../.github/workflows/self-build-demo-media-qualification.yml) | build | repository | active | Auditable Demo Media Profile Qualification | — |
|
|
126
|
+
| [self-build-fixture.yml](../.github/workflows/self-build-fixture.yml) | build | repository | active | Build Surface Fixture | — |
|
|
127
|
+
| [self-build-public-consumer-dogfood.yml](../.github/workflows/self-build-public-consumer-dogfood.yml) | build | repository | active | V4 Public Consumer Dogfood | — |
|
|
128
|
+
| [self-build-release-verify-compat.yml](../.github/workflows/self-build-release-verify-compat.yml) | build | repository | compatibility | Release - Verify | — |
|
|
129
|
+
| [self-build-stable-candidate-qualification.yml](../.github/workflows/self-build-stable-candidate-qualification.yml) | build | repository | active | Buildchain Stable Candidate Qualification | — |
|
|
130
|
+
| [self-build-verify.yml](../.github/workflows/self-build-verify.yml) | build | repository | active | Verify | — |
|
|
131
|
+
| [self-ops-bootstrap-dogfood.yml](../.github/workflows/self-ops-bootstrap-dogfood.yml) | ops | repository | active | Universal Bootstrap Train-First Self-Dogfood | — |
|
|
132
|
+
| [self-ops-dev-delivery.yml](../.github/workflows/self-ops-dev-delivery.yml) | ops | repository | active | Buildchain Dev Delivery | — |
|
|
133
|
+
| [self-ops-governance-audit.yml](../.github/workflows/self-ops-governance-audit.yml) | ops | repository | active | GitHub Governance Authority Audit | — |
|
|
134
|
+
| [self-ops-housekeeping-daily.yml](../.github/workflows/self-ops-housekeeping-daily.yml) | ops | repository | active | Engineering Housekeeper Daily | — |
|
|
135
|
+
| [self-ops-housekeeping-monthly.yml](../.github/workflows/self-ops-housekeeping-monthly.yml) | ops | repository | active | Engineering Housekeeper Monthly | — |
|
|
136
|
+
| [self-ops-housekeeping-weekly.yml](../.github/workflows/self-ops-housekeeping-weekly.yml) | ops | repository | active | Engineering Housekeeper Weekly | — |
|
|
137
|
+
| [self-ops-merge-queue.yml](../.github/workflows/self-ops-merge-queue.yml) | ops | repository | active | Dev Merge Queue Governance | — |
|
|
138
|
+
| [self-ops-patrol-daily.yml](../.github/workflows/self-ops-patrol-daily.yml) | ops | repository | active | Buildchain Dogfood Patrol Daily | — |
|
|
139
|
+
| [self-ops-patrol-monthly.yml](../.github/workflows/self-ops-patrol-monthly.yml) | ops | repository | active | Buildchain Dogfood Patrol Monthly | — |
|
|
140
|
+
| [self-ops-patrol-weekly.yml](../.github/workflows/self-ops-patrol-weekly.yml) | ops | repository | active | Buildchain Dogfood Patrol Weekly | — |
|
|
141
|
+
| [self-ops-promotion-recovery.yml](../.github/workflows/self-ops-promotion-recovery.yml) | ops | repository | active | Buildchain Ref Promotion Recovery | — |
|
|
142
|
+
| [self-ops-recovery-failure-dogfood.yml](../.github/workflows/self-ops-recovery-failure-dogfood.yml) | ops | repository | active | Buildchain Candidate Recovery Dogfood Startup Failure | — |
|
|
143
|
+
| [self-ops-runner-smoke.yml](../.github/workflows/self-ops-runner-smoke.yml) | ops | repository | active | Self-hosted Runner Smoke | — |
|
|
144
|
+
| [self-ops-stable-candidate-patrol.yml](../.github/workflows/self-ops-stable-candidate-patrol.yml) | ops | repository | active | Buildchain Dogfood Stable Candidate Patrol | — |
|
|
145
|
+
| [self-release-binary-assets.yml](../.github/workflows/self-release-binary-assets.yml) | release | repository | active | Binary Release Assets | — |
|
|
146
|
+
| [self-release-line-open.yml](../.github/workflows/self-release-line-open.yml) | release | repository | active | Release Line Bootstrap | — |
|
|
147
|
+
| [self-release-new-version-compat.yml](../.github/workflows/self-release-new-version-compat.yml) | release | repository | compatibility | Release - New Version | — |
|
|
148
|
+
| [self-release-npm-dry-run.yml](../.github/workflows/self-release-npm-dry-run.yml) | release | repository | active | Publish npm package | — |
|
|
149
|
+
| [self-release-promote.yml](../.github/workflows/self-release-promote.yml) | release | repository | active | Buildchain Ref Promotion | — |
|
|
150
|
+
| [self-release-rehearsal-dogfood.yml](../.github/workflows/self-release-rehearsal-dogfood.yml) | release | repository | active | V4 Publication Rehearsal Dogfood | — |
|
|
151
|
+
| [self-release-tail-dogfood.yml](../.github/workflows/self-release-tail-dogfood.yml) | release | repository | active | V4 Declarative Release Tail Dogfood | — |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kungfu-tech/buildchain",
|
|
3
|
-
"version": "4.0.2-alpha.
|
|
3
|
+
"version": "4.0.2-alpha.35",
|
|
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,18 +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 && node scripts/check-v4-universal-workflow-bootstrap.mjs && pnpm run check:v4-bridge && pnpm run check:v4-contracts && 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",
|
|
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": "
|
|
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
163
|
"build:v4-wasm": "node scripts/build-v4-domain-wasm.mjs",
|
|
164
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": "bash scripts/check-workflows.sh",
|
|
165
|
+
"check:workflows": "node scripts/check-workflow-taxonomy.mjs && bash scripts/check-workflows.sh",
|
|
166
166
|
"generate:reference": "node scripts/generate-public-reference.mjs",
|
|
167
167
|
"check:reference": "node scripts/generate-public-reference.mjs --check",
|
|
168
168
|
"generate:next-development": "node scripts/generate-next-development-guidance.mjs",
|
|
169
169
|
"check:next-development": "node scripts/generate-next-development-guidance.mjs --check",
|
|
170
|
-
"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",
|
|
171
171
|
"check:site": "pnpm run check:next-development && pnpm run check:reference && node scripts/generate-site-bundle.mjs --check",
|
|
172
172
|
"check:golden-path": "node scripts/verify-golden-path.mjs",
|
|
173
173
|
"test:unit": "node --test tests/*.test.mjs",
|
|
@@ -177,7 +177,9 @@
|
|
|
177
177
|
"pack:check": "npm pack --dry-run --json --registry=https://registry.npmjs.org/",
|
|
178
178
|
"bridge:v4:build": "node scripts/v4-bridge-bootstrap.mjs build",
|
|
179
179
|
"bridge:v4:run": "node scripts/v4-bridge-bootstrap.mjs run",
|
|
180
|
-
"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"
|
|
181
183
|
},
|
|
182
184
|
"devDependencies": {
|
|
183
185
|
"ajv": "8.17.1",
|
|
@@ -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"],
|
|
@@ -15,35 +15,35 @@ const DESCRIPTORS = Object.freeze([
|
|
|
15
15
|
[".github/workflows/.web-surface.yml", "product-publication", true, ["web-production"], "oidc", "consumer-defined", "caller-bound", "caller-bound"],
|
|
16
16
|
[".github/workflows/.wheel-verify.yml", "retired-deny"],
|
|
17
17
|
[".github/workflows/.binary-release-assets.yml", "product-publication", true, ["github-release"], "github-token", "buildchain-release-assets"],
|
|
18
|
-
[".github/workflows/binary-distribution.yml", "evidence-publication"],
|
|
19
|
-
[".github/workflows/
|
|
18
|
+
[".github/workflows/self-build-binary-distribution.yml", "evidence-publication"],
|
|
19
|
+
[".github/workflows/self-release-binary-assets.yml", "governance-write"],
|
|
20
20
|
[".github/workflows/artifact-signing-authority.yml", "evidence-publication"],
|
|
21
|
-
[".github/workflows/
|
|
22
|
-
[".github/workflows/build-
|
|
21
|
+
[".github/workflows/self-build-demo-dogfood.yml", "governance-write"],
|
|
22
|
+
[".github/workflows/self-build-fixture.yml", "non-publication-oidc"],
|
|
23
23
|
[".github/workflows/build.yml", "non-publication-oidc"],
|
|
24
24
|
[".github/workflows/bootstrap.yml", "product-publication", true, ["universal-candidate-execution"], "caller-secrets", "none", "fixed", "caller-bound"],
|
|
25
|
-
[".github/workflows/
|
|
26
|
-
[".github/workflows/
|
|
27
|
-
[".github/workflows/
|
|
28
|
-
[".github/workflows/
|
|
29
|
-
[".github/workflows/
|
|
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"],
|
|
30
30
|
[".github/workflows/buildchain-patrol.yml", "governance-write"],
|
|
31
|
-
[".github/workflows/
|
|
32
|
-
[".github/workflows/
|
|
33
|
-
[".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"],
|
|
34
34
|
[".github/workflows/dev-qualification-patrol.yml", "governance-write"],
|
|
35
35
|
[".github/workflows/dev-alpha-candidate-patrol.yml", "governance-write"],
|
|
36
36
|
[".github/workflows/dev-delivery-warrant-close.yml", "governance-write"],
|
|
37
37
|
[".github/workflows/dev-delivery-warrant-cancel.yml", "governance-write"],
|
|
38
|
-
[".github/workflows/
|
|
38
|
+
[".github/workflows/self-ops-merge-queue.yml", "governance-write"],
|
|
39
39
|
[".github/workflows/dev-pr-auto-merge.yml", "governance-write"],
|
|
40
|
-
[".github/workflows/
|
|
41
|
-
[".github/workflows/
|
|
42
|
-
[".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"],
|
|
43
43
|
[".github/workflows/engineering-housekeeper.yml", "governance-write"],
|
|
44
|
-
[".github/workflows/
|
|
44
|
+
[".github/workflows/self-ops-governance-audit.yml", "governance-write"],
|
|
45
45
|
[".github/workflows/github-artifact-attestation.yml", "evidence-publication", true, ["github-artifact-attestation"], "oidc", "consumer-defined", "caller-bound", "caller-bound"],
|
|
46
|
-
[".github/workflows/npm-
|
|
46
|
+
[".github/workflows/self-release-npm-dry-run.yml", "dry-run-only"],
|
|
47
47
|
[".github/workflows/paper-release-sealed.yml", "product-publication", true, ["npm-publish", "github-release"], "trusted-publishing", "none", "fixed", "caller-bound"],
|
|
48
48
|
[".github/workflows/paper-release.yml", "product-publication", true, ["npm-publish", "github-release"], "trusted-publishing", "none", "fixed", "caller-bound"],
|
|
49
49
|
[".github/workflows/patrol-daily.yml", "governance-write"],
|
|
@@ -52,18 +52,18 @@ const DESCRIPTORS = Object.freeze([
|
|
|
52
52
|
[".github/workflows/patrol-weekly.yml", "governance-write"],
|
|
53
53
|
[".github/workflows/publication-artifact.yml", "evidence-publication"],
|
|
54
54
|
[".github/workflows/release-candidate-promote.yml", "product-publication", true, ["npm-publish", "github-release", "channel-ref"], "trusted-publishing", "none", "fixed", "caller-bound"],
|
|
55
|
-
[".github/workflows/release-line-
|
|
55
|
+
[".github/workflows/self-release-line-open.yml", "governance-write"],
|
|
56
56
|
[".github/workflows/release-propagation.yml", "governance-write"],
|
|
57
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"],
|
|
58
|
-
[".github/workflows/release-verify.yml", "governance-write"],
|
|
58
|
+
[".github/workflows/self-build-release-verify-compat.yml", "governance-write"],
|
|
59
59
|
[".github/workflows/stable-candidate-patrol.yml", "governance-write"],
|
|
60
60
|
[".github/workflows/universal-bootstrap-recovery.yml", "product-publication", true, ["universal-candidate-execution"], "caller-secrets", "none", "fixed", "caller-bound"],
|
|
61
|
-
[".github/workflows/
|
|
62
|
-
[".github/workflows/
|
|
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"],
|
|
63
63
|
]);
|
|
64
64
|
|
|
65
|
-
export function buildchainPublicationAuthorityDescriptors() {
|
|
66
|
-
|
|
65
|
+
export function buildchainPublicationAuthorityDescriptors({ root = process.cwd() } = {}) {
|
|
66
|
+
const descriptors = DESCRIPTORS.map(([
|
|
67
67
|
workflowPath,
|
|
68
68
|
authorityClass,
|
|
69
69
|
publicationCapable = false,
|
|
@@ -85,6 +85,21 @@ export function buildchainPublicationAuthorityDescriptors() {
|
|
|
85
85
|
environmentMode,
|
|
86
86
|
runnerPolicy: publicationCapable ? "qualified-measured" : "unqualified",
|
|
87
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;
|
|
88
103
|
}
|
|
89
104
|
export function createBuildchainPublicationAuthorityRegistry({ root = process.cwd() } = {}) {
|
|
90
105
|
const workflowsDir = path.join(root, ".github", "workflows");
|
|
@@ -95,7 +110,7 @@ export function createBuildchainPublicationAuthorityRegistry({ root = process.cw
|
|
|
95
110
|
text: fs.readFileSync(path.join(workflowsDir, name), "utf8"),
|
|
96
111
|
}));
|
|
97
112
|
return createPublicationAuthorityRegistry({
|
|
98
|
-
descriptors: buildchainPublicationAuthorityDescriptors(),
|
|
113
|
+
descriptors: buildchainPublicationAuthorityDescriptors({ root }),
|
|
99
114
|
workflows,
|
|
100
115
|
});
|
|
101
116
|
}
|
|
Binary file
|
|
@@ -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) })),
|
|
@@ -118,12 +118,12 @@ const PROTECTED_AUTHORITY_PATHS = Object.freeze([
|
|
|
118
118
|
".github/CODEOWNERS",
|
|
119
119
|
".github/workflows/.publication-authority.yml",
|
|
120
120
|
".github/workflows/.release-candidate-promote.yml",
|
|
121
|
-
".github/workflows/
|
|
122
|
-
".github/workflows/
|
|
123
|
-
".github/workflows/
|
|
121
|
+
".github/workflows/self-ops-promotion-recovery.yml",
|
|
122
|
+
".github/workflows/self-release-promote.yml",
|
|
123
|
+
".github/workflows/self-ops-governance-audit.yml",
|
|
124
124
|
".github/workflows/paper-release-sealed.yml",
|
|
125
125
|
".github/workflows/paper-release.yml",
|
|
126
|
-
".github/workflows/release-line-
|
|
126
|
+
".github/workflows/self-release-line-open.yml",
|
|
127
127
|
".github/workflows/release-candidate-promote.yml",
|
|
128
128
|
"actions/promote-buildchain-ref/action.yml",
|
|
129
129
|
"actions/promote-buildchain-ref/dist/index.js",
|
|
@@ -243,7 +243,7 @@ invalid.
|
|
|
243
243
|
|
|
244
244
|
## Public self-dogfood and adoption
|
|
245
245
|
|
|
246
|
-
\`.github/workflows/
|
|
246
|
+
\`.github/workflows/self-build-public-consumer-dogfood.yml\` remains the exact thin
|
|
247
247
|
consumer of the public \`v4-stage-capsule-canary.yml@v4-alpha\` contract. Its
|
|
248
248
|
declared \`lifecycle.verify\` runs \`pnpm run check\`, so the same public path
|
|
249
249
|
executes pure recovery tests that inject a transient durable-state write
|
|
@@ -201,7 +201,7 @@ function explainReleaseLineDryRun({
|
|
|
201
201
|
);
|
|
202
202
|
plan.branchUpdates.push(
|
|
203
203
|
{ ref: targetRef, action: "would move to alpha version-state commit" },
|
|
204
|
-
{ ref: `dev/v${rule.major}/v${rule.major}.${rule.minor}`, action: "would align dev with the published alpha state" },
|
|
204
|
+
{ ref: `dev/v${rule.major}/v${rule.major}.${rule.minor}`, action: rule.major === 4 ? "would prepare the next alpha version on dev through a separate protected PR after publication" : "would align dev with the published alpha state" },
|
|
205
205
|
);
|
|
206
206
|
plan.versionState.targetVersions = [exactAlpha.replace(/^next v?/, "").replace(/^v/, "")];
|
|
207
207
|
plan.notes.push("Alpha promotion opens or advances the test channel; it does not move production refs.");
|
|
@@ -28,6 +28,7 @@ const ROOT_DOMAINS = new Set([
|
|
|
28
28
|
"stage-capsule-quarantine",
|
|
29
29
|
"stage-capsule-resume-observation",
|
|
30
30
|
"stage-capsule-resume-plan",
|
|
31
|
+
"source-verification-evidence",
|
|
31
32
|
"stage-capsule-artifact-manifest",
|
|
32
33
|
"stage-capsule-artifact-content",
|
|
33
34
|
"stage-capsule-fault-campaign",
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
export const V4_DOMAIN_WASM_ABI_VERSION = 1;
|
|
3
3
|
export const V4_DOMAIN_WASM_RUSTC = "rustc 1.96.0 (ac68faa20 2026-05-25)";
|
|
4
4
|
export const V4_DOMAIN_WASM_SOURCE_SHA256 =
|
|
5
|
-
"
|
|
5
|
+
"07d45b2767e22007d3d41fa32c8a2dba28d9c88c11a2b28863e82d54be3a2933";
|
|
6
6
|
export const V4_DOMAIN_WASM_SHA256 =
|
|
7
|
-
"
|
|
7
|
+
"b37c330e9366b7e9cf9dc4b7573b1e9495212dd9520e8b8ec6cdc3fd0ab7cafd";
|
|
@@ -10,7 +10,7 @@ export const V4_FLOATING_CONSUMER_CERTIFICATION =
|
|
|
10
10
|
const SHA256_ROOT = /^sha256:[0-9a-f]{64}$/u;
|
|
11
11
|
const ALPHA_RECOVERY_BOOTSTRAP = Object.freeze({
|
|
12
12
|
repository: "kungfu-systems/buildchain",
|
|
13
|
-
sourcePath: ".github/workflows/
|
|
13
|
+
sourcePath: ".github/workflows/self-ops-promotion-recovery.yml",
|
|
14
14
|
workflow: ".github/workflows/.release-candidate-promote.yml",
|
|
15
15
|
selector: "alpha/v4/v4.0",
|
|
16
16
|
});
|
|
@@ -28,7 +28,7 @@ const BUILDCHAIN_REPOSITORY = "kungfu-systems/buildchain";
|
|
|
28
28
|
const CHANNELS = Object.freeze({ v4: "stable", "v4-alpha": "alpha" });
|
|
29
29
|
const ALPHA_RECOVERY_BOOTSTRAP = Object.freeze({
|
|
30
30
|
selector: "alpha/v4/v4.0",
|
|
31
|
-
sourcePath: ".github/workflows/
|
|
31
|
+
sourcePath: ".github/workflows/self-ops-promotion-recovery.yml",
|
|
32
32
|
workflow: ".github/workflows/.release-candidate-promote.yml",
|
|
33
33
|
});
|
|
34
34
|
const DEFAULT_STABLE_LOCK_PATH = ".buildchain/contract-lock.json";
|