@kungfu-tech/buildchain 4.0.1-alpha.4 → 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.
Files changed (136) hide show
  1. package/actions/release-tail/README.md +8 -0
  2. package/architecture/decisions/0002-next-development-transition.md +101 -0
  3. package/architecture/internal-capabilities.json +117 -8
  4. package/architecture/maintainability-policy.json +38 -20
  5. package/architecture/release-tail-contract-inventory.json +5 -2
  6. package/architecture/v3-core-mechanism-inventory.json +89 -0
  7. package/architecture/v4-adopter-delivery-parity.json +32 -5
  8. package/architecture/v4-capability-state-machine-manifest.json +73 -0
  9. package/architecture/v4-compatibility-facts-parity.json +77 -0
  10. package/architecture/v4-next-development-parity.json +192 -0
  11. package/architecture/v4-publication-rehearsal-parity.json +84 -0
  12. package/architecture/v4-release-train-parity.json +1 -0
  13. package/architecture/v4-tail-reseal-parity.json +150 -0
  14. package/bin/buildchain.mjs +23 -2
  15. package/bin/internal/adopter-delivery-cli.mjs +70 -0
  16. package/bin/internal/command-registry.mjs +3 -0
  17. package/bin/internal/compatibility-facts-cli.mjs +101 -0
  18. package/contracts/fixtures/next-development-transition-v1/anchored-manual-waiting.json +47 -0
  19. package/contracts/fixtures/next-development-transition-v1/semver-auto-planned.json +47 -0
  20. package/contracts/fixtures/next-development-transition-v1/version-model-cases.json +40 -0
  21. package/contracts/fixtures/v4-adopter-delivery-v1/archive-template.json +19 -0
  22. package/contracts/fixtures/v4-adopter-delivery-v1/bootstrap-positive.json +93 -0
  23. package/contracts/fixtures/v4-adopter-delivery-v1/gate-positive.json +29 -0
  24. package/contracts/fixtures/v4-adopter-delivery-v1/gate-unknown-selector.json +26 -0
  25. package/contracts/fixtures/v4-adopter-delivery-v1/offline-vectors.json +50 -0
  26. package/contracts/fixtures/v4-compatibility-facts-v1/shared.json +1129 -0
  27. package/contracts/fixtures/v4-floating-consumer-policy-v1/cases.json +7 -1
  28. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/artifacts/product.bin +1 -0
  29. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/config/buildchain.toml +5 -0
  30. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/documents/release-activation.json +1 -0
  31. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/documents/signed-channel.json +1 -0
  32. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/evidence/qualification.json +1 -0
  33. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/manifests/candidate.json +5 -0
  34. package/contracts/fixtures/v4-publication-rehearsal-v1/candidate/manifests/release-passport.json +1 -0
  35. package/contracts/fixtures/v4-publication-rehearsal-v1/capsule.json +707 -0
  36. package/contracts/fixtures/v4-publication-rehearsal-v1/offline-vectors.json +27 -0
  37. package/contracts/fixtures/v4-tail-reseal-v1/valid.json +229 -0
  38. package/contracts/next-development-request-v1.schema.json +66 -0
  39. package/contracts/next-development-transition-v1.schema.json +292 -0
  40. package/contracts/v4-adopter-delivery-v1.schema.json +81 -0
  41. package/contracts/v4-compatibility-facts-v1.schema.json +230 -0
  42. package/contracts/v4-publication-rehearsal-capsule-v1.schema.json +233 -0
  43. package/contracts/v4-tail-reseal-v1.schema.json +276 -0
  44. package/dist/site/agent-index.json +4 -0
  45. package/dist/site/artifact-schemas.json +8 -0
  46. package/dist/site/buildchain-contract.json +1393 -28
  47. package/dist/site/buildchain-site.json +462 -27
  48. package/dist/site/capability-registry.json +17 -14
  49. package/dist/site/cli-registry.json +159 -1
  50. package/dist/site/kfd-claims.json +429 -15
  51. package/dist/site/kfd-upstream-aggregate.json +1 -1
  52. package/dist/site/manual-registry.json +52 -6
  53. package/dist/site/node-api-registry.json +13972 -9697
  54. package/dist/site/page-registry.json +428 -17
  55. package/dist/site/public-surface-audit.json +429 -11
  56. package/dist/site/publication-authority-registry.json +22 -4
  57. package/dist/site/publication-registry.json +4 -4
  58. package/dist/site/release-provenance.json +21 -0
  59. package/dist/site/schemas/release-tail-capabilities-v1.schema.json +199 -0
  60. package/dist/site/schemas/v4-adopter-delivery-v1.schema.json +81 -0
  61. package/dist/site/schemas/v4-compatibility-facts-v1.schema.json +230 -0
  62. package/dist/site/schemas/v4-publication-rehearsal-capsule-v1.schema.json +233 -0
  63. package/dist/site/site-manifest.json +34 -10
  64. package/dist/site/workflow-registry.json +121 -8
  65. package/docs/MAP.md +7 -2
  66. package/docs/cli-reference.md +193 -0
  67. package/docs/cli.md +8 -0
  68. package/docs/dev-alpha-candidate-patrol.md +8 -0
  69. package/docs/next-development-transition.md +118 -0
  70. package/docs/node-api-reference.md +448 -168
  71. package/docs/release-tail-provider-plane.md +30 -0
  72. package/docs/v4-adopter-delivery.md +133 -0
  73. package/docs/v4-compatibility-facts.md +91 -0
  74. package/docs/v4-publication-rehearsal.md +130 -0
  75. package/docs/v4-tail-reseal.md +73 -0
  76. package/docs/versioning.md +4 -3
  77. package/package.json +29 -6
  78. package/packages/core/adopter-delivery-passport.js +259 -0
  79. package/packages/core/adopter-delivery-vectors.js +158 -0
  80. package/packages/core/adopter-delivery-vectors.json +77 -0
  81. package/packages/core/buildchain-agent-manuals.js +3 -0
  82. package/packages/core/buildchain-compatibility-authority.js +336 -0
  83. package/packages/core/buildchain-compatibility-fact.js +394 -0
  84. package/packages/core/buildchain-compatibility-facts.json +217 -0
  85. package/packages/core/buildchain-compatibility-proof.js +566 -0
  86. package/packages/core/buildchain-config.js +84 -0
  87. package/packages/core/buildchain-contract.js +93 -141
  88. package/packages/core/buildchain-delivery-bootstrap.js +240 -0
  89. package/packages/core/buildchain-delivery-infrastructure.js +164 -0
  90. package/packages/core/buildchain-delivery-self-dogfood.js +395 -0
  91. package/packages/core/channel-candidate.js +8 -0
  92. package/packages/core/channel-promotion-baseline.js +55 -0
  93. package/packages/core/dev-alpha-candidate-selection.js +10 -2
  94. package/packages/core/dev-delivery-execution-transfer.js +21 -1
  95. package/packages/core/dev-delivery-process-boundary.js +19 -6
  96. package/packages/core/dev-delivery-provider-heartbeat.js +18 -6
  97. package/packages/core/kungfu-temporal-fact.js +557 -0
  98. package/packages/core/legacy-kfd-adopter-driver.js +167 -0
  99. package/packages/core/next-development-candidate-reservation.js +186 -0
  100. package/packages/core/next-development-controller.js +728 -0
  101. package/packages/core/next-development-projection.js +287 -0
  102. package/packages/core/next-development-transition.js +738 -0
  103. package/packages/core/paper-agent-entry.js +11 -5
  104. package/packages/core/paper.js +16 -5
  105. package/packages/core/published-delivery-authority.js +266 -0
  106. package/packages/core/release-passport.js +26 -8
  107. package/packages/core/v4-adopter-delivery-parity.js +3 -3
  108. package/packages/core/v4-adopter-delivery.js +359 -0
  109. package/packages/core/v4-canonical-contracts.js +5 -0
  110. package/packages/core/v4-floating-consumer-policy.js +29 -9
  111. package/packages/core/v4-publication-rehearsal-capsule.js +468 -0
  112. package/packages/core/v4-publication-rehearsal-provider-bindings.js +212 -0
  113. package/packages/core/v4-publication-rehearsal.js +481 -0
  114. package/packages/core/v4-tail-reseal-contract.js +26 -0
  115. package/packages/core/v4-tail-reseal-github.js +178 -0
  116. package/packages/core/v4-tail-reseal-receipt.js +225 -0
  117. package/packages/core/v4-tail-reseal.js +594 -0
  118. package/scripts/buildchain-cli-help.mjs +30 -0
  119. package/scripts/check-inventory.mjs +14 -3
  120. package/scripts/dev-alpha-candidate-patrol.mjs +22 -1
  121. package/scripts/dev-delivery-source-proof-replay.mjs +153 -0
  122. package/scripts/dev-delivery-source-proof-reuse.mjs +13 -97
  123. package/scripts/generate-next-development-guidance.mjs +49 -0
  124. package/scripts/generate-release-candidate-passport.mjs +152 -0
  125. package/scripts/generate-site-bundle.mjs +46 -3
  126. package/scripts/init-repo.mjs +22 -4
  127. package/scripts/next-development-self-dogfood-harness.mjs +460 -0
  128. package/scripts/next-development-self-dogfood.mjs +597 -0
  129. package/scripts/next-development-transition.mjs +47 -0
  130. package/scripts/release-tail.mjs +51 -3
  131. package/scripts/resume-from-candidate-run.mjs +545 -15
  132. package/scripts/site-capability-metadata.mjs +28 -0
  133. package/scripts/v4-consumer-policy.mjs +1 -5
  134. package/scripts/v4-publication-rehearsal-fixture.mjs +144 -0
  135. package/scripts/v4-tail-reseal-macos-rehearsal.mjs +134 -0
  136. package/scripts/v4-tail-reseal.mjs +416 -0
