@kungfu-tech/buildchain 2.2.1 → 2.2.2-alpha.1

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.
@@ -178,6 +178,10 @@ governance semantics:
178
178
  - release promotion must have an exact alpha tag for the same patch line, and
179
179
  the release source tree must match that alpha tag tree, so release does not
180
180
  introduce new code after alpha;
181
+ - anchored/manual release promotion may differ from that alpha tree only in
182
+ declared `version.files` and the configured anchor manifest, and only when the
183
+ checked-out release material has passed `lifecycle.verify` or the explicit
184
+ `verification-command`;
181
185
  - generated release and next-alpha version-state trees can be verified locally
182
186
  with either the `verification-command` input or `buildchain.toml`
183
187
  `lifecycle.verify` before any tags or channel refs move.
@@ -250,6 +250,17 @@ After that PR lands, Buildchain verifies that the version-state PR changed only
250
250
  declared version files from the legal channel-promotion parent before it moves
251
251
  tags.
252
252
 
253
+ For `version.strategy = "anchored"` with `version.next = "manual"`, release
254
+ promotion does not generate a Buildchain-owned version-state commit. In that
255
+ mode, a protected `alpha -> release` PR may carry the declared `version.files`
256
+ from the tested alpha package version to the final package version, and may
257
+ carry the configured `version.manifest` with it. Buildchain only accepts that
258
+ release tree difference when the PR is the valid channel-promotion PR, the
259
+ changed paths are limited to those declared version files plus the anchor
260
+ manifest, and `lifecycle.verify` or `verification-command` has validated the
261
+ checked-out release material. Any code or undeclared file change still fails the
262
+ release tree gate.
263
+
253
264
  The action input `verification-command` remains supported. When it is provided,
254
265
  it overrides `lifecycle.verify` for that invocation.
255
266
 
@@ -129,7 +129,7 @@ sequenceDiagram
129
129
  Promote->>Promote: validate same-repo merged PR
130
130
  Promote->>Promote: find same-patch alpha tag
131
131
  Promote->>Promote: compare release tree with tested alpha tree
132
- Promote->>Promote: write and verify final version state
132
+ Promote->>Promote: write final version state or verify anchored material
133
133
  Promote->>Tags: create or reuse vX.Y.Z
134
134
  Promote->>Tags: move vX.Y
135
135
  Promote->>Tags: move vX when eligible
@@ -242,7 +242,9 @@ Promotion should stop before moving refs when:
242
242
  - the PR was not merged;
243
243
  - the branch pair is not a valid channel path;
244
244
  - the required status check did not pass;
245
- - a release tree does not match the same-patch alpha tag tree;
245
+ - a release tree does not match the same-patch alpha tag tree, except for the
246
+ declared anchored/manual version files and anchor manifest that
247
+ `lifecycle.verify` or `verification-command` validates;
246
248
  - version-state verification fails;
247
249
  - a required exact tag already exists at a commit unrelated to the active
248
250
  transaction or finalized channel head.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungfu-tech/buildchain",
3
- "version": "2.2.1",
3
+ "version": "2.2.2-alpha.1",
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",
@@ -217,7 +217,7 @@ function explainReleaseLineDryRun({
217
217
  { ref: `alpha/v${rule.major}/v${rule.major}.${rule.minor}`, action: "would move to next alpha version-state commit" },
218
218
  { ref: `dev/v${rule.major}/v${rule.major}.${rule.minor}`, action: "would move to next alpha version-state commit" },
219
219
  );
220
- plan.governanceChecks.push("release source tree must match the same-patch exact alpha tag tree except generated version-state files");
220
+ plan.governanceChecks.push("release source tree must match the same-patch exact alpha tag tree except generated version-state files or anchored/manual version material");
221
221
  plan.versionState.targetVersions = [
222
222
  exactRelease.replace(/^next v?/, "").replace(/^v/, ""),
223
223
  exactAlpha.replace(/^next v?/, "").replace(/^v/, ""),