@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.
- package/README.md +4 -4
- package/actions/promote-buildchain-ref/README.md +13 -1
- package/bin/buildchain.mjs +13 -1
- package/contracts/auditable-demo-scenario-v1.schema.json +52 -0
- package/contracts/release-candidate-recovery-v1.schema.json +104 -0
- package/dist/site/buildchain-contract.json +134 -34
- package/dist/site/buildchain-site.json +178 -47
- package/dist/site/capability-registry.json +5 -5
- package/dist/site/cli-registry.json +40 -4
- package/dist/site/controller-registry.json +60 -4
- package/dist/site/kfd-claims.json +190 -20
- package/dist/site/kfd-upstream-aggregate.json +9 -9
- package/dist/site/manual-registry.json +10 -10
- package/dist/site/node-api-registry.json +1295 -80
- package/dist/site/page-registry.json +164 -33
- package/dist/site/public-surface-audit.json +428 -21
- package/dist/site/publication-authority-registry.json +66 -1
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/release-provenance.json +2 -0
- package/dist/site/site-manifest.json +14 -14
- package/dist/site/workflow-registry.json +203 -15
- package/docs/MAP.md +2 -0
- package/docs/auditable-demo.md +58 -11
- package/docs/aws-us-elastic-runner-burst-plane.md +114 -80
- package/docs/cli-reference.md +154 -0
- package/docs/dev-alpha-candidate-patrol.md +13 -5
- package/docs/dev-delivery-warrant.md +158 -0
- package/docs/node-api-reference.md +105 -44
- package/docs/publication-authority.md +11 -0
- package/docs/publish-transaction.md +10 -1
- package/docs/release-candidate.md +140 -12
- package/docs/release-governance.md +66 -1
- package/docs/reusable-build-surface.md +11 -1
- package/docs/shifu-gate-profiles.md +12 -1
- package/docs/versioning.md +2 -0
- package/package.json +5 -2
- package/packages/core/buildchain-contract.js +30 -2
- package/packages/core/buildchain-publication-authority.js +3 -1
- package/packages/core/channel-candidate.js +2 -21
- package/packages/core/channel-promotion-baseline.js +199 -0
- package/packages/core/dev-delivery-candidate-identity.js +94 -0
- package/packages/core/dev-delivery-common.js +73 -0
- package/packages/core/dev-delivery-proof.js +252 -0
- package/packages/core/dev-delivery-warrant-cancellation.js +94 -0
- package/packages/core/dev-delivery-warrant-settlement.js +73 -0
- package/packages/core/dev-delivery-warrant.js +591 -0
- package/packages/core/index.js +7 -0
- package/packages/core/publication-sealed-bundle.js +10 -1
- package/packages/core/release-candidate-recovery.js +539 -0
- package/scripts/audit-publication-control-plane.mjs +12 -4
- package/scripts/auditable-demo-bundle-verification.mjs +148 -0
- package/scripts/auditable-demo-platform.mjs +86 -50
- package/scripts/auditable-demo-presentation.mjs +83 -0
- package/scripts/auditable-demo-renditions.mjs +264 -0
- package/scripts/auditable-demo.mjs +24 -30
- package/scripts/aws-windows-jit-campaign-core.mjs +7 -8
- package/scripts/aws-windows-jit-controller.mjs +1 -0
- package/scripts/aws-windows-jit-core.mjs +1 -1
- package/scripts/build-contract-core.mjs +58 -3
- package/scripts/buildchain-cli-help.mjs +8 -0
- package/scripts/buildchain-patrol.mjs +9 -0
- package/scripts/check-inventory.mjs +25 -3
- package/scripts/dev-alpha-candidate-patrol.mjs +45 -48
- package/scripts/dev-delivery-proof.mjs +193 -0
- package/scripts/dev-delivery-warrant.mjs +426 -0
- package/scripts/dev-pr-auto-merge.mjs +497 -55
- package/scripts/dev-pr-delivery-warrant.mjs +209 -0
- package/scripts/dispatch-artifact-signing-authority.mjs +2 -4
- package/scripts/gate-profile-core.mjs +24 -0
- package/scripts/generate-channel-promotion-workflow.mjs +30 -14
- package/scripts/generate-site-bundle.mjs +2 -2
- package/scripts/git-fetch-process-tree.mjs +142 -0
- package/scripts/lifecycle-substage-evidence.mjs +274 -0
- package/scripts/locked-source-checkout.mjs +6 -3
- package/scripts/publication-candidate-sealer.mjs +104 -0
- package/scripts/release-candidate-resolver.mjs +91 -5
- package/scripts/resolve-artifact-transfer-mode.mjs +9 -0
- package/scripts/resolve-build-contract.mjs +7 -0
- package/scripts/resume-from-candidate-run.mjs +598 -0
- package/scripts/route-offline-runners.mjs +1 -0
- package/scripts/run-lifecycle-core.mjs +9 -9
- package/scripts/shifu-gate-profile.mjs +10 -16
- 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
|
-
[](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/
|
|
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/
|
|
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/
|
|
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
|
package/bin/buildchain.mjs
CHANGED
|
@@ -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
|
|
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
|
+
}
|