@kungfu-tech/buildchain 4.0.1-alpha.5 → 4.0.1-alpha.6
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/actions/release-tail/README.md +8 -0
- package/architecture/internal-capabilities.json +65 -5
- package/architecture/maintainability-policy.json +22 -16
- package/architecture/release-tail-contract-inventory.json +5 -2
- package/architecture/v4-adopter-delivery-parity.json +32 -5
- package/architecture/v4-publication-rehearsal-parity.json +84 -0
- package/bin/buildchain.mjs +7 -1
- package/bin/internal/adopter-delivery-cli.mjs +70 -0
- package/bin/internal/command-registry.mjs +1 -0
- package/contracts/fixtures/v4-adopter-delivery-v1/archive-template.json +19 -0
- package/contracts/fixtures/v4-adopter-delivery-v1/bootstrap-positive.json +93 -0
- package/contracts/fixtures/v4-adopter-delivery-v1/gate-positive.json +29 -0
- package/contracts/fixtures/v4-adopter-delivery-v1/gate-unknown-selector.json +26 -0
- package/contracts/fixtures/v4-adopter-delivery-v1/offline-vectors.json +50 -0
- package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/artifacts/product.bin +1 -0
- package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/config/buildchain.toml +5 -0
- package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/documents/release-activation.json +1 -0
- package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/documents/signed-channel.json +1 -0
- package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/evidence/qualification.json +1 -0
- package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/manifests/candidate.json +5 -0
- package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/manifests/release-passport.json +1 -0
- package/contracts/fixtures/v4-publication-rehearsal-v1/capsule.json +707 -0
- package/contracts/fixtures/v4-publication-rehearsal-v1/offline-vectors.json +27 -0
- package/contracts/v4-adopter-delivery-v1.schema.json +81 -0
- package/contracts/v4-publication-rehearsal-capsule-v1.schema.json +233 -0
- package/dist/site/agent-index.json +3 -0
- package/dist/site/artifact-schemas.json +6 -0
- package/dist/site/buildchain-contract.json +14 -14
- package/dist/site/buildchain-site.json +219 -22
- package/dist/site/capability-registry.json +10 -9
- package/dist/site/cli-registry.json +53 -1
- package/dist/site/kfd-claims.json +253 -14
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +20 -5
- package/dist/site/node-api-registry.json +11501 -9312
- package/dist/site/page-registry.json +202 -13
- package/dist/site/public-surface-audit.json +195 -11
- package/dist/site/publication-authority-registry.json +17 -4
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/release-provenance.json +14 -0
- package/dist/site/schemas/release-tail-capabilities-v1.schema.json +199 -0
- package/dist/site/schemas/v4-adopter-delivery-v1.schema.json +81 -0
- package/dist/site/schemas/v4-publication-rehearsal-capsule-v1.schema.json +233 -0
- package/dist/site/site-manifest.json +17 -9
- package/dist/site/workflow-registry.json +89 -8
- package/docs/MAP.md +3 -1
- package/docs/cli-reference.md +68 -0
- package/docs/cli.md +8 -0
- package/docs/node-api-reference.md +198 -51
- package/docs/release-tail-provider-plane.md +30 -0
- package/docs/v4-adopter-delivery.md +133 -0
- package/docs/v4-publication-rehearsal.md +130 -0
- package/package.json +17 -3
- package/packages/core/adopter-delivery-passport.js +259 -0
- package/packages/core/adopter-delivery-vectors.js +158 -0
- package/packages/core/adopter-delivery-vectors.json +77 -0
- package/packages/core/buildchain-agent-manuals.js +1 -0
- package/packages/core/buildchain-config.js +84 -0
- package/packages/core/buildchain-delivery-bootstrap.js +240 -0
- package/packages/core/buildchain-delivery-infrastructure.js +164 -0
- package/packages/core/buildchain-delivery-self-dogfood.js +395 -0
- package/packages/core/legacy-kfd-adopter-driver.js +167 -0
- package/packages/core/published-delivery-authority.js +266 -0
- package/packages/core/release-passport.js +26 -8
- package/packages/core/v4-adopter-delivery-parity.js +3 -3
- package/packages/core/v4-adopter-delivery.js +359 -0
- package/packages/core/v4-publication-rehearsal-capsule.js +468 -0
- package/packages/core/v4-publication-rehearsal-provider-bindings.js +212 -0
- package/packages/core/v4-publication-rehearsal.js +481 -0
- package/scripts/buildchain-cli-help.mjs +10 -0
- package/scripts/check-inventory.mjs +3 -3
- package/scripts/dev-delivery-source-proof-replay.mjs +153 -0
- package/scripts/dev-delivery-source-proof-reuse.mjs +13 -97
- package/scripts/generate-release-candidate-passport.mjs +152 -0
- package/scripts/generate-site-bundle.mjs +30 -0
- package/scripts/release-tail.mjs +51 -3
- package/scripts/resume-from-candidate-run.mjs +545 -15
- package/scripts/site-capability-metadata.mjs +16 -0
- package/scripts/v4-publication-rehearsal-fixture.mjs +144 -0
|
@@ -11,3 +11,11 @@ not the adapter, compares the observed subject and target roots, owns retry and
|
|
|
11
11
|
terminal classification, checkpoints state and emits the standardized receipt.
|
|
12
12
|
Tokens remain Action inputs and are never written to the transaction or
|
|
13
13
|
receipt.
|
|
14
|
+
|
|
15
|
+
When `rehearsal-capsule` is supplied, the same Action switches to the v4
|
|
16
|
+
Publication Rehearsal Capsule boundary. `simulate` and `replay` remain
|
|
17
|
+
effect-disabled. `provider` additionally requires exact capsule-bound
|
|
18
|
+
rehearsal authority, consumes only the capsule-rooted data bindings, and
|
|
19
|
+
records every request/readback while still emitting
|
|
20
|
+
`productionAuthority: false` and no Release Passport. See
|
|
21
|
+
[`docs/v4-publication-rehearsal.md`](../../docs/v4-publication-rehearsal.md).
|
|
@@ -30,6 +30,9 @@
|
|
|
30
30
|
"packages/core/release-tail-provider-plane.js",
|
|
31
31
|
"packages/core/release-tail-provider-adapters.js",
|
|
32
32
|
"packages/core/release-tail-compatibility.js",
|
|
33
|
+
"packages/core/v4-publication-rehearsal-capsule.js",
|
|
34
|
+
"packages/core/v4-publication-rehearsal-provider-bindings.js",
|
|
35
|
+
"packages/core/v4-publication-rehearsal.js",
|
|
33
36
|
"actions/release-tail/index.js",
|
|
34
37
|
"scripts/authorize-promotion-runtime-override.cjs",
|
|
35
38
|
"scripts/build-contract-core.mjs",
|
|
@@ -115,6 +118,16 @@
|
|
|
115
118
|
"crates/buildchain-v4-contracts/src/stable_publication_fence.rs",
|
|
116
119
|
"packages/core/v4-partial-mutation-recovery-qualification.js",
|
|
117
120
|
"crates/buildchain-v4-contracts/src/partial_mutation_recovery.rs",
|
|
121
|
+
"packages/core/adopter-delivery-gate.js",
|
|
122
|
+
"packages/core/adopter-delivery-passport.js",
|
|
123
|
+
"packages/core/adopter-delivery-vectors.js",
|
|
124
|
+
"packages/core/buildchain-delivery-bootstrap.js",
|
|
125
|
+
"packages/core/buildchain-delivery-infrastructure.js",
|
|
126
|
+
"packages/core/buildchain-delivery-self-dogfood.js",
|
|
127
|
+
"packages/core/kfd-adopter-category-driver.js",
|
|
128
|
+
"packages/core/legacy-kfd-adopter-driver.js",
|
|
129
|
+
"packages/core/published-delivery-authority.js",
|
|
130
|
+
"packages/core/v4-adopter-delivery.js",
|
|
118
131
|
"packages/core/v4-adopter-delivery-parity.js",
|
|
119
132
|
"crates/buildchain-v4-contracts/src/adopter_delivery.rs",
|
|
120
133
|
"crates/buildchain-v4-contracts/src/compatibility_facts.rs",
|
|
@@ -462,6 +475,22 @@
|
|
|
462
475
|
"docs/release-tail-provider-plane.md"
|
|
463
476
|
]
|
|
464
477
|
},
|
|
478
|
+
{
|
|
479
|
+
"id": "v4-publication-rehearsal",
|
|
480
|
+
"owner": "Buildchain publication rehearsal maintainers",
|
|
481
|
+
"implementation": [
|
|
482
|
+
"packages/core/v4-publication-rehearsal-capsule.js",
|
|
483
|
+
"packages/core/v4-publication-rehearsal-provider-bindings.js",
|
|
484
|
+
"packages/core/v4-publication-rehearsal.js"
|
|
485
|
+
],
|
|
486
|
+
"tests": ["tests/v4-publication-rehearsal.test.mjs"],
|
|
487
|
+
"contracts": [
|
|
488
|
+
"architecture/v4-publication-rehearsal-parity.json",
|
|
489
|
+
"contracts/v4-publication-rehearsal-capsule-v1.schema.json",
|
|
490
|
+
".github/workflows/v4-publication-rehearsal-dogfood.yml",
|
|
491
|
+
"docs/v4-publication-rehearsal.md"
|
|
492
|
+
]
|
|
493
|
+
},
|
|
465
494
|
{
|
|
466
495
|
"id": "v4-delivery-authority",
|
|
467
496
|
"owner": "Buildchain protected delivery maintainers",
|
|
@@ -548,6 +577,41 @@
|
|
|
548
577
|
"docs/v4-compatibility-facts.md"
|
|
549
578
|
]
|
|
550
579
|
},
|
|
580
|
+
{
|
|
581
|
+
"id": "v4-adopter-delivery",
|
|
582
|
+
"owner": "Buildchain adopter delivery maintainers",
|
|
583
|
+
"implementation": [
|
|
584
|
+
"bin/internal/adopter-delivery-cli.mjs",
|
|
585
|
+
"packages/core/adopter-delivery-gate.js",
|
|
586
|
+
"packages/core/adopter-delivery-passport.js",
|
|
587
|
+
"packages/core/adopter-delivery-vectors.js",
|
|
588
|
+
"packages/core/buildchain-delivery-bootstrap.js",
|
|
589
|
+
"packages/core/buildchain-delivery-infrastructure.js",
|
|
590
|
+
"packages/core/buildchain-delivery-self-dogfood.js",
|
|
591
|
+
"packages/core/kfd-adopter-category-driver.js",
|
|
592
|
+
"packages/core/legacy-kfd-adopter-driver.js",
|
|
593
|
+
"packages/core/published-delivery-authority.js",
|
|
594
|
+
"packages/core/v4-adopter-delivery.js",
|
|
595
|
+
"packages/core/v4-adopter-delivery-parity.js",
|
|
596
|
+
"crates/buildchain-v4-contracts/src/adopter_delivery.rs"
|
|
597
|
+
],
|
|
598
|
+
"tests": [
|
|
599
|
+
"tests/v4-adopter-delivery.test.mjs",
|
|
600
|
+
"tests/v4-adopter-delivery-parity.test.mjs"
|
|
601
|
+
],
|
|
602
|
+
"contracts": [
|
|
603
|
+
"architecture/v4-adopter-delivery-parity.json",
|
|
604
|
+
"contracts/v4-adopter-delivery-v1.schema.json",
|
|
605
|
+
"contracts/fixtures/v4-adopter-delivery-v1/archive-template.json",
|
|
606
|
+
"contracts/fixtures/v4-adopter-delivery-v1/bootstrap-positive.json",
|
|
607
|
+
"contracts/fixtures/v4-adopter-delivery-v1/gate-positive.json",
|
|
608
|
+
"contracts/fixtures/v4-adopter-delivery-v1/gate-unknown-selector.json",
|
|
609
|
+
"contracts/fixtures/v4-adopter-delivery-v1/offline-vectors.json",
|
|
610
|
+
".github/workflows/v4-adopter-delivery.yml",
|
|
611
|
+
".github/workflows/v4-adopter-delivery-dogfood.yml",
|
|
612
|
+
"docs/v4-adopter-delivery.md"
|
|
613
|
+
]
|
|
614
|
+
},
|
|
551
615
|
{
|
|
552
616
|
"id": "v4-architecture-governance",
|
|
553
617
|
"owner": "Buildchain architecture maintainers",
|
|
@@ -562,7 +626,6 @@
|
|
|
562
626
|
"packages/core/v4-release-activation-shadow.js",
|
|
563
627
|
"packages/core/v4-stable-publication-fence.js",
|
|
564
628
|
"packages/core/v4-partial-mutation-recovery-qualification.js",
|
|
565
|
-
"packages/core/v4-adopter-delivery-parity.js",
|
|
566
629
|
"packages/core/v4-runtime-ref-resume-authority.js",
|
|
567
630
|
"packages/core/v4-runtime-selector-persistence.js",
|
|
568
631
|
"packages/core/v4-tail-reseal-contract.js",
|
|
@@ -588,8 +651,7 @@
|
|
|
588
651
|
"crates/buildchain-v4-contracts/src/release_activation_shadow/model.rs",
|
|
589
652
|
"crates/buildchain-v4-contracts/src/release_activation_shadow/journal.rs",
|
|
590
653
|
"crates/buildchain-v4-contracts/src/stable_publication_fence.rs",
|
|
591
|
-
"crates/buildchain-v4-contracts/src/partial_mutation_recovery.rs"
|
|
592
|
-
"crates/buildchain-v4-contracts/src/adopter_delivery.rs"
|
|
654
|
+
"crates/buildchain-v4-contracts/src/partial_mutation_recovery.rs"
|
|
593
655
|
],
|
|
594
656
|
"tests": [
|
|
595
657
|
"tests/v4-architecture.test.mjs",
|
|
@@ -603,7 +665,6 @@
|
|
|
603
665
|
"tests/v4-stage-capsule-store.test.mjs",
|
|
604
666
|
"tests/v4-platform-stage-checkpoints.test.mjs",
|
|
605
667
|
"tests/v4-stage-capsule-qualification.test.mjs",
|
|
606
|
-
"tests/v4-adopter-delivery-parity.test.mjs",
|
|
607
668
|
"tests/v4-runtime-ref-resume-authority.test.mjs",
|
|
608
669
|
"tests/v4-tail-reseal.test.mjs",
|
|
609
670
|
"tests/v4-tail-reseal-parity.test.mjs"
|
|
@@ -623,7 +684,6 @@
|
|
|
623
684
|
"architecture/v4-stage-capsule-store-contract.json",
|
|
624
685
|
"architecture/v4-platform-stage-checkpoints.json",
|
|
625
686
|
"architecture/v4-stage-capsule-qualification.json",
|
|
626
|
-
"architecture/v4-adopter-delivery-parity.json",
|
|
627
687
|
"architecture/v4-runtime-ref-resume-authority.json",
|
|
628
688
|
"contracts/v4-host-contract-v1.schema.json",
|
|
629
689
|
"contracts/v4-provider-operation-journal-v1.schema.json",
|
|
@@ -5,12 +5,13 @@
|
|
|
5
5
|
"enforcementRevision": "5308189b09bcb5a1314195412f2807a40d678838",
|
|
6
6
|
"repositoryBudgets": {
|
|
7
7
|
"baselineRevision": "c70e6ac28431888b24fefc218246cc69f8dde85a",
|
|
8
|
-
"maxHandMaintainedSourceFiles":
|
|
9
|
-
"maxHandMaintainedSourceLines":
|
|
10
|
-
"maxWorkflowFiles":
|
|
11
|
-
"maxWorkflowLines":
|
|
12
|
-
"latestTransition": "
|
|
13
|
-
"
|
|
8
|
+
"maxHandMaintainedSourceFiles": 422,
|
|
9
|
+
"maxHandMaintainedSourceLines": 158836,
|
|
10
|
+
"maxWorkflowFiles": 75,
|
|
11
|
+
"maxWorkflowLines": 25983,
|
|
12
|
+
"latestTransition": "Floating Alpha bootstrap routes only automatic Alpha self-promotion through the protected Alpha private shell while the old floating shell cannot carry its own repair; stable promotion remains on the public v4 wrapper.",
|
|
13
|
+
"latestTransitionRationale": "One credentialless resolver reuses the published promotion identity authority to bind the floating router and runtime, protected Alpha shell, and exact Alpha lock digest before that shell independently reproduces the external consumer-policy certification. The bounded route adds no manual publication, tag, ref, npm, stable, or public-consumer authority and is removed after the protected workflow promotion advances v4-alpha. These exact 422-file, 158836-source-line, 75-workflow-file and 25983-workflow-line ceilings add no unreviewed headroom or function-budget widening.",
|
|
14
|
+
"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. These exact 422-file, 158836-source-line, 75-workflow-file and 25983-workflow-line ceilings cannot grow implicitly."
|
|
14
15
|
},
|
|
15
16
|
"sourceBudgets": {
|
|
16
17
|
"newFileLines": 600,
|
|
@@ -33,7 +34,7 @@
|
|
|
33
34
|
},
|
|
34
35
|
"scripts/dev-delivery-source-proof-reuse.mjs": {
|
|
35
36
|
"maxLines": 631,
|
|
36
|
-
"rationale": "The bounded source-proof driver seals one exact PR qualification and
|
|
37
|
+
"rationale": "The bounded source-proof driver seals one exact PR qualification and delegates merge-group graph verification to the isolated exact-patch replay module. Unknown, nonlinear, extra-commit, patch-drift or base-divergent compositions still fail closed to the full lifecycle, and this exact file ceiling cannot grow implicitly."
|
|
37
38
|
},
|
|
38
39
|
"scripts/dev-pr-prequeue-guard.mjs": {
|
|
39
40
|
"maxLines": 399,
|
|
@@ -96,6 +97,10 @@
|
|
|
96
97
|
"packages/core/v4-runtime-selector-persistence.js": {
|
|
97
98
|
"maxLines": 228,
|
|
98
99
|
"rationale": "The isolated source scanner rejects persisted exact, train, authority, variable, secret, and environment selector authority while inventorying OIDC, IAM, and external authority metadata without reading credentials; this exact ceiling cannot grow implicitly."
|
|
100
|
+
},
|
|
101
|
+
"scripts/resume-from-candidate-run.mjs": {
|
|
102
|
+
"maxLines": 1125,
|
|
103
|
+
"rationale": "The candidate recovery adapter retains the existing artifact normalization and immutable recovery receipt boundary while adding fresh authorized cross-runtime Stage Capsule resume material, post-publication ref, tag, ancestry, and npm readback, and rooted Release Passport lineage. Its main orchestration remains below the default function length and complexity limits, and this exact file ceiling cannot grow implicitly."
|
|
99
104
|
}
|
|
100
105
|
},
|
|
101
106
|
"approvedExistingDebtTransitions": {
|
|
@@ -104,8 +109,8 @@
|
|
|
104
109
|
"rationale": "The public facade forwards the reviewed runtime-resume authority beside the existing declarative release-tail and v4 governance APIs without adding a second implementation or execution path; this exact post-integration ceiling cannot grow implicitly."
|
|
105
110
|
},
|
|
106
111
|
"actions/promote-buildchain-ref/index.js": {
|
|
107
|
-
"maxFunctionLines":
|
|
108
|
-
"rationale": "The existing action entrypoint forwards
|
|
112
|
+
"maxFunctionLines": 280,
|
|
113
|
+
"rationale": "The existing action entrypoint forwards the optional rooted v4 runtime-resume material and its trusted post-publication finalizer into the audited durable Passport operation. The exact readable four-line input widening cannot grow implicitly."
|
|
109
114
|
},
|
|
110
115
|
"actions/promote-buildchain-ref/lib.js": {
|
|
111
116
|
"maxLines": 6952,
|
|
@@ -116,9 +121,9 @@
|
|
|
116
121
|
"rationale": "The runtime entrypoint now binds every compatibility command and alias, including the upstream paper command, through the tested command registry; this exact post-integration wiring ceiling cannot grow implicitly."
|
|
117
122
|
},
|
|
118
123
|
"packages/core/release-passport.js": {
|
|
119
|
-
"maxLines":
|
|
124
|
+
"maxLines": 2976,
|
|
120
125
|
"maxFunctionLines": 304,
|
|
121
|
-
"rationale": "Responsibility-owned validators preserve issue ordering, byte-stable reports, upstream release evidence, consumer-policy certification, and
|
|
126
|
+
"rationale": "Responsibility-owned validators preserve issue ordering, byte-stable reports, upstream release evidence, consumer-policy certification, and rooted runtime A+B resume lineage. Tree-equivalent promotion keeps the original built source identity while the optional attachment is normalized and independently reverified before inclusion; these exact post-integration ceilings cannot grow implicitly."
|
|
122
127
|
},
|
|
123
128
|
"packages/core/buildchain-contract.js": {
|
|
124
129
|
"maxLines": 1096,
|
|
@@ -131,8 +136,8 @@
|
|
|
131
136
|
"rationale": "The publication authority now declares the alpha/v4/v4.0 and release/v4/v4.0 protected channels required for the v4 public train. This exact two-line channel transition cannot grow implicitly."
|
|
132
137
|
},
|
|
133
138
|
"packages/core/buildchain-config.js": {
|
|
134
|
-
"maxLines":
|
|
135
|
-
"rationale": "Artifact signing configuration admits only the Buildchain-owned JIT profile with exact safe archive-relative target paths while rejecting credentials, entitlement files, wildcard paths, incompatible artifact kinds, and incomplete declarations; this exact wiring ceiling cannot grow implicitly."
|
|
139
|
+
"maxLines": 1885,
|
|
140
|
+
"rationale": "Artifact signing configuration admits only the Buildchain-owned JIT profile with exact safe archive-relative target paths while rejecting credentials, entitlement files, wildcard paths, incompatible artifact kinds, and incomplete declarations. Publication rehearsal remains effect-disabled. Adopter delivery adds only a closed public contract, exact selectors and repository-relative input, readback, bootstrap, archive and result paths; this exact wiring ceiling cannot grow implicitly."
|
|
136
141
|
},
|
|
137
142
|
"scripts/check-internal-architecture.mjs": {
|
|
138
143
|
"maxFunctionComplexity": 37,
|
|
@@ -299,6 +304,7 @@
|
|
|
299
304
|
"release-passport-promotion-routing-json",
|
|
300
305
|
"release-passport-v4-consumer-policy-certification-json",
|
|
301
306
|
"release-passport-v4-consumer-policy-certification-root",
|
|
307
|
+
"release-passport-v4-runtime-resume-evidence-command",
|
|
302
308
|
"release-passport-v4-runtime-resume-evidence-json",
|
|
303
309
|
"release-tail-state-path",
|
|
304
310
|
"require-governance",
|
|
@@ -316,7 +322,7 @@
|
|
|
316
322
|
"secrets": [],
|
|
317
323
|
"outputs": []
|
|
318
324
|
},
|
|
319
|
-
"rationale": "The promote action preserves the independently rooted v4 consumer-policy certification and
|
|
325
|
+
"rationale": "The promote action preserves the independently rooted v4 consumer-policy certification and accepts one optional verified runtime-resume evidence document plus one trusted post-publication finalizer command. The command runs only inside the existing durable Passport finalization boundary after provider effects and public readback; v3 behavior remains unchanged."
|
|
320
326
|
},
|
|
321
327
|
"cli:architecture": {
|
|
322
328
|
"fromRevision": "5308189b09bcb5a1314195412f2807a40d678838",
|
|
@@ -1506,9 +1512,9 @@
|
|
|
1506
1512
|
"rationale": "The existing version-state commit transaction remains nested under its extracted operation factory and is independently regression-tested; this exact inherited ceiling cannot grow."
|
|
1507
1513
|
},
|
|
1508
1514
|
"actions/promote-buildchain-ref/internal/durable-transaction-operations.js#createDurableTransactionOperations": {
|
|
1509
|
-
"maxLines":
|
|
1515
|
+
"maxLines": 378,
|
|
1510
1516
|
"maxComplexity": 1,
|
|
1511
|
-
"rationale": "Transplanted legacy durable transaction and Passport operations
|
|
1517
|
+
"rationale": "Transplanted legacy durable transaction and Passport operations remain in one independently owned module. The exact two-line readable widening forwards rooted runtime-resume material and its post-publication finalizer without accepting a transient rebuilt candidate or inconsistent per-field overrides; this ceiling cannot grow implicitly."
|
|
1512
1518
|
},
|
|
1513
1519
|
"packages/core/paper-npm-bootstrap.js#executePaperNpmBootstrap": {
|
|
1514
1520
|
"maxLines": 490,
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"release-passport-evidence-command",
|
|
42
42
|
"release-passport-invariant-passport-command",
|
|
43
43
|
"release-passport-kfd-3-artifact-verify-command",
|
|
44
|
+
"release-passport-v4-runtime-resume-evidence-command",
|
|
44
45
|
"verification-command"
|
|
45
46
|
],
|
|
46
47
|
"configAndCliAliases": [
|
|
@@ -286,7 +287,8 @@
|
|
|
286
287
|
"publicNames": [
|
|
287
288
|
"release-passport-kfd-3-artifact-verify-command",
|
|
288
289
|
"release-passport-invariant-passport-command",
|
|
289
|
-
"release-passport-attachment-command"
|
|
290
|
+
"release-passport-attachment-command",
|
|
291
|
+
"release-passport-v4-runtime-resume-evidence-command"
|
|
290
292
|
],
|
|
291
293
|
"aliases": [
|
|
292
294
|
{
|
|
@@ -306,7 +308,8 @@
|
|
|
306
308
|
"action:actions/promote-buildchain-ref/action.yml#release-passport-kfd-3-artifact-verify-command",
|
|
307
309
|
"action:actions/promote-buildchain-ref/action.yml#release-passport-invariant-passport-command",
|
|
308
310
|
"action:actions/promote-buildchain-ref/action.yml#release-passport-attachment-command",
|
|
309
|
-
"action:actions/promote-buildchain-ref/action.yml#release-passport-evidence-command"
|
|
311
|
+
"action:actions/promote-buildchain-ref/action.yml#release-passport-evidence-command",
|
|
312
|
+
"action:actions/promote-buildchain-ref/action.yml#release-passport-v4-runtime-resume-evidence-command"
|
|
310
313
|
],
|
|
311
314
|
"executionSites": [
|
|
312
315
|
{
|
|
@@ -3,14 +3,16 @@
|
|
|
3
3
|
"contract": "kungfu-buildchain-v4-adopter-delivery-parity-plan",
|
|
4
4
|
"sourceAuthority": {
|
|
5
5
|
"branch": "dev/v3/v3.0",
|
|
6
|
-
"commit": "
|
|
7
|
-
"vectorSuiteRoot": "sha256:
|
|
8
|
-
"kfdPackage": "@kungfu-tech/kfd@1.0.0-alpha.
|
|
6
|
+
"commit": "6b96bdad8d9f8ccf9275f27d9370a226a9c78465",
|
|
7
|
+
"vectorSuiteRoot": "sha256:c978707556406ffda4ef4192032332c01c2da1cebb6ad8c4f0edfc65d5cef0c7",
|
|
8
|
+
"kfdPackage": "@kungfu-tech/kfd@1.0.0-alpha.65"
|
|
9
9
|
},
|
|
10
10
|
"target": {
|
|
11
11
|
"branch": "dev/v4/v4.0",
|
|
12
|
-
"
|
|
12
|
+
"initialBaseline": "e5611377efc03178f8687d99968cfdfa3ce2825b",
|
|
13
|
+
"baseline": "e0342713c7447960c13bd73377282b2e93f4853d",
|
|
13
14
|
"mode": "effect-disabled",
|
|
15
|
+
"surface": "public-protocol-neutral-adopter-delivery",
|
|
14
16
|
"productionWriterAuthority": false
|
|
15
17
|
},
|
|
16
18
|
"vectors": [
|
|
@@ -37,11 +39,36 @@
|
|
|
37
39
|
{
|
|
38
40
|
"id": "fault-driver-throw",
|
|
39
41
|
"mode": "gate-core-parity"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"id": "positive-n-minus-one-bootstrap",
|
|
45
|
+
"mode": "public-bootstrap-lineage"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "positive-published-archive",
|
|
49
|
+
"mode": "public-archive-authority"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "negative-archive-identity",
|
|
53
|
+
"mode": "public-archive-authority"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "negative-bootstrap-lineage",
|
|
57
|
+
"mode": "public-bootstrap-lineage"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "negative-protocol-version",
|
|
61
|
+
"mode": "public-driver-selection"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "tamper-readback",
|
|
65
|
+
"mode": "public-exact-readback"
|
|
40
66
|
}
|
|
41
67
|
],
|
|
42
68
|
"nonClaims": [
|
|
43
69
|
"The Rust projection has no provider, credential, release, signing or production-writer authority.",
|
|
44
70
|
"KFD semantics are evaluated only by exact published KFD bytes before the effect-disabled carrier projection.",
|
|
45
|
-
"Release Passport evidence substitution remains on the protected v3 boundary and is not reimplemented as a v4 writer."
|
|
71
|
+
"Release Passport evidence substitution remains on the protected v3 boundary and is not reimplemented as a v4 writer.",
|
|
72
|
+
"The public CLI, Node API, schema, configuration and reusable workflow retain provider, signing, publication and release authority as explicit non-claims."
|
|
46
73
|
]
|
|
47
74
|
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "buildchain.v4.publication-rehearsal-parity/v1",
|
|
3
|
+
"source": {
|
|
4
|
+
"branch": "dev/v3/v3.0",
|
|
5
|
+
"commit": "6b96bdad8d9f8ccf9275f27d9370a226a9c78465",
|
|
6
|
+
"runtime": "packages/core/publication-rehearsal-runtime.js"
|
|
7
|
+
},
|
|
8
|
+
"target": {
|
|
9
|
+
"branch": "dev/v4/v4.0",
|
|
10
|
+
"commit": "bc12cd0ff18a7e1d918777ea093c169349952d34",
|
|
11
|
+
"capsuleContract": "packages/core/v4-publication-rehearsal-capsule.js",
|
|
12
|
+
"runtime": "packages/core/v4-publication-rehearsal.js",
|
|
13
|
+
"providerBindings": "packages/core/v4-publication-rehearsal-provider-bindings.js"
|
|
14
|
+
},
|
|
15
|
+
"sharedProductionCore": {
|
|
16
|
+
"planner": "compileReleaseTailDeclaration",
|
|
17
|
+
"initializer": "createReleaseTailTransaction",
|
|
18
|
+
"executor": "executeReleaseTailTransaction",
|
|
19
|
+
"version": "buildchain.release-tail/v1"
|
|
20
|
+
},
|
|
21
|
+
"stageCapsuleBoundary": {
|
|
22
|
+
"contract": "buildchain-v4-stage-capsule/v1",
|
|
23
|
+
"purpose": "pure platform-stage build checkpoint reuse",
|
|
24
|
+
"publicationEffects": false,
|
|
25
|
+
"publicationAuthority": false
|
|
26
|
+
},
|
|
27
|
+
"matrix": [
|
|
28
|
+
{
|
|
29
|
+
"invariant": "capsule-purpose",
|
|
30
|
+
"v3": "publication rehearsal",
|
|
31
|
+
"v4": "publication rehearsal distinct from Stage Capsule",
|
|
32
|
+
"parity": "safety-strengthened"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"invariant": "content-addressed-inputs",
|
|
36
|
+
"v3": "capsule, declaration, transaction, files, data-only provider bindings, policy and observations",
|
|
37
|
+
"v4": "capsule, source, candidate, manifest, config, provider bindings, provider policy, expected observations and core version",
|
|
38
|
+
"parity": "safety-strengthened"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"invariant": "provider-request-binding",
|
|
42
|
+
"v3": "provider binding payload is capsule-rooted and every input path is in files",
|
|
43
|
+
"v4": "providerBindingsRoot covers canonical bindings and every request byte is inventory-rooted before adapters",
|
|
44
|
+
"parity": "exact"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"invariant": "shared-release-tail-core",
|
|
48
|
+
"v3": "shared planner and executor",
|
|
49
|
+
"v4": "same production planner, initializer and executor",
|
|
50
|
+
"parity": "exact"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"invariant": "effect-default",
|
|
54
|
+
"v3": "simulate and replay local defaults",
|
|
55
|
+
"v4": "provider policy is rooted and effect-disabled by default",
|
|
56
|
+
"parity": "safety-strengthened"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"invariant": "authorized-provider-rehearsal",
|
|
60
|
+
"v3": "provider observations are recorded without authority",
|
|
61
|
+
"v4": "exact capsule-bound rehearsal-only authority plus request and readback transcript",
|
|
62
|
+
"parity": "safety-strengthened"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"invariant": "release-authority",
|
|
66
|
+
"v3": "externalPublicationClaimed false",
|
|
67
|
+
"v4": "productionAuthority false and releasePassport null",
|
|
68
|
+
"parity": "exact"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"invariant": "tamper-response",
|
|
72
|
+
"v3": "capsule and file mismatch fail closed",
|
|
73
|
+
"v4": "every named identity root and core version mismatch fails closed",
|
|
74
|
+
"parity": "safety-strengthened"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"invariant": "portability",
|
|
78
|
+
"v3": "platform-independent local capsule root",
|
|
79
|
+
"v4": "byte-identical offline linux, macos and windows vector",
|
|
80
|
+
"parity": "exact"
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"matrixRoot": "sha256:521694ce2cc1d5b383eaa6b84f1b6926ef8ce8f33085e02507e611e9f9b6e784"
|
|
84
|
+
}
|
package/bin/buildchain.mjs
CHANGED
|
@@ -111,6 +111,7 @@ import {
|
|
|
111
111
|
} from "./internal/trust-release-cli.mjs";
|
|
112
112
|
import { dispatchRegisteredCommand } from "./internal/command-registry.mjs";
|
|
113
113
|
import { runCompatibilityFactsCli } from "./internal/compatibility-facts-cli.mjs";
|
|
114
|
+
import { runAdopterDeliveryCli } from "./internal/adopter-delivery-cli.mjs";
|
|
114
115
|
|
|
115
116
|
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
116
117
|
const embeddedPackageVersion = process.env.BUILDCHAIN_EMBEDDED_PACKAGE_VERSION || "";
|
|
@@ -1675,7 +1676,7 @@ async function handleReleaseGovernanceCommand(args) {
|
|
|
1675
1676
|
}
|
|
1676
1677
|
|
|
1677
1678
|
async function handleReleaseTailCommand(args) {
|
|
1678
|
-
runReleaseTailCli(args);
|
|
1679
|
+
await runReleaseTailCli(args);
|
|
1679
1680
|
}
|
|
1680
1681
|
|
|
1681
1682
|
async function handleTailResealCommand(args) {
|
|
@@ -1750,6 +1751,10 @@ async function handleArchitectureCommand(args) {
|
|
|
1750
1751
|
runScript("v4-architecture.mjs", args);
|
|
1751
1752
|
}
|
|
1752
1753
|
|
|
1754
|
+
async function handleAdopterDeliveryCommand(args) {
|
|
1755
|
+
await runAdopterDeliveryCli(args);
|
|
1756
|
+
}
|
|
1757
|
+
|
|
1753
1758
|
const BUILDCHAIN_COMMAND_HANDLERS = Object.freeze({
|
|
1754
1759
|
"help": handleHelpCommand,
|
|
1755
1760
|
"version": handleVersionCommand,
|
|
@@ -1790,6 +1795,7 @@ const BUILDCHAIN_COMMAND_HANDLERS = Object.freeze({
|
|
|
1790
1795
|
"build-contract": handleBuildContractCommand,
|
|
1791
1796
|
"publish-source": handlePublishSourceCommand,
|
|
1792
1797
|
"architecture": handleArchitectureCommand,
|
|
1798
|
+
"adopter-delivery": handleAdopterDeliveryCommand,
|
|
1793
1799
|
});
|
|
1794
1800
|
|
|
1795
1801
|
async function main(argv = process.argv.slice(2)) {
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import {
|
|
2
|
+
loadV4PublishedAdopterDeliveryAuthority,
|
|
3
|
+
qualifyV4AdopterDeliveryBootstrap,
|
|
4
|
+
runV4AdopterDeliveryGate,
|
|
5
|
+
verifyV4AdopterDeliveryReadback,
|
|
6
|
+
} from "../../packages/core/v4-adopter-delivery.js";
|
|
7
|
+
import {
|
|
8
|
+
printJson,
|
|
9
|
+
readFlag,
|
|
10
|
+
readJsonInput,
|
|
11
|
+
writeJsonFile,
|
|
12
|
+
} from "./cli-options.mjs";
|
|
13
|
+
|
|
14
|
+
function emit(args, value) {
|
|
15
|
+
writeJsonFile(readFlag(args, "output", ""), value);
|
|
16
|
+
printJson(value);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export async function runAdopterDeliveryCli(args = []) {
|
|
20
|
+
const [subcommand = "", ...commandArgs] = args;
|
|
21
|
+
if (subcommand === "run") {
|
|
22
|
+
const input = readJsonInput(readFlag(commandArgs, "input", ""), {
|
|
23
|
+
label: "adopter delivery input",
|
|
24
|
+
});
|
|
25
|
+
emit(commandArgs, runV4AdopterDeliveryGate(input));
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (subcommand === "verify") {
|
|
29
|
+
const input = readJsonInput(readFlag(commandArgs, "input", ""), {
|
|
30
|
+
label: "adopter delivery input",
|
|
31
|
+
});
|
|
32
|
+
const readback = readJsonInput(readFlag(commandArgs, "readback", ""), {
|
|
33
|
+
label: "adopter delivery readback",
|
|
34
|
+
});
|
|
35
|
+
emit(commandArgs, verifyV4AdopterDeliveryReadback({ input, readback }));
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (subcommand === "bootstrap") {
|
|
39
|
+
const request = readJsonInput(readFlag(commandArgs, "input", ""), {
|
|
40
|
+
label: "adopter delivery bootstrap input",
|
|
41
|
+
});
|
|
42
|
+
emit(commandArgs, qualifyV4AdopterDeliveryBootstrap(request));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (subcommand === "archive") {
|
|
46
|
+
const request = readJsonInput(readFlag(commandArgs, "input", ""), {
|
|
47
|
+
label: "published archive input",
|
|
48
|
+
});
|
|
49
|
+
const authority = await loadV4PublishedAdopterDeliveryAuthority(request);
|
|
50
|
+
try {
|
|
51
|
+
emit(commandArgs, {
|
|
52
|
+
schemaVersion: authority.schemaVersion,
|
|
53
|
+
contract: authority.contract,
|
|
54
|
+
packages: authority.packages,
|
|
55
|
+
moduleCoordinates: authority.moduleCoordinates,
|
|
56
|
+
authorityRoot: authority.authorityRoot,
|
|
57
|
+
qualifying: authority.qualifying,
|
|
58
|
+
selfCertified: authority.selfCertified,
|
|
59
|
+
releaseAuthorized: authority.releaseAuthorized,
|
|
60
|
+
finalAuthority: authority.finalAuthority,
|
|
61
|
+
});
|
|
62
|
+
} finally {
|
|
63
|
+
await authority.dispose();
|
|
64
|
+
}
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
throw new Error(
|
|
68
|
+
"usage: buildchain adopter-delivery <run|verify|bootstrap|archive> --input <json-or-path> [--readback <json-or-path>] [--output <path>]",
|
|
69
|
+
);
|
|
70
|
+
}
|
|
@@ -41,6 +41,7 @@ const BUILDCHAIN_COMMAND_REGISTRY = Object.freeze([
|
|
|
41
41
|
{ id: "build-contract", aliases: [] },
|
|
42
42
|
{ id: "publish-source", aliases: [] },
|
|
43
43
|
{ id: "architecture", aliases: [] },
|
|
44
|
+
{ id: "adopter-delivery", aliases: [] },
|
|
44
45
|
]);
|
|
45
46
|
|
|
46
47
|
function buildCommandLookup(registry = BUILDCHAIN_COMMAND_REGISTRY) {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"packages": {
|
|
3
|
+
"buildchain": {
|
|
4
|
+
"name": "@kungfu-tech/buildchain",
|
|
5
|
+
"version": "3.0.9-alpha.16",
|
|
6
|
+
"archivePath": ".buildchain/adopter-delivery-archives/kungfu-tech-buildchain-3.0.9-alpha.16.tgz",
|
|
7
|
+
"archiveRoot": "sha256:3f425e2c77d11f0bee8eb9aa2448566bca7a9d14672a7e528ced3e505b3f14a3",
|
|
8
|
+
"artifactRoot": "sha256:3f425e2c77d11f0bee8eb9aa2448566bca7a9d14672a7e528ced3e505b3f14a3"
|
|
9
|
+
},
|
|
10
|
+
"kfd": {
|
|
11
|
+
"name": "@kungfu-tech/kfd",
|
|
12
|
+
"version": "1.0.0-alpha.65",
|
|
13
|
+
"archivePath": ".buildchain/adopter-delivery-archives/kungfu-tech-kfd-1.0.0-alpha.65.tgz",
|
|
14
|
+
"archiveRoot": "sha256:c4dbd3f954910236d7f0823ea6887f4151e43b871df526ccdd599123421bced2",
|
|
15
|
+
"artifactRoot": "sha256:c0781bcaf191a58561ae32ee2fbedabbb48ed50b5725c356fbd83704089637f8"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"expectedAuthorityRoot": "sha256:9ba0cc6042b189ce749d01003617b57bcd03ea6ecf40e96d19e8ecbbfa347134"
|
|
19
|
+
}
|