@kungfu-tech/buildchain 4.0.1-alpha.5 → 4.0.1-alpha.55
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 +9 -6
- package/actions/release-tail/README.md +8 -0
- package/actions/v4-release-candidate-promote/README.md +3 -0
- package/architecture/agent-change-map.md +1015 -0
- package/architecture/ci-lane-change-budget.json +256 -0
- package/architecture/decisions/0004-v4-declarative-release-tail.md +47 -0
- package/architecture/internal-capabilities.json +220 -15
- package/architecture/maintainability-debt.json +3229 -0
- package/architecture/maintainability-policy.json +489 -132
- package/architecture/release-tail-contract-inventory.json +5 -2
- package/architecture/v3-core-mechanism-inventory.json +4 -3
- package/architecture/v3-v4-capability-closure.md +59 -0
- package/architecture/v3-v4-live-capability-inventory.json +102404 -0
- package/architecture/v4-adopter-delivery-parity.json +32 -5
- package/architecture/v4-cross-platform-adopter-qualification.json +52 -0
- package/architecture/v4-delivery-warrant-shadow-fixtures.json +3 -3
- package/architecture/v4-floating-consumer-policy.json +6 -0
- package/architecture/v4-publication-rehearsal-parity.json +84 -0
- package/architecture/v4-runtime-semantic-closure.json +710 -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/bin/internal/trust-release-release-handlers.mjs +5 -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/fixtures/v4-tail-reseal-v1/valid.json +1 -1
- package/contracts/v4-adopter-delivery-v1.schema.json +81 -0
- package/contracts/v4-floating-consumer-policy-receipt-v1.schema.json +4 -2
- package/contracts/v4-publication-qualification-v1.schema.json +51 -0
- package/contracts/v4-publication-rehearsal-capsule-v1.schema.json +233 -0
- package/dist/site/agent-index.json +4 -0
- package/dist/site/artifact-schemas.json +8 -0
- package/dist/site/buildchain-contract.json +125 -34
- package/dist/site/buildchain-site.json +308 -33
- package/dist/site/capability-registry.json +13 -12
- package/dist/site/cli-registry.json +57 -2
- package/dist/site/controller-registry.json +41 -5
- package/dist/site/kfd-claims.json +438 -24
- package/dist/site/kfd-upstream-aggregate.json +1 -1
- package/dist/site/manual-registry.json +22 -7
- package/dist/site/node-api-registry.json +12843 -9314
- package/dist/site/page-registry.json +288 -21
- package/dist/site/public-surface-audit.json +281 -21
- package/dist/site/publication-authority-registry.json +66 -8
- package/dist/site/publication-registry.json +4 -4
- package/dist/site/release-provenance.json +20 -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-qualification-v1.schema.json +51 -0
- package/dist/site/schemas/v4-publication-rehearsal-capsule-v1.schema.json +233 -0
- package/dist/site/site-manifest.json +19 -11
- package/dist/site/workflow-registry.json +195 -17
- package/docs/MAP.md +4 -2
- package/docs/cli-reference.md +70 -2
- package/docs/cli.md +8 -0
- package/docs/dev-delivery-warrant.md +34 -10
- package/docs/node-api-reference.md +524 -279
- package/docs/publish-transaction.md +11 -4
- package/docs/release-candidate.md +7 -0
- package/docs/release-tail-provider-plane.md +30 -0
- package/docs/v4-adopter-delivery.md +152 -0
- package/docs/v4-declarative-release-tail-migration.md +43 -0
- package/docs/v4-publication-rehearsal.md +130 -0
- package/package.json +24 -4
- package/packages/core/adopter-delivery-passport.js +295 -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-contract.js +31 -1
- 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/buildchain-publication-authority.js +2 -0
- package/packages/core/ci-lane-change-budget.js +247 -0
- package/packages/core/dev-delivery-native-proof.js +43 -27
- package/packages/core/dev-delivery-warrant-settlement.js +239 -3
- package/packages/core/dev-delivery-warrant-state.js +46 -10
- package/packages/core/dev-delivery-warrant.js +29 -7
- package/packages/core/github-governance-authority.js +5 -4
- package/packages/core/index.js +6 -0
- package/packages/core/legacy-kfd-adopter-driver.js +167 -0
- package/packages/core/paper-scaffold-content.js +401 -0
- package/packages/core/paper.js +12 -378
- package/packages/core/publication-control-plane-audit.js +135 -111
- package/packages/core/publication-rehearsal-projection.js +104 -0
- package/packages/core/publication-rehearsal-runtime.js +190 -0
- package/packages/core/published-delivery-authority.js +266 -0
- package/packages/core/release-candidate-recovery.js +71 -15
- package/packages/core/release-candidate.js +2 -2
- package/packages/core/release-passport.js +95 -170
- package/packages/core/v4-adopter-delivery-parity.js +3 -3
- package/packages/core/v4-adopter-delivery.js +359 -0
- package/packages/core/v4-cross-platform-adopter-qualification.js +343 -0
- package/packages/core/v4-delivery-warrant-read-candidate.js +10 -3
- package/packages/core/v4-floating-consumer-evidence.js +18 -4
- package/packages/core/v4-floating-consumer-policy.js +139 -35
- package/packages/core/v4-floating-consumer-release-passport.js +154 -8
- package/packages/core/v4-publication-qualification.js +222 -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/packages/core/workflow-yaml-contract.js +24 -2
- package/scripts/artifact-signing-controller-core.mjs +1 -1
- package/scripts/audit-publication-control-plane.mjs +17 -17
- package/scripts/buildchain-cli-help.mjs +13 -0
- package/scripts/check-ci-lane-change-budget.mjs +100 -0
- package/scripts/check-internal-architecture.mjs +23 -3
- package/scripts/check-inventory.mjs +24 -6
- package/scripts/check-maintainability.mjs +145 -4
- package/scripts/check-project-cut-merge-queue-admission.mjs +87 -0
- package/scripts/check-v3-v4-capability-inventory.mjs +574 -0
- package/scripts/check-v4-floating-consumer-policy-contract.mjs +30 -4
- package/scripts/check-v4-runtime-semantic-closure.mjs +266 -0
- package/scripts/dev-delivery-source-proof-replay.mjs +153 -0
- package/scripts/dev-delivery-source-proof-reuse.mjs +13 -97
- package/scripts/dev-delivery-warrant-options.mjs +27 -11
- package/scripts/dev-delivery-warrant-store.mjs +10 -6
- package/scripts/dev-delivery-warrant.mjs +50 -6
- package/scripts/dev-pr-auto-merge.mjs +25 -11
- package/scripts/dev-pr-delivery-warrant.mjs +45 -0
- package/scripts/dev-pr-prequeue-guard.mjs +0 -18
- package/scripts/dev-qualification-patrol.mjs +9 -9
- package/scripts/dispatch-artifact-signing-authority.mjs +1 -1
- package/scripts/generate-agent-change-map.mjs +118 -0
- package/scripts/generate-channel-promotion-workflow.mjs +2 -2
- package/scripts/generate-release-candidate-passport.mjs +177 -0
- package/scripts/generate-site-bundle.mjs +36 -0
- package/scripts/maintainability-domain-metrics.mjs +237 -0
- package/scripts/maintainability-governance.mjs +473 -0
- package/scripts/maintainability-metrics.mjs +28 -6
- package/scripts/project-cut-merge-queue-admission.mjs +394 -0
- package/scripts/promotion-channel-router.mjs +4 -4
- package/scripts/promotion-routing-evidence.mjs +35 -6
- package/scripts/release-candidate-anchor-provenance.mjs +99 -0
- package/scripts/release-candidate-resolver.mjs +44 -0
- package/scripts/release-line-policy.mjs +25 -15
- package/scripts/release-tail.mjs +68 -3
- package/scripts/resume-from-candidate-run.mjs +595 -65
- package/scripts/run-lifecycle-core.mjs +341 -376
- package/scripts/site-capability-metadata.mjs +21 -0
- package/scripts/stable-candidate-qualification.mjs +9 -10
- package/scripts/v3-v4-capability-catalog.mjs +439 -0
- package/scripts/v4-consumer-policy.mjs +4 -0
- package/scripts/v4-cross-platform-adopter-qualification.mjs +228 -0
- package/scripts/v4-declarative-promotion-admission.mjs +42 -0
- package/scripts/v4-publication-rehearsal-fixture.mjs +144 -0
|
@@ -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,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"contract": "kungfu-buildchain-v4-cross-platform-adopter-qualification",
|
|
4
|
+
"inventoryAuthority": "architecture/v3-v4-live-capability-inventory.json",
|
|
5
|
+
"implementation": "packages/core/v4-cross-platform-adopter-qualification.js",
|
|
6
|
+
"runner": "scripts/v4-cross-platform-adopter-qualification.mjs",
|
|
7
|
+
"publicWorkflow": ".github/workflows/v4-adopter-delivery.yml",
|
|
8
|
+
"sourceBinding": {
|
|
9
|
+
"runtime": "job.workflow_sha",
|
|
10
|
+
"consumer": "exact checked-out consumer commit",
|
|
11
|
+
"sameRuntimeAcrossMatrix": true,
|
|
12
|
+
"sameConsumerAcrossMatrix": true,
|
|
13
|
+
"sameInventoryAcrossMatrix": true
|
|
14
|
+
},
|
|
15
|
+
"candidateDispatch": {
|
|
16
|
+
"externalRepositoryRequiresExactCommit": true,
|
|
17
|
+
"externalRepositoryRequiresPublicFloatingCaller": true,
|
|
18
|
+
"persistentSelectorsRemain": ["v4", "v4-alpha"],
|
|
19
|
+
"providerEffects": false
|
|
20
|
+
},
|
|
21
|
+
"platforms": ["linux-x64", "macos-arm64", "windows-x64"],
|
|
22
|
+
"requiredConsumers": ["buildchain", "agent-hub-demo"],
|
|
23
|
+
"protocolNeutralDriver": {
|
|
24
|
+
"id": "ledger-specification-driver",
|
|
25
|
+
"fixture": "fixtures/ledger-specification-driver",
|
|
26
|
+
"test": "tests/non-kfd-specification-driver-clean-room.test.mjs",
|
|
27
|
+
"platformCoverage": ["linux-x64", "macos-arm64", "windows-x64"],
|
|
28
|
+
"kfdDependencyAllowed": false
|
|
29
|
+
},
|
|
30
|
+
"capabilityMatrix": {
|
|
31
|
+
"rawRowsRequired": true,
|
|
32
|
+
"everyCategoryRequired": true,
|
|
33
|
+
"sourceOnlyApplicability": "exact-source-route",
|
|
34
|
+
"residualMaximum": 0,
|
|
35
|
+
"unknownMaximum": 0,
|
|
36
|
+
"unownedMaximum": 0
|
|
37
|
+
},
|
|
38
|
+
"executedScenarios": [
|
|
39
|
+
"public-run",
|
|
40
|
+
"tampered-readback-failure",
|
|
41
|
+
"public-run-retry",
|
|
42
|
+
"terminal-exact-verify",
|
|
43
|
+
"n-minus-one-bootstrap",
|
|
44
|
+
"protocol-neutral-clean-room"
|
|
45
|
+
],
|
|
46
|
+
"authority": {
|
|
47
|
+
"productionWrites": false,
|
|
48
|
+
"providerEffects": false,
|
|
49
|
+
"releaseEffects": false,
|
|
50
|
+
"stablePublication": false
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"now": "2026-08-07T00:02:00Z"
|
|
67
67
|
}
|
|
68
68
|
],
|
|
69
|
-
"expectedLegacyProjectionRoot": "sha256:
|
|
69
|
+
"expectedLegacyProjectionRoot": "sha256:d43159c2ea0d0ea97fb81eb9a2cf262411954d1ce81514c590587e858e95f275"
|
|
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:7798efdf136e97afbc65f5e41c8be918a7d00da566716c861c7b1dedb2092f97"
|
|
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:f1ec1dcd97eb65cc8258bdcf4e17f08311cc23a20acd05f9112a2cef7c685685"
|
|
187
187
|
},
|
|
188
188
|
{
|
|
189
189
|
"id": "queued-cancellation-idempotence",
|
|
@@ -36,6 +36,12 @@
|
|
|
36
36
|
},
|
|
37
37
|
"runtimeEscapeBoundary": {
|
|
38
38
|
"persistedSelectorOverride": false,
|
|
39
|
+
"protectedAlphaRecoveryBootstrap": {
|
|
40
|
+
"selector": "alpha/v4/v4.0",
|
|
41
|
+
"sourcePath": ".github/workflows/buildchain-ref-promotion-recovery.yml",
|
|
42
|
+
"workflow": ".github/workflows/.release-candidate-promote.yml",
|
|
43
|
+
"repository": "kungfu-systems/buildchain"
|
|
44
|
+
},
|
|
39
45
|
"trustedNonPersistentInput": true,
|
|
40
46
|
"requiresSeparateAuthority": true,
|
|
41
47
|
"requiresReadback": true,
|
|
@@ -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
|
+
}
|