@kungfu-tech/buildchain 4.0.2-alpha.2 → 4.0.2-alpha.5
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/architecture/agent-change-map.md +3 -0
- package/architecture/internal-capabilities.json +2 -0
- package/architecture/maintainability-debt.json +17 -15
- package/architecture/maintainability-policy.json +6 -6
- package/architecture/v3-core-mechanism-inventory.json +1 -0
- package/architecture/v4-delivery-warrant-shadow-fixtures.json +5 -5
- package/architecture/v4-release-invocation-fixtures.json +20 -0
- package/architecture/v4-release-topology.json +85 -80
- package/architecture/v4-runtime-semantic-closure.json +4 -1
- package/contracts/v4-release-invocation-v1.schema.json +50 -2
- package/dist/site/buildchain-contract.json +8 -8
- package/dist/site/buildchain-site.json +7 -7
- package/dist/site/kfd-claims.json +20 -3
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +1 -1
- package/dist/site/node-api-registry.json +88 -13
- package/dist/site/page-registry.json +2 -2
- package/dist/site/public-surface-audit.json +20 -3
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/site-manifest.json +5 -5
- package/dist/site/workflow-registry.json +22 -5
- package/docs/node-api-reference.md +13 -10
- package/package.json +1 -1
- package/packages/core/dev-delivery-execution-transfer.js +6 -7
- package/packages/core/dev-delivery-warrant-legacy-recovery.js +4 -2
- package/packages/core/dev-delivery-warrant-native-compatibility.js +33 -0
- package/packages/core/dev-delivery-warrant-state.js +42 -26
- package/packages/core/dev-delivery-warrant.js +8 -0
- package/packages/core/dev-delivery-writer-protocol-transition.js +72 -0
- package/packages/core/v4-canonical-contracts.js +2 -0
- package/packages/core/v4-protected-publication-source.js +93 -0
- package/packages/core/v4-publication-qualification.js +1 -0
- package/packages/core/v4-release-invocation.js +72 -3
- package/scripts/check-v4-release-topology.mjs +169 -23
- package/scripts/dev-delivery-warrant.mjs +13 -1
- package/scripts/generate-channel-promotion-workflow.mjs +2 -1
- package/scripts/release-candidate-resolver.mjs +17 -17
- package/scripts/resume-from-candidate-run.mjs +15 -16
- package/scripts/v4-release-candidate-adapter.mjs +41 -0
|
@@ -165,6 +165,7 @@ Safe change route: Reduce one owned responsibility behind the stable facade, run
|
|
|
165
165
|
- `scripts/check-v3-v4-capability-inventory.mjs`
|
|
166
166
|
- `.github/workflows/release-candidate-promote.yml`
|
|
167
167
|
- `actions/promote-buildchain-ref/lib.js`
|
|
168
|
+
- `actions/v4-release-candidate-promote/index.js`
|
|
168
169
|
- `scripts/check-inventory.mjs`
|
|
169
170
|
- `tests/promote-buildchain-ref.test.mjs`
|
|
170
171
|
- `tests/promotion-channel-router.test.mjs`
|
|
@@ -174,6 +175,7 @@ Safe change route: Reduce one owned responsibility behind the stable facade, run
|
|
|
174
175
|
- `scripts/buildchain-cli-help.mjs`
|
|
175
176
|
- `scripts/check-v4-floating-consumer-policy-contract.mjs`
|
|
176
177
|
- `tests/dev-delivery-warrant.test.mjs`
|
|
178
|
+
- `packages/core/dev-delivery-warrant-state.js`
|
|
177
179
|
- `actions/promote-buildchain-ref/internal/version-state.js`
|
|
178
180
|
- `packages/core/v4-floating-consumer-release-passport.js`
|
|
179
181
|
- `packages/core/release-passport.js`
|
|
@@ -893,6 +895,7 @@ Owner: Buildchain protected delivery maintainers
|
|
|
893
895
|
|
|
894
896
|
- `packages/core/dev-delivery-warrant.js`
|
|
895
897
|
- `packages/core/dev-delivery-warrant-state.js`
|
|
898
|
+
- `packages/core/dev-delivery-warrant-native-compatibility.js`
|
|
896
899
|
- `packages/core/dev-delivery-warrant-qualification.js`
|
|
897
900
|
- `packages/core/dev-delivery-warrant-legacy-recovery.js`
|
|
898
901
|
- `packages/core/dev-delivery-native-proof.js`
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"scripts/v4-stage-capsule-qualification.mjs",
|
|
76
76
|
"packages/core/dev-delivery-warrant.js",
|
|
77
77
|
"packages/core/dev-delivery-warrant-state.js",
|
|
78
|
+
"packages/core/dev-delivery-warrant-native-compatibility.js",
|
|
78
79
|
"packages/core/dev-delivery-warrant-qualification.js",
|
|
79
80
|
"packages/core/dev-delivery-warrant-legacy-recovery.js",
|
|
80
81
|
"packages/core/dev-delivery-native-proof.js",
|
|
@@ -591,6 +592,7 @@
|
|
|
591
592
|
"implementation": [
|
|
592
593
|
"packages/core/dev-delivery-warrant.js",
|
|
593
594
|
"packages/core/dev-delivery-warrant-state.js",
|
|
595
|
+
"packages/core/dev-delivery-warrant-native-compatibility.js",
|
|
594
596
|
"packages/core/dev-delivery-warrant-qualification.js",
|
|
595
597
|
"packages/core/dev-delivery-warrant-legacy-recovery.js",
|
|
596
598
|
"packages/core/dev-delivery-native-proof.js",
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
},
|
|
8
8
|
"totalExcessLedger": {
|
|
9
9
|
"metric": "calibrated-full-dimensional-excess-v1",
|
|
10
|
-
"measuredExcess":
|
|
11
|
-
"current":
|
|
10
|
+
"measuredExcess": 64324,
|
|
11
|
+
"current": 56263
|
|
12
12
|
},
|
|
13
13
|
"defaults": {
|
|
14
14
|
"owner": "Buildchain architecture maintainers",
|
|
@@ -379,21 +379,21 @@
|
|
|
379
379
|
"packages/core/dev-delivery-execution-transfer.js": {
|
|
380
380
|
"baseline": {
|
|
381
381
|
"functions": {
|
|
382
|
-
"verifyNativeExecutionTransfer@
|
|
382
|
+
"verifyNativeExecutionTransfer@468": {
|
|
383
383
|
"complexity": 36
|
|
384
384
|
}
|
|
385
385
|
}
|
|
386
386
|
},
|
|
387
387
|
"current": {
|
|
388
388
|
"functions": {
|
|
389
|
-
"verifyNativeExecutionTransfer@
|
|
389
|
+
"verifyNativeExecutionTransfer@468": {
|
|
390
390
|
"complexity": 36
|
|
391
391
|
}
|
|
392
392
|
}
|
|
393
393
|
},
|
|
394
394
|
"target": {
|
|
395
395
|
"functions": {
|
|
396
|
-
"verifyNativeExecutionTransfer@
|
|
396
|
+
"verifyNativeExecutionTransfer@468": {
|
|
397
397
|
"complexity": 25
|
|
398
398
|
}
|
|
399
399
|
}
|
|
@@ -1491,21 +1491,21 @@
|
|
|
1491
1491
|
"scripts/generate-channel-promotion-workflow.mjs": {
|
|
1492
1492
|
"baseline": {
|
|
1493
1493
|
"functions": {
|
|
1494
|
-
"generateChannelPromotionWorkflow@
|
|
1494
|
+
"generateChannelPromotionWorkflow@278": {
|
|
1495
1495
|
"lines": 282
|
|
1496
1496
|
}
|
|
1497
1497
|
}
|
|
1498
1498
|
},
|
|
1499
1499
|
"current": {
|
|
1500
1500
|
"functions": {
|
|
1501
|
-
"generateChannelPromotionWorkflow@
|
|
1501
|
+
"generateChannelPromotionWorkflow@278": {
|
|
1502
1502
|
"lines": 240
|
|
1503
1503
|
}
|
|
1504
1504
|
}
|
|
1505
1505
|
},
|
|
1506
1506
|
"target": {
|
|
1507
1507
|
"functions": {
|
|
1508
|
-
"generateChannelPromotionWorkflow@
|
|
1508
|
+
"generateChannelPromotionWorkflow@278": {
|
|
1509
1509
|
"lines": 180
|
|
1510
1510
|
}
|
|
1511
1511
|
}
|
|
@@ -1693,7 +1693,7 @@
|
|
|
1693
1693
|
"functions": {
|
|
1694
1694
|
"resolveReleaseCandidateArtifacts@475": {
|
|
1695
1695
|
"lines": 309,
|
|
1696
|
-
"complexity":
|
|
1696
|
+
"complexity": 61
|
|
1697
1697
|
},
|
|
1698
1698
|
"resolveReleaseCandidateArtifactsCli@785": {
|
|
1699
1699
|
"complexity": 29
|
|
@@ -1741,7 +1741,7 @@
|
|
|
1741
1741
|
"lines": 1125
|
|
1742
1742
|
},
|
|
1743
1743
|
"current": {
|
|
1744
|
-
"lines":
|
|
1744
|
+
"lines": 1124
|
|
1745
1745
|
},
|
|
1746
1746
|
"target": {
|
|
1747
1747
|
"lines": 600
|
|
@@ -2362,7 +2362,7 @@
|
|
|
2362
2362
|
"lines": 806
|
|
2363
2363
|
},
|
|
2364
2364
|
"current": {
|
|
2365
|
-
"lines":
|
|
2365
|
+
"lines": 805
|
|
2366
2366
|
},
|
|
2367
2367
|
"target": {
|
|
2368
2368
|
"lines": 600
|
|
@@ -2614,7 +2614,7 @@
|
|
|
2614
2614
|
"lines": 1217
|
|
2615
2615
|
},
|
|
2616
2616
|
"current": {
|
|
2617
|
-
"lines":
|
|
2617
|
+
"lines": 1137
|
|
2618
2618
|
},
|
|
2619
2619
|
"target": {
|
|
2620
2620
|
"lines": 600
|
|
@@ -2937,7 +2937,7 @@
|
|
|
2937
2937
|
"lines": 2736
|
|
2938
2938
|
},
|
|
2939
2939
|
"current": {
|
|
2940
|
-
"lines":
|
|
2940
|
+
"lines": 1116
|
|
2941
2941
|
},
|
|
2942
2942
|
"target": {
|
|
2943
2943
|
"lines": 600
|
|
@@ -3060,7 +3060,7 @@
|
|
|
3060
3060
|
"lines": 1218
|
|
3061
3061
|
},
|
|
3062
3062
|
"current": {
|
|
3063
|
-
"lines":
|
|
3063
|
+
"lines": 1095
|
|
3064
3064
|
},
|
|
3065
3065
|
"target": {
|
|
3066
3066
|
"lines": 600
|
|
@@ -3098,6 +3098,7 @@
|
|
|
3098
3098
|
"scripts/check-v3-v4-capability-inventory.mjs",
|
|
3099
3099
|
".github/workflows/release-candidate-promote.yml",
|
|
3100
3100
|
"actions/promote-buildchain-ref/lib.js",
|
|
3101
|
+
"actions/v4-release-candidate-promote/index.js",
|
|
3101
3102
|
"scripts/check-inventory.mjs",
|
|
3102
3103
|
"tests/promote-buildchain-ref.test.mjs",
|
|
3103
3104
|
"tests/promotion-channel-router.test.mjs",
|
|
@@ -3107,6 +3108,7 @@
|
|
|
3107
3108
|
"scripts/buildchain-cli-help.mjs",
|
|
3108
3109
|
"scripts/check-v4-floating-consumer-policy-contract.mjs",
|
|
3109
3110
|
"tests/dev-delivery-warrant.test.mjs",
|
|
3111
|
+
"packages/core/dev-delivery-warrant-state.js",
|
|
3110
3112
|
"actions/promote-buildchain-ref/internal/version-state.js",
|
|
3111
3113
|
"packages/core/v4-floating-consumer-release-passport.js",
|
|
3112
3114
|
"packages/core/release-passport.js",
|
|
@@ -3135,7 +3137,7 @@
|
|
|
3135
3137
|
"path": ".github/workflows/.release-candidate-promote.yml",
|
|
3136
3138
|
"metric": "lines",
|
|
3137
3139
|
"baseline": 2736,
|
|
3138
|
-
"current":
|
|
3140
|
+
"current": 1116
|
|
3139
3141
|
},
|
|
3140
3142
|
{
|
|
3141
3143
|
"domain": "sources",
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
},
|
|
27
27
|
"repositoryBudgets": {
|
|
28
28
|
"baselineRevision": "858dbe00b6206a8f356b4a12d2659bee7a72e71b",
|
|
29
|
-
"maxHandMaintainedSourceFiles":
|
|
30
|
-
"maxHandMaintainedSourceLines":
|
|
29
|
+
"maxHandMaintainedSourceFiles": 448,
|
|
30
|
+
"maxHandMaintainedSourceLines": 165760,
|
|
31
31
|
"maxWorkflowFiles": 77,
|
|
32
32
|
"maxWorkflowLines": 26791,
|
|
33
|
-
"latestTransition": "
|
|
34
|
-
"latestTransitionRationale": "
|
|
33
|
+
"latestTransition": "Legacy queued native candidates are quarantined from exact Warrant selection and heartbeat authority.",
|
|
34
|
+
"latestTransitionRationale": "One bounded compatibility seam preserves immutable legacy queued evidence while excluding incomplete native candidates from ranking. New submissions and every selected, proving, waiting, blocked, or qualified native candidate still require the exact environment and command contract; a valid resubmission can repair the queued record without rewriting history, and a current exact Warrant heartbeat remains independent from incompatible followers.",
|
|
35
35
|
"rationale": "Bounded modules separate candidate, evidence, native proof and execution, canonical failure verification, closed-set execution transfer, process-boundary verification, Warrant state and qualification, authority state, qualification, Landing acquisition, verified-attempt admission, Landing settlement and fence validation, provider attempt and heartbeat readback, sealed terminal evidence, hosted heartbeat, resume, store, options, command-specific adapters, and CLI orchestration responsibilities. The protected delivery workflow gives candidate and seal jobs no provider write credential, recursively rejects transfer drift, scopes every transfer artifact to the exact provider run attempt, chains every durable heartbeat state and receipt root on a distinct hosted runner domain, and permits qualification or exact failure settlement only after the finalizer verifies live jobs and the latest durable authority state. Public Landing admission and heartbeat always perform non-injectable fresh exact-attempt provider readback, tolerate only a not-yet-materialized seal job while retaining exact native and duplicate-job rejection, and heartbeat-loss coordination never invokes GitHub's run-scoped cancellation API where a successor rerun could race. The hosted process boundary anchors trust in the kernel-resolved versioned Runner.Worker path while accepting an equivalent argv-zero spelling with the same basename; its public boundary marker is allowed only at the one exact non-secret value, so a forged value under the same credential-like name still fails closed. The credentialless transfer seal validates the rooted native reuse decision against the Warrant-bound source, closure, dependency, toolchain, environment and command inputs; qualifiedBase stays in the proof and decision where it is rooted and later independently rechecked, rather than being assumed on the Warrant schema. V2 mutation cannot initialize a second empty authority beside a legacy ref: migration reads and roots the canonical live v1 ref, rechecks it, applies the explicit configured v2 policy, and atomically replaces its bytes through one expected-old non-force update, so old v1 controllers fail closed while the prior commit remains immutable history. Candidate ancestry classifies the GitHub artifact runtime token as credential authority. Every Landing settlement, including an unexpired fence, requires product-owned terminal readback. Terminal cleanup reads the immutable historical attempt, derives workflow and hosted Landing job identity from live run data, reads the exact protected ref head and compares containment against that immutable SHA, and seals merged only when the admitted merge-group head is contained by that protected base; a later different-head merge settles the old attempt as dequeued. Terminal normalization preserves transfer, finalizer boundary, native and seal job, admitted provider attempt, protected-base head, containment result, and terminal readback coordinates. The public reusable workflow truthfully retains its single-flight v1 authority without advertising v2 migration, while bounded v2 remains a separate opt-in CLI, Node API, and schema contract; the tracked self-caller stays on public v4-alpha with matching stable and alpha locks, and transient train selection is dispatch-only. Next-development parity adds one versioned transition authority, one durable controller, one bounded reservation adapter, and pure public-contract recovery evidence while retaining the existing thin floating-channel callers byte-for-byte. The floating-consumer gate reuses the existing contract-world evaluator so SHA drift passes only under the selected lock's compatibility policy, breaking surface drift still fails closed, and external certification reconstructs the receipt from the observed workflow SHA rather than the lock's historical evidence SHA. Tail reseal adds no Stage Capsule effect or general rebuild authority: it verifies the exact retained four-platform bytes, admits one known macOS tail failure through live provider readback, fences signing and finalization to explicit credentials and Warrant identity, and requires standard candidate Passport plus provider and protected readback. Compatibility Facts parity isolates canonical encoding, temporal verification, lifecycle validation, fixture projection, public authority projection, and CLI adaptation into bounded modules; legacy digest and proof arrays are derived only from exact current Fact lineage. Publication Rehearsal adds no production release authority: the content-addressed capsule contract binds source, candidate, manifest, config, canonical data-only provider bindings, provider policy, observations and core version separately from filesystem, runtime and rehearsal-only provider authority; simulate, replay and explicitly authorized provider rehearsal all reuse the release-tail planner, while same-commit local dogfood resolves the new reusable contract and exact current runtime before external callers remain on floating v4-alpha. Cross-runtime candidate recovery preserves original runtime and provider roots and creates resume lineage only after exact public ref, tag, ancestry, npm version and integrity readback. Adopter Delivery restores the reviewed public v3 gate, drivers, Passport binding, N-1 bootstrap and exact archive loader through one public v4 surface while keeping provider and release authority explicit non-claims. Floating Alpha bootstrap uses only the existing exact resolver and protected Alpha private shell to move an otherwise stale floating shell, retains public v4 stable promotion, and removes itself after protected readback. CI lane change-budget enforcement adds a bounded parser, evaluator, guard, and tests without creating another merge authority.",
|
|
36
36
|
"governance": "legacy-debt-sunset-2026q4"
|
|
37
37
|
},
|
|
@@ -212,8 +212,8 @@
|
|
|
212
212
|
"scripts/release-candidate-resolver.mjs": {
|
|
213
213
|
"maxLines": 854,
|
|
214
214
|
"maxFunctionLines": 309,
|
|
215
|
-
"maxFunctionComplexity":
|
|
216
|
-
"rationale": "The shared candidate resolver retains bounded archive streaming, payload size and sha256 validation while
|
|
215
|
+
"maxFunctionComplexity": 61,
|
|
216
|
+
"rationale": "The shared candidate resolver retains bounded archive streaming, payload size and sha256 validation while locating and validating candidate-bound Stage Capsule and publication qualification evidence. Exact publication version selection now prefers the sealed npm bundle without widening the orchestration function, and these lower exact ceilings cannot grow implicitly.",
|
|
217
217
|
"governance": "legacy-debt-sunset-2026q4"
|
|
218
218
|
},
|
|
219
219
|
"scripts/auditable-demo.mjs": {
|
|
@@ -294,6 +294,7 @@
|
|
|
294
294
|
"packages/core/dev-delivery-proof.js",
|
|
295
295
|
"packages/core/dev-delivery-warrant-cancellation.js",
|
|
296
296
|
"packages/core/dev-delivery-warrant-legacy-recovery.js",
|
|
297
|
+
"packages/core/dev-delivery-warrant-native-compatibility.js",
|
|
297
298
|
"packages/core/dev-delivery-warrant-qualification.js",
|
|
298
299
|
"packages/core/dev-delivery-warrant-settlement.js",
|
|
299
300
|
"packages/core/dev-delivery-warrant-state.js",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"now": "2026-08-07T00:02:00Z"
|
|
67
67
|
}
|
|
68
68
|
],
|
|
69
|
-
"expectedLegacyProjectionRoot": "sha256:
|
|
69
|
+
"expectedLegacyProjectionRoot": "sha256:eb860ad33e3abb6a93c0635b0f06b4f433bc9b76deaa8e7b648e0ef2e296679b"
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
"id": "lease-expiry-and-stale-fence",
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
"now": "2026-08-07T01:02:03Z"
|
|
135
135
|
}
|
|
136
136
|
],
|
|
137
|
-
"expectedLegacyProjectionRoot": "sha256:
|
|
137
|
+
"expectedLegacyProjectionRoot": "sha256:3f734b04ac8baaf84a95d9f8746db5fd41dbfd73f147de2f884c09e373157aa9"
|
|
138
138
|
},
|
|
139
139
|
{
|
|
140
140
|
"id": "settlement-idempotence",
|
|
@@ -183,7 +183,7 @@
|
|
|
183
183
|
"now": "2026-08-07T02:02:00Z"
|
|
184
184
|
}
|
|
185
185
|
],
|
|
186
|
-
"expectedLegacyProjectionRoot": "sha256:
|
|
186
|
+
"expectedLegacyProjectionRoot": "sha256:b71de84b0483fcce3f0ba1f45ac20dead3227fc24a62769192eb16abca7f3a2f"
|
|
187
187
|
},
|
|
188
188
|
{
|
|
189
189
|
"id": "queued-cancellation-idempotence",
|
|
@@ -218,7 +218,7 @@
|
|
|
218
218
|
"now": "2026-08-07T03:00:03Z"
|
|
219
219
|
}
|
|
220
220
|
],
|
|
221
|
-
"expectedLegacyProjectionRoot": "sha256:
|
|
221
|
+
"expectedLegacyProjectionRoot": "sha256:a9ce9cad968234febd2ef74c2e6fab77f45899bc5dd74ee7128cadd02a997b8c"
|
|
222
222
|
},
|
|
223
223
|
{
|
|
224
224
|
"id": "cas-response-loss-provider-conflict",
|
|
@@ -253,7 +253,7 @@
|
|
|
253
253
|
},
|
|
254
254
|
{ "id": "provider-stop", "operation": "provider-conflict" }
|
|
255
255
|
],
|
|
256
|
-
"expectedLegacyProjectionRoot": "sha256:
|
|
256
|
+
"expectedLegacyProjectionRoot": "sha256:be002515ae6304c3cd325ee4bb6d07e6229922d620389285474325eb20aa27e9"
|
|
257
257
|
}
|
|
258
258
|
]
|
|
259
259
|
}
|
|
@@ -30,6 +30,16 @@
|
|
|
30
30
|
"policyRoot": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
31
31
|
"qualificationRoot": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
|
32
32
|
"warrantRoot": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
|
33
|
+
},
|
|
34
|
+
"provider": {
|
|
35
|
+
"adapter": "built-in-provider-plane",
|
|
36
|
+
"contract": "kungfu-buildchain-release-tail-provider/v1",
|
|
37
|
+
"repository": "kungfu-systems/kungfu"
|
|
38
|
+
},
|
|
39
|
+
"parent": {
|
|
40
|
+
"invocationRoot": null,
|
|
41
|
+
"transactionRoot": null,
|
|
42
|
+
"receiptRoot": null
|
|
33
43
|
}
|
|
34
44
|
},
|
|
35
45
|
"stable": {
|
|
@@ -60,6 +70,16 @@
|
|
|
60
70
|
"policyRoot": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
61
71
|
"qualificationRoot": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
|
62
72
|
"warrantRoot": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
|
73
|
+
},
|
|
74
|
+
"provider": {
|
|
75
|
+
"adapter": "built-in-provider-plane",
|
|
76
|
+
"contract": "kungfu-buildchain-release-tail-provider/v1",
|
|
77
|
+
"repository": "kungfu-systems/kungfu"
|
|
78
|
+
},
|
|
79
|
+
"parent": {
|
|
80
|
+
"invocationRoot": null,
|
|
81
|
+
"transactionRoot": null,
|
|
82
|
+
"receiptRoot": null
|
|
63
83
|
}
|
|
64
84
|
}
|
|
65
85
|
},
|
|
@@ -3,26 +3,48 @@
|
|
|
3
3
|
"contract": "kungfu-buildchain-v4-release-topology/v1",
|
|
4
4
|
"sourceCut": {
|
|
5
5
|
"branch": "dev/v4/v4.0",
|
|
6
|
-
"commit": "
|
|
7
|
-
"tree": "
|
|
6
|
+
"commit": "c3a50c941d018fcc3bec624e19a1298357b7f84a",
|
|
7
|
+
"tree": "213cdcaded8d90c823ecdafdd9968bceceed9057"
|
|
8
8
|
},
|
|
9
9
|
"enforcement": "converged",
|
|
10
10
|
"closedWorld": {
|
|
11
11
|
"workflowPaths": [
|
|
12
|
+
".github/workflows/.binary-release-assets.yml",
|
|
13
|
+
".github/workflows/.build.yml",
|
|
14
|
+
".github/workflows/.declarative-auditable-demo.yml",
|
|
12
15
|
".github/workflows/.publication-authority.yml",
|
|
13
16
|
".github/workflows/.release-candidate-promote.yml",
|
|
14
17
|
".github/workflows/.release-elastic-beanstalk.yml",
|
|
15
18
|
".github/workflows/.release-new-version.yml",
|
|
16
19
|
".github/workflows/.sam-release.yml",
|
|
20
|
+
".github/workflows/.web-surface.yml",
|
|
17
21
|
".github/workflows/.wheel-release.yml",
|
|
22
|
+
".github/workflows/auditable-demo.yml",
|
|
23
|
+
".github/workflows/binary-release-assets.yml",
|
|
24
|
+
".github/workflows/build-surface-fixture.yml",
|
|
25
|
+
".github/workflows/build.yml",
|
|
26
|
+
".github/workflows/buildchain-alpha-self-dogfood.yml",
|
|
27
|
+
".github/workflows/buildchain-dev-delivery.yml",
|
|
18
28
|
".github/workflows/buildchain-ref-promotion-recovery.yml",
|
|
19
29
|
".github/workflows/buildchain-ref-promotion.yml",
|
|
30
|
+
".github/workflows/buildchain-patrol-daily.yml",
|
|
31
|
+
".github/workflows/buildchain-patrol-monthly.yml",
|
|
32
|
+
".github/workflows/buildchain-patrol-weekly.yml",
|
|
33
|
+
".github/workflows/buildchain-stable-candidate-patrol.yml",
|
|
34
|
+
".github/workflows/dev-alpha-candidate-patrol.yml",
|
|
35
|
+
".github/workflows/dev-pr-auto-merge.yml",
|
|
36
|
+
".github/workflows/github-artifact-attestation.yml",
|
|
20
37
|
".github/workflows/npm-publish.yml",
|
|
21
38
|
".github/workflows/paper-release-sealed.yml",
|
|
22
39
|
".github/workflows/paper-release.yml",
|
|
40
|
+
".github/workflows/patrol-observed-evidence.yml",
|
|
23
41
|
".github/workflows/release-candidate-promote.yml",
|
|
42
|
+
".github/workflows/release-line-bootstrap.yml",
|
|
24
43
|
".github/workflows/release-new-version.yml",
|
|
44
|
+
".github/workflows/release-propagation.yml",
|
|
25
45
|
".github/workflows/release-tail.yml",
|
|
46
|
+
".github/workflows/stable-candidate-patrol.yml",
|
|
47
|
+
".github/workflows/v4-publication-rehearsal-dogfood.yml",
|
|
26
48
|
".github/workflows/v4-declarative-release-tail-dogfood.yml"
|
|
27
49
|
],
|
|
28
50
|
"unknownTopologyPolicy": "fail-closed"
|
|
@@ -42,6 +64,61 @@
|
|
|
42
64
|
"retired compatibility workflows"
|
|
43
65
|
]
|
|
44
66
|
},
|
|
67
|
+
"authorityClosure": {
|
|
68
|
+
"providerAdapters": [
|
|
69
|
+
"actions/promote-buildchain-ref/github-release.js",
|
|
70
|
+
"actions/promote-buildchain-ref/v4-provider-plane.js",
|
|
71
|
+
"actions/release-tail/index.js",
|
|
72
|
+
"actions/v4-release-candidate-promote/index.js",
|
|
73
|
+
"actions/v4-release-candidate-promote/product-provider.js",
|
|
74
|
+
"packages/core/buildchain-agent-manuals.js",
|
|
75
|
+
"packages/core/index.js",
|
|
76
|
+
"packages/core/publication-rehearsal-runtime.js",
|
|
77
|
+
"packages/core/release-tail-provider-adapters.js",
|
|
78
|
+
"packages/core/release-tail-provider-plane.js",
|
|
79
|
+
"packages/core/v4-publication-rehearsal-capsule.js",
|
|
80
|
+
"packages/core/v4-publication-rehearsal.js"
|
|
81
|
+
],
|
|
82
|
+
"runtimeSelectors": [
|
|
83
|
+
".github/workflows/.build.yml",
|
|
84
|
+
".github/workflows/.release-candidate-promote.yml",
|
|
85
|
+
".github/workflows/.web-surface.yml",
|
|
86
|
+
".github/workflows/buildchain-ref-promotion-recovery.yml",
|
|
87
|
+
".github/workflows/buildchain-ref-promotion.yml",
|
|
88
|
+
".github/workflows/paper-release.yml",
|
|
89
|
+
".github/workflows/publication-artifact.yml",
|
|
90
|
+
".github/workflows/release-candidate-promote.yml",
|
|
91
|
+
".github/workflows/v4-tail-reseal.yml",
|
|
92
|
+
"packages/core/buildchain-contract.js",
|
|
93
|
+
"packages/core/v4-runtime-ref-resume-authority.js",
|
|
94
|
+
"packages/core/v4-runtime-selector-persistence.js",
|
|
95
|
+
"scripts/aggregate-build-summary.mjs",
|
|
96
|
+
"scripts/artifact-signing-controller-core.mjs",
|
|
97
|
+
"scripts/authorize-promotion-runtime-override.cjs",
|
|
98
|
+
"scripts/buildchain-contract-lock.mjs",
|
|
99
|
+
"scripts/check-inventory.mjs",
|
|
100
|
+
"scripts/generate-channel-promotion-workflow.mjs",
|
|
101
|
+
"scripts/generate-release-candidate-passport.mjs",
|
|
102
|
+
"scripts/release-candidate-resolver.mjs",
|
|
103
|
+
"scripts/resume-from-candidate-run.mjs",
|
|
104
|
+
"scripts/v4-declarative-promotion-admission.mjs",
|
|
105
|
+
"scripts/v4-release-candidate-adapter.mjs"
|
|
106
|
+
],
|
|
107
|
+
"runtimeEngines": ["actions/v4-release-candidate-promote/index.js"],
|
|
108
|
+
"terminalProjections": [
|
|
109
|
+
".github/workflows/.release-candidate-promote.yml",
|
|
110
|
+
"actions/v4-release-candidate-promote/index.js",
|
|
111
|
+
"packages/core/v4-release-invocation.js"
|
|
112
|
+
],
|
|
113
|
+
"freshEntry": ".github/workflows/release-candidate-promote.yml",
|
|
114
|
+
"recoveryEntry": ".github/workflows/buildchain-ref-promotion-recovery.yml",
|
|
115
|
+
"forbiddenLegacyEnginePatterns": [
|
|
116
|
+
"legacy-promote",
|
|
117
|
+
"v4-declarative-promote",
|
|
118
|
+
"BUILDCHAIN_DECLARATIVE_PROMOTION",
|
|
119
|
+
"Select declarative or legacy promotion result"
|
|
120
|
+
]
|
|
121
|
+
},
|
|
45
122
|
"baselineMetrics": {
|
|
46
123
|
"workflowCount": 15,
|
|
47
124
|
"jobCount": 38,
|
|
@@ -92,14 +169,6 @@
|
|
|
92
169
|
"mutationSignals"
|
|
93
170
|
],
|
|
94
171
|
"workflows": [
|
|
95
|
-
{
|
|
96
|
-
"path": ".github/workflows/.publication-authority.yml",
|
|
97
|
-
"triggers": ["workflow_call"],
|
|
98
|
-
"jobs": [
|
|
99
|
-
"verify|runner|-|read|-|artifactDownload,artifactUpload,jobOutput|-"
|
|
100
|
-
],
|
|
101
|
-
"reusableEdges": []
|
|
102
|
-
},
|
|
103
172
|
{
|
|
104
173
|
"path": ".github/workflows/.release-candidate-promote.yml",
|
|
105
174
|
"triggers": ["workflow_call"],
|
|
@@ -110,30 +179,6 @@
|
|
|
110
179
|
],
|
|
111
180
|
"reusableEdges": []
|
|
112
181
|
},
|
|
113
|
-
{
|
|
114
|
-
"path": ".github/workflows/.release-elastic-beanstalk.yml",
|
|
115
|
-
"triggers": ["workflow_call"],
|
|
116
|
-
"jobs": ["retired|runner|-|-|-|-|-"],
|
|
117
|
-
"reusableEdges": []
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
"path": ".github/workflows/.release-new-version.yml",
|
|
121
|
-
"triggers": ["workflow_call"],
|
|
122
|
-
"jobs": ["retired|runner|-|-|-|-|-"],
|
|
123
|
-
"reusableEdges": []
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
"path": ".github/workflows/.sam-release.yml",
|
|
127
|
-
"triggers": ["workflow_call"],
|
|
128
|
-
"jobs": ["retired|runner|-|-|-|-|-"],
|
|
129
|
-
"reusableEdges": []
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
"path": ".github/workflows/.wheel-release.yml",
|
|
133
|
-
"triggers": ["workflow_call"],
|
|
134
|
-
"jobs": ["retired|runner|-|-|-|-|-"],
|
|
135
|
-
"reusableEdges": []
|
|
136
|
-
},
|
|
137
182
|
{
|
|
138
183
|
"path": ".github/workflows/buildchain-ref-promotion-recovery.yml",
|
|
139
184
|
"triggers": ["workflow_dispatch"],
|
|
@@ -157,34 +202,6 @@
|
|
|
157
202
|
"kungfu-systems/buildchain/.github/workflows/.release-candidate-promote.yml@v4-alpha"
|
|
158
203
|
]
|
|
159
204
|
},
|
|
160
|
-
{
|
|
161
|
-
"path": ".github/workflows/npm-publish.yml",
|
|
162
|
-
"triggers": ["workflow_dispatch"],
|
|
163
|
-
"jobs": ["dry-run|runner|-|-|-|-|direct-publication-command"],
|
|
164
|
-
"reusableEdges": []
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
"path": ".github/workflows/paper-release-sealed.yml",
|
|
168
|
-
"triggers": ["workflow_call"],
|
|
169
|
-
"jobs": [
|
|
170
|
-
"publication-authority|reusable-call|./.github/workflows/.publication-authority.yml|read|-|-|-",
|
|
171
|
-
"publication-candidate|reusable-call|./.github/workflows/publication-artifact.yml|read|-|-|-",
|
|
172
|
-
"publish|runner|-|read|write|artifactDownload,artifactUpload,jobOutput|contents-write,oidc-write,promotion-runtime"
|
|
173
|
-
],
|
|
174
|
-
"reusableEdges": [
|
|
175
|
-
"./.github/workflows/.publication-authority.yml",
|
|
176
|
-
"./.github/workflows/publication-artifact.yml"
|
|
177
|
-
]
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
"path": ".github/workflows/paper-release.yml",
|
|
181
|
-
"triggers": ["workflow_call"],
|
|
182
|
-
"jobs": [
|
|
183
|
-
"paper-release|runner|-|write|write|artifactUpload,jobOutput|contents-write,oidc-write,promotion-runtime",
|
|
184
|
-
"publication-authority|reusable-call|./.github/workflows/.publication-authority.yml|read|-|-|-"
|
|
185
|
-
],
|
|
186
|
-
"reusableEdges": ["./.github/workflows/.publication-authority.yml"]
|
|
187
|
-
},
|
|
188
205
|
{
|
|
189
206
|
"path": ".github/workflows/release-candidate-promote.yml",
|
|
190
207
|
"triggers": ["workflow_call"],
|
|
@@ -197,18 +214,6 @@
|
|
|
197
214
|
"kungfu-systems/buildchain/.github/workflows/.release-candidate-promote.yml@v4-alpha"
|
|
198
215
|
]
|
|
199
216
|
},
|
|
200
|
-
{
|
|
201
|
-
"path": ".github/workflows/release-new-version.yml",
|
|
202
|
-
"triggers": ["pull_request:closed"],
|
|
203
|
-
"jobs": ["buildchain-self-release|runner|-|-|-|-|-"],
|
|
204
|
-
"reusableEdges": []
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
"path": ".github/workflows/release-tail.yml",
|
|
208
|
-
"triggers": ["workflow_call"],
|
|
209
|
-
"jobs": ["release-tail|runner|-|-|-|artifactUpload|-"],
|
|
210
|
-
"reusableEdges": []
|
|
211
|
-
},
|
|
212
217
|
{
|
|
213
218
|
"path": ".github/workflows/v4-declarative-release-tail-dogfood.yml",
|
|
214
219
|
"triggers": ["workflow_dispatch"],
|
|
@@ -221,12 +226,12 @@
|
|
|
221
226
|
}
|
|
222
227
|
],
|
|
223
228
|
"metrics": {
|
|
224
|
-
"workflowCount":
|
|
225
|
-
"jobCount":
|
|
226
|
-
"reusableEdgeCount":
|
|
227
|
-
"mutationRelevantNodeCount":
|
|
228
|
-
"contentsWriteJobCount":
|
|
229
|
-
"oidcWriteJobCount":
|
|
229
|
+
"workflowCount": 37,
|
|
230
|
+
"jobCount": 92,
|
|
231
|
+
"reusableEdgeCount": 23,
|
|
232
|
+
"mutationRelevantNodeCount": 74,
|
|
233
|
+
"contentsWriteJobCount": 14,
|
|
234
|
+
"oidcWriteJobCount": 16
|
|
230
235
|
},
|
|
231
236
|
"semanticMetrics": {
|
|
232
237
|
"workflowCount": 5,
|
|
@@ -73,7 +73,10 @@
|
|
|
73
73
|
"stateAuthority": "single-writer-state-machine",
|
|
74
74
|
"legacyFallbackAllowed": false,
|
|
75
75
|
"providerDecisionAuthorityAllowed": false,
|
|
76
|
-
"implementation": [
|
|
76
|
+
"implementation": [
|
|
77
|
+
"packages/core/dev-delivery-warrant-native-compatibility.js",
|
|
78
|
+
"packages/core/dev-delivery-warrant.js"
|
|
79
|
+
],
|
|
77
80
|
"invariants": {
|
|
78
81
|
"exactHeadFence": true,
|
|
79
82
|
"immutableRootFence": true,
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"runtime",
|
|
11
11
|
"candidate",
|
|
12
12
|
"target",
|
|
13
|
-
"authority"
|
|
13
|
+
"authority",
|
|
14
|
+
"provider",
|
|
15
|
+
"parent"
|
|
14
16
|
],
|
|
15
17
|
"properties": {
|
|
16
18
|
"schema": { "const": "kungfu-buildchain-v4-release-invocation/v1" },
|
|
@@ -18,7 +20,9 @@
|
|
|
18
20
|
"runtime": { "$ref": "#/$defs/runtime" },
|
|
19
21
|
"candidate": { "$ref": "#/$defs/candidate" },
|
|
20
22
|
"target": { "$ref": "#/$defs/target" },
|
|
21
|
-
"authority": { "$ref": "#/$defs/authority" }
|
|
23
|
+
"authority": { "$ref": "#/$defs/authority" },
|
|
24
|
+
"provider": { "$ref": "#/$defs/provider" },
|
|
25
|
+
"parent": { "$ref": "#/$defs/parent" }
|
|
22
26
|
},
|
|
23
27
|
"$defs": {
|
|
24
28
|
"sha": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
|
|
@@ -81,6 +85,50 @@
|
|
|
81
85
|
"qualificationRoot": { "$ref": "#/$defs/root" },
|
|
82
86
|
"warrantRoot": { "$ref": "#/$defs/root" }
|
|
83
87
|
}
|
|
88
|
+
},
|
|
89
|
+
"provider": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"additionalProperties": false,
|
|
92
|
+
"required": ["adapter", "contract", "repository"],
|
|
93
|
+
"properties": {
|
|
94
|
+
"adapter": { "const": "built-in-provider-plane" },
|
|
95
|
+
"contract": {
|
|
96
|
+
"const": "kungfu-buildchain-release-tail-provider/v1"
|
|
97
|
+
},
|
|
98
|
+
"repository": { "type": "string", "pattern": "^[ -~]+$" }
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"parent": {
|
|
102
|
+
"type": "object",
|
|
103
|
+
"additionalProperties": false,
|
|
104
|
+
"required": ["invocationRoot", "transactionRoot", "receiptRoot"],
|
|
105
|
+
"properties": {
|
|
106
|
+
"invocationRoot": {
|
|
107
|
+
"oneOf": [{ "$ref": "#/$defs/root" }, { "type": "null" }]
|
|
108
|
+
},
|
|
109
|
+
"transactionRoot": {
|
|
110
|
+
"oneOf": [{ "$ref": "#/$defs/root" }, { "type": "null" }]
|
|
111
|
+
},
|
|
112
|
+
"receiptRoot": {
|
|
113
|
+
"oneOf": [{ "$ref": "#/$defs/root" }, { "type": "null" }]
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"oneOf": [
|
|
117
|
+
{
|
|
118
|
+
"properties": {
|
|
119
|
+
"invocationRoot": { "type": "null" },
|
|
120
|
+
"transactionRoot": { "type": "null" },
|
|
121
|
+
"receiptRoot": { "type": "null" }
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"properties": {
|
|
126
|
+
"invocationRoot": { "$ref": "#/$defs/root" },
|
|
127
|
+
"transactionRoot": { "$ref": "#/$defs/root" },
|
|
128
|
+
"receiptRoot": { "$ref": "#/$defs/root" }
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
]
|
|
84
132
|
}
|
|
85
133
|
}
|
|
86
134
|
}
|