@@ -11,6 +11,7 @@ import { runLifecycle } from "../scripts/run-lifecycle-core.mjs";
11
11
  import { runReleasePropagationCli } from "../scripts/release-propagation.mjs";
12
12
  import { runReleaseGovernanceCli } from "../scripts/reconcile-release-governance.mjs";
13
13
  import { runReleaseTailCli } from "../scripts/release-tail.mjs";
14
+ import { runV4TailResealCli } from "../scripts/v4-tail-reseal.mjs";
14
15
  import { runPublicationArtifactCli } from "../scripts/publication-artifact.mjs";
15
16
  import { runPublicationPackageCli } from "../scripts/publication-package.mjs";
16
17
  import { runPublicationReproducibilityCli } from "../scripts/publication-reproducibility.mjs";
@@ -109,6 +110,8 @@ import {
109
110
  dispatchTrustReleaseCommand,
110
111
  } from "./internal/trust-release-cli.mjs";
111
112
  import { dispatchRegisteredCommand } from "./internal/command-registry.mjs";
113
+ import { runCompatibilityFactsCli } from "./internal/compatibility-facts-cli.mjs";
114
+ import { runAdopterDeliveryCli } from "./internal/adopter-delivery-cli.mjs";
112
115
 
113
116
  const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
114
117
  const embeddedPackageVersion = process.env.BUILDCHAIN_EMBEDDED_PACKAGE_VERSION || "";
