@kungfu-tech/buildchain 3.0.6-alpha.0 → 3.0.6-alpha.10

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 (83) hide show
  1. package/README.md +4 -4
  2. package/actions/promote-buildchain-ref/README.md +13 -1
  3. package/bin/buildchain.mjs +13 -1
  4. package/contracts/auditable-demo-scenario-v1.schema.json +52 -0
  5. package/contracts/release-candidate-recovery-v1.schema.json +104 -0
  6. package/dist/site/buildchain-contract.json +134 -34
  7. package/dist/site/buildchain-site.json +178 -47
  8. package/dist/site/capability-registry.json +5 -5
  9. package/dist/site/cli-registry.json +40 -4
  10. package/dist/site/controller-registry.json +60 -4
  11. package/dist/site/kfd-claims.json +190 -20
  12. package/dist/site/kfd-upstream-aggregate.json +9 -9
  13. package/dist/site/manual-registry.json +10 -10
  14. package/dist/site/node-api-registry.json +1295 -80
  15. package/dist/site/page-registry.json +164 -33
  16. package/dist/site/public-surface-audit.json +428 -21
  17. package/dist/site/publication-authority-registry.json +66 -1
  18. package/dist/site/publication-registry.json +4 -4
  19. package/dist/site/release-provenance.json +2 -0
  20. package/dist/site/site-manifest.json +14 -14
  21. package/dist/site/workflow-registry.json +203 -15
  22. package/docs/MAP.md +2 -0
  23. package/docs/auditable-demo.md +58 -11
  24. package/docs/aws-us-elastic-runner-burst-plane.md +114 -80
  25. package/docs/cli-reference.md +154 -0
  26. package/docs/dev-alpha-candidate-patrol.md +13 -5
  27. package/docs/dev-delivery-warrant.md +158 -0
  28. package/docs/node-api-reference.md +105 -44
  29. package/docs/publication-authority.md +11 -0
  30. package/docs/publish-transaction.md +10 -1
  31. package/docs/release-candidate.md +140 -12
  32. package/docs/release-governance.md +66 -1
  33. package/docs/reusable-build-surface.md +11 -1
  34. package/docs/shifu-gate-profiles.md +12 -1
  35. package/docs/versioning.md +2 -0
  36. package/package.json +5 -2
  37. package/packages/core/buildchain-contract.js +30 -2
  38. package/packages/core/buildchain-publication-authority.js +3 -1
  39. package/packages/core/channel-candidate.js +2 -21
  40. package/packages/core/channel-promotion-baseline.js +199 -0
  41. package/packages/core/dev-delivery-candidate-identity.js +94 -0
  42. package/packages/core/dev-delivery-common.js +73 -0
  43. package/packages/core/dev-delivery-proof.js +252 -0
  44. package/packages/core/dev-delivery-warrant-cancellation.js +94 -0
  45. package/packages/core/dev-delivery-warrant-settlement.js +73 -0
  46. package/packages/core/dev-delivery-warrant.js +591 -0
  47. package/packages/core/index.js +7 -0
  48. package/packages/core/publication-sealed-bundle.js +10 -1
  49. package/packages/core/release-candidate-recovery.js +539 -0
  50. package/scripts/audit-publication-control-plane.mjs +12 -4
  51. package/scripts/auditable-demo-bundle-verification.mjs +148 -0
  52. package/scripts/auditable-demo-platform.mjs +86 -50
  53. package/scripts/auditable-demo-presentation.mjs +83 -0
  54. package/scripts/auditable-demo-renditions.mjs +264 -0
  55. package/scripts/auditable-demo.mjs +24 -30
  56. package/scripts/aws-windows-jit-campaign-core.mjs +7 -8
  57. package/scripts/aws-windows-jit-controller.mjs +1 -0
  58. package/scripts/aws-windows-jit-core.mjs +1 -1
  59. package/scripts/build-contract-core.mjs +58 -3
  60. package/scripts/buildchain-cli-help.mjs +8 -0
  61. package/scripts/buildchain-patrol.mjs +9 -0
  62. package/scripts/check-inventory.mjs +25 -3
  63. package/scripts/dev-alpha-candidate-patrol.mjs +45 -48
  64. package/scripts/dev-delivery-proof.mjs +193 -0
  65. package/scripts/dev-delivery-warrant.mjs +426 -0
  66. package/scripts/dev-pr-auto-merge.mjs +497 -55
  67. package/scripts/dev-pr-delivery-warrant.mjs +209 -0
  68. package/scripts/dispatch-artifact-signing-authority.mjs +2 -4
  69. package/scripts/gate-profile-core.mjs +24 -0
  70. package/scripts/generate-channel-promotion-workflow.mjs +30 -14
  71. package/scripts/generate-site-bundle.mjs +2 -2
  72. package/scripts/git-fetch-process-tree.mjs +142 -0
  73. package/scripts/lifecycle-substage-evidence.mjs +274 -0
  74. package/scripts/locked-source-checkout.mjs +6 -3
  75. package/scripts/publication-candidate-sealer.mjs +104 -0
  76. package/scripts/release-candidate-resolver.mjs +91 -5
  77. package/scripts/resolve-artifact-transfer-mode.mjs +9 -0
  78. package/scripts/resolve-build-contract.mjs +7 -0
  79. package/scripts/resume-from-candidate-run.mjs +598 -0
  80. package/scripts/route-offline-runners.mjs +1 -0
  81. package/scripts/run-lifecycle-core.mjs +9 -9
  82. package/scripts/shifu-gate-profile.mjs +10 -16
  83. package/scripts/site-capability-metadata.mjs +15 -0
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <!-- buildchain-auditable-demo:start -->
4
4
  ## Buildchain beginner bootstrap
