@kungfu-tech/buildchain 3.0.7 → 3.0.8
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/contracts/engineering-housekeeper-v1.schema.json +11 -1
- package/contracts/fixtures/engineering-housekeeper-v1/cases.json +10 -0
- package/contracts/release-cut-v1.schema.json +70 -0
- package/contracts/release-train-transition-v1.schema.json +85 -0
- package/contracts/release-train-v1.schema.json +82 -0
- package/dist/site/buildchain-contract.json +302 -16
- package/dist/site/buildchain-site.json +83 -27
- package/dist/site/capability-registry.json +4 -3
- package/dist/site/kfd-claims.json +45 -8
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +22 -6
- package/dist/site/node-api-registry.json +1218 -489
- package/dist/site/page-registry.json +65 -17
- package/dist/site/public-surface-audit.json +13 -8
- package/dist/site/publication-authority-registry.json +2 -4
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/release-provenance.json +1 -0
- package/dist/site/site-manifest.json +18 -10
- package/dist/site/workflow-registry.json +10 -9
- package/docs/MAP.md +1 -1
- package/docs/aws-us-elastic-runner-burst-plane.md +20 -7
- package/docs/engineering-housekeeper.md +61 -28
- package/docs/node-api-reference.md +109 -77
- package/docs/release-governance.md +13 -10
- package/docs/release-train.md +102 -0
- package/docs/reusable-build-surface.md +16 -6
- package/docs/site-bundle-contract.md +5 -1
- package/docs/versioning.md +1 -0
- package/package.json +2 -1
- package/packages/core/buildchain-agent-manuals.js +1 -0
- package/packages/core/buildchain-compatibility-proof.js +577 -0
- package/packages/core/buildchain-contract.js +46 -181
- package/packages/core/engineering-housekeeper-github-client.js +18 -1
- package/packages/core/engineering-housekeeper-github.js +247 -41
- package/packages/core/engineering-housekeeper.js +15 -0
- package/packages/core/release-train.js +520 -0
- package/scripts/aws-macos-jit-controller-core.mjs +33 -11
- package/scripts/aws-macos-jit-controller-runtime.mjs +208 -0
- package/scripts/aws-macos-jit-controller.mjs +50 -37
- package/scripts/aws-macos-jit-core.mjs +41 -3
- package/scripts/buildchain-contract-lock.mjs +6 -0
- package/scripts/dispatch-artifact-signing-authority.mjs +4 -7
- package/scripts/engineering-housekeeper-workflow.mjs +13 -6
- package/scripts/generate-site-bundle.mjs +2 -0
- package/scripts/site-capability-metadata.mjs +1 -0
|
@@ -723,13 +723,13 @@ status to failure, while the merge group must still produce its own final check.
|
|
|
723
723
|
that want a stable day-to-day operations contract, Buildchain also exposes a
|
|
724
724
|
patrol workflow family:
|
|
725
725
|
|
|
726
|
-
| Workflow
|
|
727
|
-
|
|
|
728
|
-
| `.github/workflows/patrol-daily.yml`
|
|
729
|
-
| `.github/workflows/patrol-weekly.yml`
|
|
730
|
-
| `.github/workflows/patrol-monthly.yml`
|
|
731
|
-
| `.github/workflows/patrol-observed-evidence.yml` | caller-selected schedule
|
|
732
|
-
| `.github/workflows/stable-candidate-patrol.yml`
|
|
726
|
+
| Workflow | Intended cadence | Default intent |
|
|
727
|
+
| ------------------------------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
728
|
+
| `.github/workflows/patrol-daily.yml` | daily | lightweight inspection plus ready dev PR maintenance |
|
|
729
|
+
| `.github/workflows/patrol-weekly.yml` | weekly | release-state, passport, gate, and stale-state health checks as they are added |
|
|
730
|
+
| `.github/workflows/patrol-monthly.yml` | monthly | governance, permission, branch-protection, and workflow drift checks as they are added |
|
|
731
|
+
| `.github/workflows/patrol-observed-evidence.yml` | caller-selected schedule | validated immutable observation plus atomic last-known-good publication; no per-refresh PR |
|
|
732
|
+
| `.github/workflows/stable-candidate-patrol.yml` | repository-selected release window | qualify immutable alpha candidates and open the exact source-lock stable PR |
|
|
733
733
|
|
|
734
734
|
The cadence names describe patrol intensity, not release cadence:
|
|
735
735
|
|
|
@@ -792,9 +792,12 @@ The separate workflow names keep consumer schedules readable and stable while
|
|
|
792
792
|
Buildchain adds new checks behind the cadence wrappers.
|
|
793
793
|
|
|
794
794
|
Branch and pull-request residue uses the separate
|
|
795
|
-
[`Engineering Housekeeper`](engineering-housekeeper.md) contract. Its
|
|
796
|
-
|
|
797
|
-
|
|
795
|
+
[`Engineering Housekeeper`](engineering-housekeeper.md) contract. Its reusable
|
|
796
|
+
surface remains report-first, while Buildchain's committed daily, weekly, and
|
|
797
|
+
monthly callers run unattended apply across all discovered protected mainlines.
|
|
798
|
+
Only the positive temporary-development allowlist is mutable; unknown branch
|
|
799
|
+
families remain report-only. Every apply still requires the caller's explicit
|
|
800
|
+
two-part policy inputs, exact provider-state revalidation, scoped job
|
|
798
801
|
permissions, and rooted plan/report/receipt evidence.
|
|
799
802
|
|
|
800
803
|
## Package-Manager Adapters
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: preview
|
|
3
|
+
period: ongoing
|
|
4
|
+
theme: buildchain-release-train
|
|
5
|
+
doc_type: architecture-and-usage
|
|
6
|
+
source_level: local-files
|
|
7
|
+
confidence: high
|
|
8
|
+
sensitivity: public
|
|
9
|
+
evidence_grade: A
|
|
10
|
+
review_state: self-reviewed
|
|
11
|
+
last_reviewed: 2026-08-10
|
|
12
|
+
ai_provenance:
|
|
13
|
+
model_family: GPT-5
|
|
14
|
+
product: Codex
|
|
15
|
+
generated_at: 2026-08-10
|
|
16
|
+
visible_context: Buildchain v3 release candidate, recovery, Dev to Alpha Candidate Patrol, Warrant, publication transaction, and release governance sources.
|
|
17
|
+
invisible_context_boundary: Live provider state and credentials were not read.
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Release Train and Release Cut
|
|
21
|
+
|
|
22
|
+
Buildchain v3 exposes a pure, provider-neutral Release Train contract for
|
|
23
|
+
retaining one authorized Alpha candidate while the development branch keeps
|
|
24
|
+
moving. The contract does not select a candidate, write a Git ref, open a pull
|
|
25
|
+
request, publish a package, or replace any existing provider gate. Controllers
|
|
26
|
+
own those effects and persist the rooted contract in their declared store.
|
|
27
|
+
|
|
28
|
+
## Frozen Release Cut
|
|
29
|
+
|
|
30
|
+
`createReleaseCut()` records one exact candidate generation. It binds:
|
|
31
|
+
|
|
32
|
+
- repository, source branch, and target branch;
|
|
33
|
+
- the development head from which the cut was authorized;
|
|
34
|
+
- candidate commit and tree;
|
|
35
|
+
- exact Alpha base and Buildchain runtime commits;
|
|
36
|
+
- a positive generation;
|
|
37
|
+
- sorted, duplicate-free authority roots; and
|
|
38
|
+
- a canonical creation timestamp.
|
|
39
|
+
|
|
40
|
+
The resulting `cutRoot` covers all of those fields. A generation greater than
|
|
41
|
+
one must name the prior cut root and one of four supersession causes:
|
|
42
|
+
|
|
43
|
+
- `incompatible-semantics`;
|
|
44
|
+
- `alpha-base-incompatibility`;
|
|
45
|
+
- `invalid-authority`; or
|
|
46
|
+
- `severe-security`.
|
|
47
|
+
|
|
48
|
+
Latest-development movement is deliberately absent from that list. Merely
|
|
49
|
+
observing a newer development head therefore cannot replace the candidate or
|
|
50
|
+
increment its generation.
|
|
51
|
+
|
|
52
|
+
## Release Train state
|
|
53
|
+
|
|
54
|
+
`createReleaseTrain()` wraps the frozen cut in
|
|
55
|
+
`kungfu-buildchain-release-train/v1`. The train identity root covers only the
|
|
56
|
+
immutable Release Cut. Its state chain can move through:
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
preparing -> building -> publication-blocked -> publishable -> terminal
|
|
60
|
+
\-> repair-required --------^ \-> superseded
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The complete transition table is enforced by the Node API. `superseded` and
|
|
64
|
+
`terminal` are terminal states. A superseded transition must bind its explicit
|
|
65
|
+
cause, replacement cut root, and replacement candidate commit.
|
|
66
|
+
|
|
67
|
+
Every transition uses compare-and-swap against the exact current `stateRoot`,
|
|
68
|
+
binds non-empty authority roots, and produces deterministic request,
|
|
69
|
+
transition, and next-state roots. Replaying the exact same request after it has
|
|
70
|
+
already landed returns the existing train unchanged. A stale expected state or
|
|
71
|
+
an invalid transition fails closed.
|
|
72
|
+
|
|
73
|
+
`observeReleaseTrain()` appends a rooted development-head observation without
|
|
74
|
+
changing `trainRoot`, `cutRoot`, candidate identity, generation, or state. The
|
|
75
|
+
same exact observation is idempotent.
|
|
76
|
+
|
|
77
|
+
## Readback and legacy state
|
|
78
|
+
|
|
79
|
+
`validateReleaseCut()` checks the standalone immutable cut and its canonical
|
|
80
|
+
root. `validateReleaseTrain()` replays the complete transition and observation
|
|
81
|
+
chain from that frozen cut and rejects root drift, stale compare-and-swap
|
|
82
|
+
edges, duplicate observations, or an invalid lifecycle path.
|
|
83
|
+
|
|
84
|
+
`readReleaseTrain()` also recognizes the existing
|
|
85
|
+
`kungfu-buildchain-dev-alpha-candidate-state/v1` patrol marker. That path is a
|
|
86
|
+
read-only compatibility projection with `authoritative: false` and `train:
|
|
87
|
+
null`. It exposes the legacy generation and candidate SHA when present, but it
|
|
88
|
+
never invents a Release Cut, authority root, runtime binding, Alpha base, or
|
|
89
|
+
candidate tree retroactively. A controller must create a new, fully witnessed
|
|
90
|
+
Release Cut before it can claim Release Train authority.
|
|
91
|
+
|
|
92
|
+
## Public API and schemas
|
|
93
|
+
|
|
94
|
+
Import the contract from `@kungfu-tech/buildchain/release-train`. Machine
|
|
95
|
+
schemas are published with the package:
|
|
96
|
+
|
|
97
|
+
- `contracts/release-cut-v1.schema.json`;
|
|
98
|
+
- `contracts/release-train-v1.schema.json`; and
|
|
99
|
+
- `contracts/release-train-transition-v1.schema.json`.
|
|
100
|
+
|
|
101
|
+
The schemas check structure. The Node validator remains authoritative for
|
|
102
|
+
canonical roots, state-chain replay, idempotence, and cross-field semantics.
|
|
@@ -338,7 +338,8 @@ ref is not blind trust. Each released Buildchain ref carries a package-owned
|
|
|
338
338
|
runtime contract world in `dist/site/buildchain-contract.json`. Consumers may
|
|
339
339
|
keep a small lock file, `.buildchain/contract-lock.json`, recording the
|
|
340
340
|
Buildchain ref, resolved SHA, contract digest, compatibility digest, accepted
|
|
341
|
-
major line,
|
|
341
|
+
major line, compatibility proof registry root, per-surface proof roots, and the
|
|
342
|
+
compatibility policy they reviewed.
|
|
342
343
|
|
|
343
344
|
The reusable build trust gate checks this lock before any heavy matrix job:
|
|
344
345
|
|
|
@@ -355,6 +356,14 @@ promise changes, or the major line changes. Additive changes such as optional
|
|
|
355
356
|
inputs, optional outputs, diagnostics, or documentation updates continue under
|
|
356
357
|
the default `major-compatible` policy.
|
|
357
358
|
|
|
359
|
+
A changed breaking digest is never accepted because it appears in a handwritten
|
|
360
|
+
allowlist. Each historical digest must resolve to exactly one immutable,
|
|
361
|
+
directed compatibility proof for the current surface digest. The proof binds
|
|
362
|
+
the operation scope, protected authority, exact Git cut, and protected-merge
|
|
363
|
+
evidence. The legacy `compatibleBreakingDigests` arrays remain in the site
|
|
364
|
+
contract only as deterministic, parity-checked projections of those proofs;
|
|
365
|
+
an orphan digest or ambiguous proof fails source acceptance.
|
|
366
|
+
|
|
358
367
|
```yaml
|
|
359
368
|
jobs:
|
|
360
369
|
build:
|
|
@@ -371,11 +380,12 @@ jobs:
|
|
|
371
380
|
|
|
372
381
|
When compatible drift is detected, the build continues and Buildchain opens or
|
|
373
382
|
updates a low-priority issue in the consumer repository. The issue records the
|
|
374
|
-
old SHA/digest, new SHA/digest, compatibility result, workflow run,
|
|
375
|
-
|
|
376
|
-
drift is detected, the same issue path is used, but the
|
|
377
|
-
matrix build or publish work starts. If the workflow
|
|
378
|
-
Buildchain writes a copyable issue body into the job
|
|
383
|
+
old SHA/digest, new SHA/digest, compatibility result, workflow run, exact proof
|
|
384
|
+
root, direction, scope, evidence, authority, cut, and rooted verification
|
|
385
|
+
receipt. When breaking drift is detected, the same issue path is used, but the
|
|
386
|
+
trust gate fails before matrix build or publish work starts. If the workflow
|
|
387
|
+
token cannot write issues, Buildchain writes a copyable issue body into the job
|
|
388
|
+
summary.
|
|
379
389
|
|
|
380
390
|
The lock is intentionally small. It does not copy the full contract. The full
|
|
381
391
|
contract remains in the Buildchain ref and package; the consumer records only
|
|
@@ -54,7 +54,11 @@ overview, and fixture guides.
|
|
|
54
54
|
`buildchain-contract.json` is the machine-readable Buildchain runtime contract
|
|
55
55
|
world used by floating-ref contract locks. It records public workflow/action/CLI
|
|
56
56
|
surfaces, compatibility digests, and audit digests for the files that implement
|
|
57
|
-
those surfaces.
|
|
57
|
+
those surfaces. Its immutable compatibility proofs bind historical breaking
|
|
58
|
+
digests to exact target surfaces, operation scopes, protected authority,
|
|
59
|
+
evidence, and Git cuts. `compatibleBreakingDigests` and per-surface proof-root
|
|
60
|
+
lists are generated projections; site consumers must not edit or reinterpret
|
|
61
|
+
them as independent authority.
|
|
58
62
|
`manual-registry.json` enumerates the packaged Markdown manuals with source
|
|
59
63
|
digests so an agent can find complete operating documentation from the npm
|
|
60
64
|
artifact. `node-api-registry.json` enumerates public Node import surfaces from
|
package/docs/versioning.md
CHANGED
|
@@ -79,6 +79,7 @@ repository changes are patch".
|
|
|
79
79
|
|
|
80
80
|
| Date | Action | Line | Faces | Class | Rationale | PR |
|
|
81
81
|
| ---------- | ------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
|
|
82
|
+
| 2026-08-10 | extend-minor | `v3.0` | release-cut-contract, release-train-state-machine, release-train-node-export | additive | Add a provider-neutral rooted Release Cut and idempotent Release Train state contract that freezes candidate, tree, Alpha base, runtime, generation, and authority while treating later Dev movement as observation rather than implicit supersession. | |
|
|
82
83
|
| 2026-08-05 | extend-minor | `v3.0` | auditable-demo-scenario, auditable-demo-capture, auditable-demo-adapter | additive | Add an opt-in deterministic readable-playback declaration that preserves captured terminal payloads and order while normalizing only presentation timing; omitted playback continues to use observed PTY timestamps, and existing composition modes remain unchanged. | |
|
|
83
84
|
| 2026-08-04 | extend-minor | `v3.0` | dev-delivery-warrant-queue, source-qualification-proof, integration-delivery-proof, dev-delivery-cli, reusable-dev-delivery-workflows | additive | Add durable fair and fenced protected-dev scheduling plus split source/integration proof contracts. Existing PR admission remains available through explicit `off` and `shadow` rollout modes; no existing command, export, or release flow is removed. | |
|
|
84
85
|
| 2026-08-01 | extend-minor | `v3.0` | cli-reference-registry, node-api-symbol-registry, golden-path-manual | additive | Add generated, drift-checked CLI and Node API reference registries to the public site bundle, plus a package-tested first-user Golden Path; existing command execution and import semantics remain unchanged. | |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kungfu-tech/buildchain",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.8",
|
|
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",
|
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"./kfd-gate": "./packages/core/kfd-gate.js",
|
|
55
55
|
"./release-candidate": "./packages/core/release-candidate.js",
|
|
56
56
|
"./release-candidate-recovery": "./packages/core/release-candidate-recovery.js",
|
|
57
|
+
"./release-train": "./packages/core/release-train.js",
|
|
57
58
|
"./stable-candidate-ledger": "./packages/core/stable-candidate-ledger.js",
|
|
58
59
|
"./release-passport": "./packages/core/release-passport.js",
|
|
59
60
|
"./release-passport-contract": "./packages/core/release-passport-contract.js",
|
|
@@ -9,6 +9,7 @@ export const BUILDCHAIN_AGENT_MANUALS = Object.freeze([
|
|
|
9
9
|
{ id: "publication-authority", title: "Sealed publication authority", path: "docs/publication-authority.md", plane: "verify" },
|
|
10
10
|
{ id: "github-governance-authority", title: "GitHub governance authority", path: "docs/github-governance-authority.md", plane: "verify" },
|
|
11
11
|
{ id: "release-candidate", title: "Release Candidate Passport", path: "docs/release-candidate.md", plane: "verify" },
|
|
12
|
+
{ id: "release-train", title: "Release Train and Release Cut", path: "docs/release-train.md", plane: "verify" },
|
|
12
13
|
{ id: "release-propagation", title: "Release propagation", path: "docs/release-propagation.md", plane: "use" },
|
|
13
14
|
{ id: "readme-badges", title: "README badge blocks", path: "docs/readme-badges.md", plane: "use" },
|
|
14
15
|
{ id: "homebrew", title: "Homebrew distribution indexes", path: "docs/homebrew.md", plane: "use" },
|