@@ -987,6 +990,9 @@ async function runKfdCli(args = []) {
987
990
  async function runBuildFactsCli(args = []) {
988
991
  const [subcommand = "", ...factArgs] = args;
989
992
  const cwd = path.resolve(readFlag(factArgs, "cwd", process.cwd()));
993
+ if (subcommand === "compatibility") {
994
+ return runCompatibilityFactsCli({ args: factArgs, cwd, packageRoot: root });
995
+ }
990
996
  if (subcommand === "module") {
991
997
  const fact = collectModuleBuildFacts({
992
998
  cwd,
@@ -1060,7 +1066,7 @@ async function runBuildFactsCli(args = []) {
1060
1066
  }
1061
1067
  return;
1062
1068
  }
1063
- throw new Error("usage: buildchain facts <module|aggregate|verify> ...");
1069
+ throw new Error("usage: buildchain facts <module|aggregate|verify|compatibility> ...");
1064
1070
  }
1065
1071
 
1066
1072
  function appendJsonLine(filePath, value) {
@@ -1670,7 +1676,15 @@ async function handleReleaseGovernanceCommand(args) {
1670
1676
  }
1671
1677
 
1672
1678
  async function handleReleaseTailCommand(args) {
1673
- runReleaseTailCli(args);
1679
+ await runReleaseTailCli(args);
1680
+ }
1681
+
1682
+ async function handleTailResealCommand(args) {
1683
+ await runV4TailResealCli(args);
1684
+ }
1685
+
1686
+ async function handleNextDevelopmentCommand(args) {
1687
+ runScript("next-development-transition.mjs", args);
1674
1688
  }
1675
1689
 
1676
1690
  async function handleGitHubGovernanceCommand(args) {
@@ -1737,6 +1751,10 @@ async function handleArchitectureCommand(args) {
1737
1751
  runScript("v4-architecture.mjs", args);
1738
1752
  }
1739
1753
 
1754
+ async function handleAdopterDeliveryCommand(args) {
1755
+ await runAdopterDeliveryCli(args);
1756
+ }
1757
+
1740
1758
  const BUILDCHAIN_COMMAND_HANDLERS = Object.freeze({
1741
1759
  "help": handleHelpCommand,
1742
1760
  "version": handleVersionCommand,
@@ -1769,12 +1787,15 @@ const BUILDCHAIN_COMMAND_HANDLERS = Object.freeze({
1769
1787
  "release-propagation": handleReleasePropagationCommand,
1770
1788
  "release-governance": handleReleaseGovernanceCommand,
1771
1789
  "release-tail": handleReleaseTailCommand,
1790
+ "tail-reseal": handleTailResealCommand,
1791
+ "next-development": handleNextDevelopmentCommand,
1772
1792
  "github-governance": handleGitHubGovernanceCommand,
1773
1793
  "badges": handleBadgesCommand,
1774
1794
  "homebrew": handleHomebrewCommand,
1775
1795
  "build-contract": handleBuildContractCommand,
1776
1796
  "publish-source": handlePublishSourceCommand,
1777
1797
  "architecture": handleArchitectureCommand,
1798
+ "adopter-delivery": handleAdopterDeliveryCommand,
1778
1799
  });
1779
1800
 
1780
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
+ }
@@ -33,12 +33,15 @@ const BUILDCHAIN_COMMAND_REGISTRY = Object.freeze([
33
33
  { id: "release-propagation", aliases: [] },
34
34
  { id: "release-governance", aliases: [] },
35
35
  { id: "release-tail", aliases: [] },
36
+ { id: "tail-reseal", aliases: [] },
37
+ { id: "next-development", aliases: [] },
36
38
  { id: "github-governance", aliases: [] },
37
39
  { id: "badges", aliases: [] },
38
40
  { id: "homebrew", aliases: [] },
39
41
  { id: "build-contract", aliases: [] },
40
42
  { id: "publish-source", aliases: [] },
41
43
  { id: "architecture", aliases: [] },
44
+ { id: "adopter-delivery", aliases: [] },
42
45
  ]);
43
46
 
44
47
  function buildCommandLookup(registry = BUILDCHAIN_COMMAND_REGISTRY) {
@@ -0,0 +1,101 @@
1
+ import path from "node:path";
2
+
3
+ import {
4
+ createBuildchainCompatibilityFactRegistry,
5
+ verifyBuildchainCompatibilityFactRegistry,
6
+ } from "../../packages/core/buildchain-compatibility-fact.js";
7
+ import {
8
+ createBuildchainCompatibilityPathQuery,
9
+ createBuildchainCompatibilityProofRegistry,
10
+ verifyBuildchainCompatibilityPath,
11
+ } from "../../packages/core/buildchain-compatibility-authority.js";
12
+ import { createBuildchainContractWorld } from "../../packages/core/buildchain-contract.js";
13
+ import {
14
+ printJson,
15
+ readBooleanFlag,
16
+ readFlag,
17
+ readJsonInput,
18
+ writeJsonFile,
19
+ } from "./cli-options.mjs";
20
+
21
+ export function runCompatibilityFactsCli({ args, cwd, packageRoot }) {
22
+ const [action = "project", ...factArgs] = args;
23
+ const registryInput = readFlag(factArgs, "registry", "");
24
+ const registry = registryInput
25
+ ? readJsonInput(registryInput, {
26
+ cwd,
27
+ label: "compatibility Fact registry",
28
+ })
29
+ : createBuildchainCompatibilityFactRegistry();
30
+ if (action === "project") {
31
+ const world = createBuildchainContractWorld({ root: packageRoot });
32
+ const projection = createBuildchainCompatibilityProofRegistry({
33
+ proofs: registry.legacyProofs,
34
+ surfaces: world.surfaces,
35
+ majorLine: world.majorLine,
36
+ });
37
+ const result = {
38
+ schema: "kungfu.buildchain.compatibility-fact-projection/v1",
39
+ authority: "Fact-registry-only",
40
+ grantsReleaseAuthority: false,
41
+ registry,
42
+ projections: projection.projections,
43
+ };
44
+ const output = readFlag(factArgs, "output", "");
45
+ if (output) writeJsonFile(path.resolve(cwd, output), result);
46
+ if (readBooleanFlag(factArgs, "json") || !output) printJson(result);
47
+ else
48
+ process.stdout.write(
49
+ `buildchain facts compatibility project: wrote ${output}\n`,
50
+ );
51
+ return;
52
+ }
53
+ if (action === "verify") {
54
+ const result = verifyBuildchainCompatibilityFactRegistry(registry);
55
+ printJson(result);
56
+ if (!result.ok) process.exitCode = 1;
57
+ return;
58
+ }
59
+ if (action === "query") {
60
+ const queryInput = readFlag(factArgs, "query", "");
61
+ if (!queryInput) {
62
+ throw new Error(
63
+ "usage: buildchain facts compatibility query --query <json-or-path> [--registry <json-or-path>]",
64
+ );
65
+ }
66
+ const query = readJsonInput(queryInput, {
67
+ cwd,
68
+ label: "compatibility Fact query",
69
+ });
70
+ const receipt = verifyBuildchainCompatibilityPath({ registry, query });
71
+ printJson(receipt);
72
+ if (receipt.record.status !== "accepted") process.exitCode = 1;
73
+ return;
74
+ }
75
+ if (action === "query-template") {
76
+ const factRoot = readFlag(factArgs, "fact-root", "");
77
+ const fact = registry.facts.find((entry) => entry.factRoot === factRoot);
78
+ if (!fact) {
79
+ throw new Error(
80
+ "buildchain facts compatibility query-template requires a current --fact-root",
81
+ );
82
+ }
83
+ printJson(
84
+ createBuildchainCompatibilityPathQuery({
85
+ registry,
86
+ queryId: readFlag(
87
+ factArgs,
88
+ "query-id",
89
+ `buildchain:compatibility:${fact.factId}`,
90
+ ),
91
+ sourceRoot: fact.sourceRoot,
92
+ targetRoot: fact.targetRoot,
93
+ relationPathRoots: [fact.factRoot],
94
+ }),
95
+ );
96
+ return;
97
+ }
98
+ throw new Error(
99
+ "usage: buildchain facts compatibility <project|verify|query|query-template> ...",
100
+ );
101
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-next-development-transition/v1",
4
+ "idempotencyKey": "sha256:cf805c1933cbc3e571c21af3ae030139bebafb08e2436b3c479c411b2cd2d22c",
5
+ "repository": "example/widget",
6
+ "completedAlpha": {
7
+ "outcome": "succeeded",
8
+ "version": "1.4.2-alpha.7",
9
+ "exactTag": "v1.4.2-alpha.7",
10
+ "releaseSha": "1111111111111111111111111111111111111111",
11
+ "treeSha": "2222222222222222222222222222222222222222",
12
+ "publicationRoot": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
13
+ "completedAt": "2026-08-11T01:00:00.000Z"
14
+ },
15
+ "completedAlphaRoot": "sha256:18e65c63aba0df789e0b0e68903733825d87e292b82bcb8fd3793ca45dca6266",
16
+ "alphaOutcome": "preserved-success",
17
+ "model": {
18
+ "strategy": "anchored",
19
+ "next": "manual"
20
+ },
21
+ "target": {
22
+ "version": null,
23
+ "anchor": null
24
+ },
25
+ "declaredPaths": ["package.json", "release.json"],
26
+ "adapter": {
27
+ "environmentVariable": "BUILDCHAIN_VERSION",
28
+ "sourcePaths": ["package.json"],
29
+ "derivedPaths": [],
30
+ "allowedChangePaths": ["package.json"],
31
+ "readOnlyPaths": ["release.json"],
32
+ "derivationStage": null,
33
+ "verificationStage": "lifecycle.verify"
34
+ },
35
+ "effectBounds": {
36
+ "allowedPaths": ["package.json"],
37
+ "refUpdates": [],
38
+ "forbiddenRefNamespaces": ["refs/heads/alpha/", "refs/tags/"]
39
+ },
40
+ "state": {
41
+ "status": "waiting-anchor",
42
+ "generation": 1,
43
+ "stateRoot": "sha256:4bbca86f960a7c1a10d76d01736422e3129f3f16d3e69e0800a0829201122dd4"
44
+ },
45
+ "materialization": null,
46
+ "transitions": []
47
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-next-development-transition/v1",
4
+ "idempotencyKey": "sha256:37ee52799584a989b059db060b7ce062feb56fbeff452033245046fdf3b21e78",
5
+ "repository": "example/widget",
6
+ "completedAlpha": {
7
+ "outcome": "succeeded",
8
+ "version": "1.4.2-alpha.7",
9
+ "exactTag": "v1.4.2-alpha.7",
10
+ "releaseSha": "1111111111111111111111111111111111111111",
11
+ "treeSha": "2222222222222222222222222222222222222222",
12
+ "publicationRoot": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
13
+ "completedAt": "2026-08-11T01:00:00.000Z"
14
+ },
15
+ "completedAlphaRoot": "sha256:18e65c63aba0df789e0b0e68903733825d87e292b82bcb8fd3793ca45dca6266",
16
+ "alphaOutcome": "preserved-success",
17
+ "model": {
18
+ "strategy": "semver",
19
+ "next": "auto"
20
+ },
21
+ "target": {
22
+ "version": "1.4.2-alpha.8",
23
+ "anchor": null
24
+ },
25
+ "declaredPaths": ["package.json"],
26
+ "adapter": {
27
+ "environmentVariable": "BUILDCHAIN_VERSION",
28
+ "sourcePaths": ["package.json"],
29
+ "derivedPaths": [],
30
+ "allowedChangePaths": ["package.json"],
31
+ "readOnlyPaths": [],
32
+ "derivationStage": null,
33
+ "verificationStage": "lifecycle.verify"
34
+ },
35
+ "effectBounds": {
36
+ "allowedPaths": ["package.json"],
37
+ "refUpdates": [],
38
+ "forbiddenRefNamespaces": ["refs/heads/alpha/", "refs/tags/"]
39
+ },
40
+ "state": {
41
+ "status": "planned",
42
+ "generation": 1,
43
+ "stateRoot": "sha256:4ef8ac1ff07cb14633994625e65a340acb3130ae56bbc88ee81504f09df3fa0f"
44
+ },
45
+ "materialization": null,
46
+ "transitions": []
47
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "contract": "kungfu-buildchain-next-development-version-model-fixtures/v1",
3
+ "positive": [
4
+ {
5
+ "name": "semver-auto",
6
+ "model": { "strategy": "semver", "next": "auto" }
7
+ },
8
+ {
9
+ "name": "anchored-manual",
10
+ "model": { "strategy": "anchored", "next": "manual" }
11
+ }
12
+ ],
13
+ "negative": [
14
+ {
15
+ "name": "semver-manual",
16
+ "model": { "strategy": "semver", "next": "manual" },
17
+ "error": "version model must be semver/auto or anchored/manual"
18
+ },
19
+ {
20
+ "name": "anchored-auto",
21
+ "model": { "strategy": "anchored", "next": "auto" },
22
+ "error": "version model must be semver/auto or anchored/manual"
23
+ },
24
+ {
25
+ "name": "semver-auto-with-anchor",
26
+ "model": { "strategy": "semver", "next": "auto" },
27
+ "anchor": {
28
+ "manifestPath": "release.json",
29
+ "manifestRoot": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
30
+ },
31
+ "error": "semver/auto must not declare an anchor"
32
+ },
33
+ {
34
+ "name": "anchored-manual-target-without-anchor",
35
+ "model": { "strategy": "anchored", "next": "manual" },
36
+ "targetVersion": "22.1.0",
37
+ "error": "anchored/manual targetVersion requires an anchor"
38
+ }
39
+ ]
40
+ }
@@ -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
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "input": {
3
+ "authority": {
4
+ "version": "3.0.9-alpha.16",
5
+ "sourceCommit": "6b96bdad8d9f8ccf9275f27d9370a226a9c78465",
6
+ "packageRoot": "sha256:3f425e2c77d11f0bee8eb9aa2448566bca7a9d14672a7e528ced3e505b3f14a3",
7
+ "gateRoot": "sha256:cdcb54ea103fe62a94e2f0755fab5b105802f32e569f47e77d7a1f3ff0636cfc",
8
+ "protocol": {
9
+ "id": "buildchain.adopter/json-assertion",
10
+ "version": "1.0.0",
11
+ "root": "sha256:bcc9fc43402c50e11c68dfec5bba63ecc5b10f2f304921dec2ba95b44c43ad13"
12
+ },
13
+ "profile": {
14
+ "id": "buildchain.adopter/delivery-infrastructure",
15
+ "version": "1.0.0",
16
+ "root": "sha256:94dc2f34f76be8f4627fb84b753ad855492555111b37cbf3edcee68e2f30e126"
17
+ },
18
+ "protected": true,
19
+ "published": true
20
+ },
21
+ "candidate": {
22
+ "version": "4.0.1-alpha.4",
23
+ "sourceCommit": "e0342713c7447960c13bd73377282b2e93f4853d",
24
+ "packageRoot": "sha256:ca25e78191aedb60e999a12100b52caa2b075e29a46f0baa91722f018adb6609",
25
+ "gateRoot": "sha256:cdcb54ea103fe62a94e2f0755fab5b105802f32e569f47e77d7a1f3ff0636cfc",
26
+ "protocol": {
27
+ "id": "buildchain.adopter/json-assertion",
28
+ "version": "1.0.0",
29
+ "root": "sha256:bcc9fc43402c50e11c68dfec5bba63ecc5b10f2f304921dec2ba95b44c43ad13"
30
+ },
31
+ "profile": {
32
+ "id": "buildchain.adopter/delivery-infrastructure",
33
+ "version": "1.0.0",
34
+ "root": "sha256:94dc2f34f76be8f4627fb84b753ad855492555111b37cbf3edcee68e2f30e126"
35
+ },
36
+ "authorityVersion": "3.0.9-alpha.16"
37
+ },
38
+ "gateResult": {
39
+ "schemaVersion": 1,
40
+ "contract": "kungfu-buildchain-adopter-delivery-result",
41
+ "status": "passed",
42
+ "qualifying": false,
43
+ "selfCertified": false,
44
+ "project": {
45
+ "instanceId": "kungfu-systems/buildchain@4.0.1-alpha.4",
46
+ "adopterId": "kungfu-systems/buildchain"
47
+ },
48
+ "artifact": {
49
+ "kind": "package",
50
+ "coordinate": "@kungfu-tech/buildchain@4.0.1-alpha.4",
51
+ "root": "sha256:ca25e78191aedb60e999a12100b52caa2b075e29a46f0baa91722f018adb6609"
52
+ },
53
+ "protocol": {
54
+ "id": "buildchain.adopter/json-assertion",
55
+ "version": "1.0.0",
56
+ "loaded": true,
57
+ "reportRoot": "sha256:01b903f7315a51d0d26d8759194a82d7d45d0d05ad10480dbb6ebf7398445d5c"
58
+ },
59
+ "artifactProfile": {
60
+ "id": "buildchain.artifact/package",
61
+ "version": "1.0.0",
62
+ "loaded": true,
63
+ "valid": true
64
+ },
65
+ "semanticReport": {
66
+ "valid": true,
67
+ "qualifying": false,
68
+ "selfCertified": false,
69
+ "releaseAuthorized": false
70
+ },
71
+ "nonClaims": [
72
+ "A passing delivery gate does not grant runtime permission, release authorization, or independent certification.",
73
+ "Protocol semantics remain owned by the selected protocol driver and its published authority."
74
+ ],
75
+ "issues": [],
76
+ "gateRoot": "sha256:8f74b438d1b581c02704d3ff677b2be4dcb5a6d0dc4d9435ef42a368ff834ceb"
77
+ },
78
+ "warrant": {
79
+ "outcome": "merged",
80
+ "sourceHead": "e0342713c7447960c13bd73377282b2e93f4853d",
81
+ "sourceProofRoot": "sha256:2aeeaacaa4f2d136155ac2c478a7939772a162c284a3bfd0458dfb00cce872aa",
82
+ "nativeProofRoot": "sha256:d66669fff994b931c9f89f3c313f37ad625f5aae29af0f6528054b8782b607a5",
83
+ "integrationProofRoot": "sha256:e5623b4de65781d68a73401857d000fba970bdad62a94b5cd7b2d39fee176613"
84
+ }
85
+ },
86
+ "lineage": {
87
+ "schemaVersion": 1,
88
+ "contract": "kungfu-buildchain-v4-adopter-delivery-bootstrap-lineage/v1",
89
+ "sourceAuthorityCommit": "6b96bdad8d9f8ccf9275f27d9370a226a9c78465",
90
+ "targetBaseCommit": "e0342713c7447960c13bd73377282b2e93f4853d",
91
+ "authorityArchiveRoot": "sha256:3f425e2c77d11f0bee8eb9aa2448566bca7a9d14672a7e528ced3e505b3f14a3"
92
+ }
93
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-v4-adopter-delivery/v1",
4
+ "driverSelector": "json-assertion",
5
+ "artifactProfileSelector": "git-commit",
6
+ "request": {
7
+ "schemaVersion": 1,
8
+ "contract": "kungfu-buildchain-adopter-delivery-request",
9
+ "protocol": {
10
+ "id": "buildchain.adopter/json-assertion",
11
+ "version": "1.0.0"
12
+ },
13
+ "artifactProfile": {
14
+ "id": "buildchain.artifact/git-commit",
15
+ "version": "1.0.0"
16
+ },
17
+ "project": {
18
+ "instanceId": "example.org/adopter@1.0.0",
19
+ "adopterId": "example.org/adopter"
20
+ },
21
+ "artifact": {
22
+ "kind": "git-commit",
23
+ "coordinate": "example.org/adopter@1111111111111111111111111111111111111111",
24
+ "root": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
25
+ },
26
+ "declaration": { "valid": true }
27
+ },
28
+ "context": {}
29
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-v4-adopter-delivery/v1",
4
+ "driverSelector": "private-buildchain-driver",
5
+ "artifactProfileSelector": "git-commit",
6
+ "request": {
7
+ "schemaVersion": 1,
8
+ "contract": "kungfu-buildchain-adopter-delivery-request",
9
+ "protocol": { "id": "private.buildchain/driver", "version": "1.0.0" },
10
+ "artifactProfile": {
11
+ "id": "buildchain.artifact/git-commit",
12
+ "version": "1.0.0"
13
+ },
14
+ "project": {
15
+ "instanceId": "example.org/adopter@1.0.0",
16
+ "adopterId": "example.org/adopter"
17
+ },
18
+ "artifact": {
19
+ "kind": "git-commit",
20
+ "coordinate": "example.org/adopter@1111111111111111111111111111111111111111",
21
+ "root": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
22
+ },
23
+ "declaration": { "valid": true }
24
+ },
25
+ "context": {}
26
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-v4-adopter-delivery-offline-vectors/v1",
4
+ "sourceAuthority": {
5
+ "branch": "dev/v3/v3.0",
6
+ "commit": "6b96bdad8d9f8ccf9275f27d9370a226a9c78465",
7
+ "vectorSuiteRoot": "sha256:c978707556406ffda4ef4192032332c01c2da1cebb6ad8c4f0edfc65d5cef0c7"
8
+ },
9
+ "initialTargetBase": "e5611377efc03178f8687d99968cfdfa3ce2825b",
10
+ "targetBase": "e0342713c7447960c13bd73377282b2e93f4853d",
11
+ "cases": [
12
+ {
13
+ "id": "positive-public-driver",
14
+ "class": "positive",
15
+ "expected": "passed"
16
+ },
17
+ {
18
+ "id": "positive-n-minus-one-bootstrap",
19
+ "class": "positive",
20
+ "expected": "passed"
21
+ },
22
+ {
23
+ "id": "positive-published-archive",
24
+ "class": "positive",
25
+ "expected": "loaded"
26
+ },
27
+ {
28
+ "id": "negative-selector",
29
+ "class": "negative",
30
+ "expected": "fail-closed"
31
+ },
32
+ { "id": "negative-driver", "class": "negative", "expected": "fail-closed" },
33
+ {
34
+ "id": "negative-archive-identity",
35
+ "class": "negative",
36
+ "expected": "fail-closed"
37
+ },
38
+ {
39
+ "id": "negative-bootstrap-lineage",
40
+ "class": "negative",
41
+ "expected": "fail-closed"
42
+ },
43
+ {
44
+ "id": "negative-protocol-version",
45
+ "class": "negative",
46
+ "expected": "fail-closed"
47
+ },
48
+ { "id": "tamper-readback", "class": "tamper", "expected": "fail-closed" }
49
+ ]
50
+ }