5
5
 
6
- [![Buildchain beginner bootstrap](docs/evidence/auditable-demo/f0413dc57e2b658fb75e82c4b7736ef87f4a573f6d6cbc1d690b52b723006492/beginner-bootstrap/demo.gif)](docs/evidence/auditable-demo/f0413dc57e2b658fb75e82c4b7736ef87f4a573f6d6cbc1d690b52b723006492/beginner-bootstrap/public-evidence.json)
6
+ [![Buildchain beginner bootstrap](docs/evidence/auditable-demo/aa5cc40f4a62ed516e163e7e2c9dae0bcf32b3c77143a17105dfc4e5eaf9f01a/beginner-bootstrap/demo.gif)](docs/evidence/auditable-demo/aa5cc40f4a62ed516e163e7e2c9dae0bcf32b3c77143a17105dfc4e5eaf9f01a/beginner-bootstrap/public-evidence.json)
7
7
 
8
8
  Animation scenario:
9
9
 
@@ -13,16 +13,16 @@ $ buildchain layout --cwd ./starter --json
13
13
  $ buildchain version
14
14
  ```
15
15
 
16
- Native renditions: [1080p MP4](docs/evidence/auditable-demo/f0413dc57e2b658fb75e82c4b7736ef87f4a573f6d6cbc1d690b52b723006492/beginner-bootstrap/demo.mp4) · [1080p WebM](docs/evidence/auditable-demo/f0413dc57e2b658fb75e82c4b7736ef87f4a573f6d6cbc1d690b52b723006492/beginner-bootstrap/demo.webm) · [720p MP4](docs/evidence/auditable-demo/f0413dc57e2b658fb75e82c4b7736ef87f4a573f6d6cbc1d690b52b723006492/beginner-bootstrap/demo-720p.mp4) · [720p WebM](docs/evidence/auditable-demo/f0413dc57e2b658fb75e82c4b7736ef87f4a573f6d6cbc1d690b52b723006492/beginner-bootstrap/demo-720p.webm)
16
+ Native renditions: [1080p MP4](docs/evidence/auditable-demo/aa5cc40f4a62ed516e163e7e2c9dae0bcf32b3c77143a17105dfc4e5eaf9f01a/beginner-bootstrap/demo.mp4) · [1080p WebM](docs/evidence/auditable-demo/aa5cc40f4a62ed516e163e7e2c9dae0bcf32b3c77143a17105dfc4e5eaf9f01a/beginner-bootstrap/demo.webm) · [720p MP4](docs/evidence/auditable-demo/aa5cc40f4a62ed516e163e7e2c9dae0bcf32b3c77143a17105dfc4e5eaf9f01a/beginner-bootstrap/demo-720p.mp4) · [720p WebM](docs/evidence/auditable-demo/aa5cc40f4a62ed516e163e7e2c9dae0bcf32b3c77143a17105dfc4e5eaf9f01a/beginner-bootstrap/demo-720p.webm)
17
17
 
18
- [Static poster / reduced-motion fallback](docs/evidence/auditable-demo/f0413dc57e2b658fb75e82c4b7736ef87f4a573f6d6cbc1d690b52b723006492/beginner-bootstrap/poster.png)
18
+ [Static poster / reduced-motion fallback](docs/evidence/auditable-demo/aa5cc40f4a62ed516e163e7e2c9dae0bcf32b3c77143a17105dfc4e5eaf9f01a/beginner-bootstrap/poster.png)
19
19
 
20
20
  <details>
21
21
  <summary>Evidence and claim boundary</summary>
22
22
 
23
23
  This exact standalone-binary scenario proves deterministic local bootstrap behavior only; it does not grant release, repository, network, or production authority.
24
24
 
25
- [Release Passport](docs/evidence/auditable-demo/f0413dc57e2b658fb75e82c4b7736ef87f4a573f6d6cbc1d690b52b723006492/beginner-bootstrap/release-passport.json) · [auditable evidence](docs/evidence/auditable-demo/f0413dc57e2b658fb75e82c4b7736ef87f4a573f6d6cbc1d690b52b723006492/beginner-bootstrap/public-evidence.json)
25
+ [Release Passport](docs/evidence/auditable-demo/aa5cc40f4a62ed516e163e7e2c9dae0bcf32b3c77143a17105dfc4e5eaf9f01a/beginner-bootstrap/release-passport.json) · [auditable evidence](docs/evidence/auditable-demo/aa5cc40f4a62ed516e163e7e2c9dae0bcf32b3c77143a17105dfc4e5eaf9f01a/beginner-bootstrap/public-evidence.json)
26
26
 
27
27
  </details>
28
28
  <!-- buildchain-auditable-demo:end -->
@@ -80,6 +80,14 @@ publish npm packages. The GitHub action dry-run still calls GitHub APIs to
80
80
  resolve the current target SHA and concrete pending ref updates, but every
81
81
  write is reported as a dry-run update.
82
82
 
83
+ When the requested version already matches every declared version-state file,
84
+ dry-run planning still runs `lifecycle.version-state` and any explicit
85
+ `verification-command` so it can discover declared derived material. It does
86
+ not fall back to the repository-wide `lifecycle.verify` in that no-op case;
87
+ full product verification can require candidate artifacts that are deliberately
88
+ not present until the later admission phase. Non-dry-run version-state writes
89
+ continue to require the configured verification lifecycle before any ref moves.
90
+
83
91
  Repositories whose package version is anchored to an explicitly selected
84
92
  upstream release can opt into manual next-anchor behavior:
85
93
 
@@ -452,7 +460,11 @@ it does not have to equal the original `source_sha` or the transaction
452
460
  `release_sha`. Reruns accept exact tags that already point at the transaction
453
461
  release/material SHA or the finalized channel head, and continue moving any
454
462
  missing floating tags or dev/alpha refs before marking the transaction
455
- `complete`.
463
+ `complete`. An explicit recovery of an already `complete` transaction is also
464
+ accepted when the requested source SHA, version, exact tag, channel, and target
465
+ all match the durable record exactly. It returns the completed transaction
466
+ without republishing package bytes; a source accepted only through later branch
467
+ history is not sufficient for this terminal-state reuse.
456
468
 
457
469
  Normal reruns accept already-published artifacts only when evidence matches.
458
470
  Missing required artifacts can be published on the next run. Conflicting
@@ -1368,8 +1368,20 @@ async function handleDoctorCommand(args) {
1368
1368
 
1369
1369
  async function handleDevCommand(args) {
1370
1370
  const [subcommand = "", ...devArgs] = args;
1371
+ if (subcommand === "pr-admit") {
1372
+ runScript("dev-pr-auto-merge.mjs", devArgs);
1373
+ return;
1374
+ }
1375
+ if (subcommand === "warrant") {
1376
+ runScript("dev-delivery-warrant.mjs", devArgs);
1377
+ return;
1378
+ }
1379
+ if (subcommand === "proof") {
1380
+ runScript("dev-delivery-proof.mjs", devArgs);
1381
+ return;
1382
+ }
1371
1383
  if (subcommand !== "merge-queue") {
1372
- throw new Error("usage: buildchain dev merge-queue --repository <owner/repo> --branch <dev/vN/vN.M> [--from-config | --workflow <path>...]");
1384
+ throw new Error("usage: buildchain dev <pr-admit|merge-queue|warrant|proof> [options]");
1373
1385
  }
1374
1386
  runScript("dev-merge-queue.mjs", devArgs);
1375
1387
  return;
@@ -7,6 +7,22 @@
7
7
  "required": ["schema", "product", "artifact", "execution", "renditions", "demos", "publication", "authority"],
8
8
  "properties": {
9
9
  "schema": {"const": "buildchain.declarative-binary-demo/v1"},
10
+ "compositionMode": {
11
+ "type": "string",
12
+ "enum": ["presentation-framed", "terminal-fill"],
13
+ "default": "presentation-framed"
14
+ },
15
+ "playback": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "required": ["schema", "mode", "activeDurationMs", "finalHoldMs"],
19
+ "properties": {
20
+ "schema": {"const": "buildchain.declarative-demo-playback/v1"},
21
+ "mode": {"const": "deterministic-readable"},
22
+ "activeDurationMs": {"type": "integer", "minimum": 1000, "maximum": 179750},
23
+ "finalHoldMs": {"type": "integer", "minimum": 250, "maximum": 5000}
24
+ }
25
+ },
10
26
  "product": {
11
27
  "type": "object",
12
28
  "additionalProperties": false,
@@ -57,6 +73,42 @@
57
73
  "stdoutIncludes": {"type": "array", "maxItems": 32, "items": {"type": "string", "minLength": 1, "maxLength": 256}}
58
74
  }
59
75
  },
76
+ "presentation": {
77
+ "type": "object",
78
+ "additionalProperties": false,
79
+ "required": ["schema", "proofs", "materialization"],
80
+ "properties": {
81
+ "schema": {"const": "buildchain.declarative-demo-presentation/v1"},
82
+ "proofs": {
83
+ "type": "array",
84
+ "minItems": 1,
85
+ "maxItems": 8,
86
+ "items": {
87
+ "type": "object",
88
+ "additionalProperties": false,
89
+ "required": ["demoId", "label", "question", "summary"],
90
+ "properties": {
91
+ "demoId": {"type": "string", "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$"},
92
+ "label": {"type": "string", "minLength": 1, "maxLength": 80},
93
+ "question": {"type": "string", "minLength": 1, "maxLength": 120},
94
+ "summary": {"type": "string", "minLength": 1, "maxLength": 500},
95
+ "transitionAfter": {"type": "string", "minLength": 1, "maxLength": 500}
96
+ }
97
+ }
98
+ },
99
+ "materialization": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "required": ["readmeMode", "technicalSpecPath", "technicalSpecTitle", "technicalMarker"],
103
+ "properties": {
104
+ "readmeMode": {"type": "string", "enum": ["full", "media-only"]},
105
+ "technicalSpecPath": {"type": "string", "minLength": 1},
106
+ "technicalSpecTitle": {"type": "string", "minLength": 1, "maxLength": 120},
107
+ "technicalMarker": {"type": "string", "pattern": "^[a-z0-9][a-z0-9._:-]{0,79}$"}
108
+ }
109
+ }
110
+ }
111
+ },
60
112
  "renditions": {
61
113
  "const": [
62
114
  {"id": "1080p", "role": "primary", "columns": 150, "rows": 36, "width": 1920, "height": 1080},
@@ -0,0 +1,104 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://buildchain.libkungfu.dev/schemas/release-candidate-recovery-v1.schema.json",
4
+ "title": "Buildchain Release Candidate Recovery Receipt v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "contract",
10
+ "action",
11
+ "createdAt",
12
+ "repository",
13
+ "recoveryRunId",
14
+ "originalCandidate",
15
+ "target",
16
+ "recovered",
17
+ "skippedBuildStages",
18
+ "payloadBytes",
19
+ "buildchainToolingSha",
20
+ "transaction",
21
+ "root"
22
+ ],
23
+ "properties": {
24
+ "schemaVersion": { "const": 1 },
25
+ "contract": { "const": "kungfu-buildchain-release-candidate-recovery/v1" },
26
+ "action": { "const": "reused" },
27
+ "createdAt": { "type": "string", "format": "date-time" },
28
+ "repository": { "type": "string", "pattern": "^[^/\\s]+/[^/\\s]+$" },
29
+ "recoveryRunId": { "type": "string" },
30
+ "originalCandidate": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "required": ["runId", "workflowFile", "workflowName", "pullRequest", "sourceSha", "mergeSha", "tree"],
34
+ "properties": {
35
+ "runId": { "type": "string", "pattern": "^[0-9]+$" },
36
+ "workflowFile": { "type": "string" },
37
+ "workflowName": { "type": "string" },
38
+ "pullRequest": { "type": "integer", "minimum": 1 },
39
+ "sourceSha": { "$ref": "#/$defs/gitSha" },
40
+ "mergeSha": { "type": "string", "pattern": "^(?:[0-9a-f]{40})?$" },
41
+ "tree": { "$ref": "#/$defs/gitSha" }
42
+ }
43
+ },
44
+ "target": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "required": ["channel", "ref", "sha", "tree", "version"],
48
+ "properties": {
49
+ "channel": { "enum": ["alpha", "release", "major"] },
50
+ "ref": { "type": "string" },
51
+ "sha": { "$ref": "#/$defs/gitSha" },
52
+ "observedRefSha": { "$ref": "#/$defs/gitSha" },
53
+ "tree": { "$ref": "#/$defs/gitSha" },
54
+ "version": { "type": "string", "minLength": 1 }
55
+ }
56
+ },
57
+ "recovered": {
58
+ "type": "object",
59
+ "additionalProperties": false,
60
+ "required": ["candidateRoot", "buildSummaryRoot", "artifactRoot", "artifactArchiveRoot", "artifactCount", "artifacts"],
61
+ "properties": {
62
+ "candidateRoot": { "$ref": "#/$defs/sha256" },
63
+ "buildSummaryRoot": { "$ref": "#/$defs/sha256" },
64
+ "artifactRoot": { "$ref": "#/$defs/sha256" },
65
+ "artifactArchiveRoot": { "$ref": "#/$defs/sha256" },
66
+ "artifactCount": { "type": "integer", "minimum": 1 },
67
+ "artifacts": {
68
+ "type": "array",
69
+ "minItems": 1,
70
+ "items": {
71
+ "type": "object",
72
+ "additionalProperties": false,
73
+ "required": ["name", "size", "digest"],
74
+ "properties": {
75
+ "name": { "type": "string", "minLength": 1 },
76
+ "size": { "type": "integer", "minimum": 0 },
77
+ "digest": { "$ref": "#/$defs/sha256" }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ },
83
+ "skippedBuildStages": {
84
+ "const": ["install", "build", "verify", "platform-matrix"]
85
+ },
86
+ "payloadBytes": { "const": "unchanged" },
87
+ "buildchainToolingSha": { "$ref": "#/$defs/gitSha" },
88
+ "transaction": {
89
+ "type": "object",
90
+ "additionalProperties": false,
91
+ "required": ["identity", "state", "publicationState"],
92
+ "properties": {
93
+ "identity": { "type": "string" },
94
+ "state": { "enum": ["absent", "prepared", "sealed", "publishing", "publish_failed", "published", "finalizing", "complete", "repair_required", "abandoned", "failed_permanently"] },
95
+ "publicationState": { "type": "string", "minLength": 1 }
96
+ }
97
+ },
98
+ "root": { "$ref": "#/$defs/sha256" }
99
+ },
100
+ "$defs": {
101
+ "gitSha": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
102
+ "sha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
103
+ }
104
+ }