@kungfu-tech/buildchain 4.0.1-alpha.33 → 4.0.1-alpha.35

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.
@@ -4,7 +4,7 @@
4
4
  "product": {
5
5
  "name": "Buildchain",
6
6
  "package": "@kungfu-tech/buildchain",
7
- "version": "4.0.1-alpha.33",
7
+ "version": "4.0.1-alpha.35",
8
8
  "repository": "https://github.com/kungfu-systems/buildchain"
9
9
  },
10
10
  "majorLine": "v4",
@@ -1646,7 +1646,7 @@
1646
1646
  "resume-from-candidate-run is fail-closed and uses a fresh caller event instead of rerunning a frozen startup graph"
1647
1647
  ],
1648
1648
  "breakingDigest": "sha256:9db8dd07152855d03ff30f9c571438593c689d3e8139fa45431d000f548242f5",
1649
- "auditDigest": "sha256:50da0716d65b488b0fae6f3d8f486754eb3769ff79ffb91bc0c110e0b2d709c8",
1649
+ "auditDigest": "sha256:6d18173f1048d68196da4729a078f77b85781ecbae0e34aadc1f862a5d83897a",
1650
1650
  "compatibleBreakingDigests": [
1651
1651
  "sha256:aa30f22e3af0a89841310bdbdc900844dd95a66974db173fa140a71bbd7e82c0"
1652
1652
  ],
@@ -5082,7 +5082,7 @@
5082
5082
  "missing receipts are non-qualifying and must not be represented as a successful controller run"
5083
5083
  ],
5084
5084
  "breakingDigest": "sha256:015d8de793adbd4c539416be7d7512e18cc92097e629b0203fa06d2c183e98bd",
5085
- "auditDigest": "sha256:50da0716d65b488b0fae6f3d8f486754eb3769ff79ffb91bc0c110e0b2d709c8"
5085
+ "auditDigest": "sha256:6d18173f1048d68196da4729a078f77b85781ecbae0e34aadc1f862a5d83897a"
5086
5086
  },
5087
5087
  {
5088
5088
  "contractVersion": 1,
@@ -5308,5 +5308,5 @@
5308
5308
  "compatibilityFactCutRoot": "sha256:f61b975d4a96c921cc4bd37fb3ed9a0596b47004fe34dc7219979d697e3707f9",
5309
5309
  "compatibilityProofRegistryRoot": "sha256:b7194b811e4d3af2df4390bc4d1731e16a86215bd64ee18cb630dd5492f4fb63",
5310
5310
  "compatibilityDigest": "sha256:5de1c69386510b74b17eb70141b8bdd07063d62c504f91db5e84b67c6d4b64a2",
5311
- "contractDigest": "sha256:8ad0b8d13fb0e05f336598e0f660866a7c3c44bad26581317aa4e0c7b533fa0f"
5311
+ "contractDigest": "sha256:bac35cbb0ea2f0ff54f9efbf0a9c60d40cba615d3198e3af65d551a50bee0617"
5312
5312
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-site-bundle",
4
- "generatedAt": "2026-08-23T21:19:58.618Z",
5
- "publishedAt": "2026-08-23T21:19:58.618Z",
4
+ "generatedAt": "2026-08-24T01:19:23.921Z",
5
+ "publishedAt": "2026-08-24T01:19:23.921Z",
6
6
  "reproducible": true,
7
7
  "timestampPolicy": "ci-injected",
8
8
  "deterministicInputs": [
@@ -19,7 +19,7 @@
19
19
  "declared Buildchain surface manifest contract"
20
20
  ],
21
21
  "sourceDateEpoch": "0",
22
- "sourceRevision": "d5d1fee8815f9e720c55f510e1acdadeedd5255c",
22
+ "sourceRevision": "19f2fb7f6f72710295cb89a7ed7b19f27adb6ca8",
23
23
  "timestampPolicyDetails": {
24
24
  "contract": "kungfu-buildchain-surface-timestamp-policy",
25
25
  "timestampFields": [
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "package": {
39
39
  "name": "@kungfu-tech/buildchain",
40
- "version": "4.0.1-alpha.33",
40
+ "version": "4.0.1-alpha.35",
41
41
  "versionSource": "package.json#version"
42
42
  },
43
43
  "source": {
@@ -21,7 +21,7 @@
21
21
  "contract": "kungfu-buildchain-public-surface-reverse-audit",
22
22
  "path": "dist/site/public-surface-audit.json",
23
23
  "status": "passed",
24
- "sha256": "68f2e2e6cd163c1f62a3e5a29eed4c63653273f000b3b6740e34afcc2db65a72",
24
+ "sha256": "e4ebc61161a297767d5a6001e0adc3410f5adcc2a5dac0492322cf685bce33a0",
25
25
  "summary": {
26
26
  "cliCommandCount": 117,
27
27
  "workflowCount": 76,
@@ -246,7 +246,7 @@
246
246
  "contract": "kungfu-buildchain-public-surface-reverse-audit",
247
247
  "path": "dist/site/public-surface-audit.json",
248
248
  "status": "passed",
249
- "sha256": "68f2e2e6cd163c1f62a3e5a29eed4c63653273f000b3b6740e34afcc2db65a72",
249
+ "sha256": "e4ebc61161a297767d5a6001e0adc3410f5adcc2a5dac0492322cf685bce33a0",
250
250
  "summary": {
251
251
  "cliCommandCount": 117,
252
252
  "workflowCount": 76,
@@ -4,7 +4,7 @@
4
4
  "product": {
5
5
  "id": "kungfu-tech-buildchain",
6
6
  "name": "@kungfu-tech/buildchain",
7
- "version": "4.0.1-alpha.33",
7
+ "version": "4.0.1-alpha.35",
8
8
  "repository": "https://github.com/kungfu-systems/buildchain"
9
9
  },
10
10
  "source": {
@@ -8846,7 +8846,7 @@
8846
8846
  "workflowRegistryPath": "dist/site/workflow-registry.json",
8847
8847
  "pageRegistryPath": "dist/site/page-registry.json",
8848
8848
  "cliRegistryDigest": "ea47a31ce7ef3577f23e22055ab7be7715c3af494bcef63f76b426f2883086aa",
8849
- "workflowRegistryDigest": "9234f299162c84e43807f0d6dd7a9eb547b4753c45eea217c416575f215d0e75",
8849
+ "workflowRegistryDigest": "2a28dcd5a1acaa78e3c88c935823a9d14b6f99fa668a7c45808465bb9b19dde2",
8850
8850
  "pageRegistryDigest": "619910e5c57fb8e94ea1525de1fb7699c412a8dafd7269bc9354cc6c4fe83f48"
8851
8851
  },
8852
8852
  "comparison": {
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-publication-release-registry",
4
- "generatedAt": "2026-08-23T21:19:58.618Z",
5
- "publishedAt": "2026-08-23T21:19:58.618Z",
4
+ "generatedAt": "2026-08-24T01:19:23.921Z",
5
+ "publishedAt": "2026-08-24T01:19:23.921Z",
6
6
  "reproducible": true,
7
7
  "timestampPolicy": "ci-injected",
8
8
  "deterministicInputs": [
@@ -19,7 +19,7 @@
19
19
  "declared Buildchain surface manifest contract"
20
20
  ],
21
21
  "sourceDateEpoch": "0",
22
- "sourceRevision": "d5d1fee8815f9e720c55f510e1acdadeedd5255c",
22
+ "sourceRevision": "19f2fb7f6f72710295cb89a7ed7b19f27adb6ca8",
23
23
  "timestampPolicyDetails": {
24
24
  "contract": "kungfu-buildchain-surface-timestamp-policy",
25
25
  "timestampFields": [
@@ -32,7 +32,7 @@
32
32
  },
33
33
  "package": {
34
34
  "name": "@kungfu-tech/buildchain",
35
- "version": "4.0.1-alpha.33",
35
+ "version": "4.0.1-alpha.35",
36
36
  "versionSource": "package.json#version"
37
37
  },
38
38
  "sourceKind": "package-site-bundle",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "contract": "kungfu-buildchain-site-manifest",
4
- "generatedAt": "2026-08-23T21:19:58.618Z",
5
- "publishedAt": "2026-08-23T21:19:58.618Z",
4
+ "generatedAt": "2026-08-24T01:19:23.921Z",
5
+ "publishedAt": "2026-08-24T01:19:23.921Z",
6
6
  "reproducible": true,
7
7
  "timestampPolicy": "ci-injected",
8
8
  "deterministicInputs": [
@@ -19,7 +19,7 @@
19
19
  "declared Buildchain surface manifest contract"
20
20
  ],
21
21
  "sourceDateEpoch": "0",
22
- "sourceRevision": "d5d1fee8815f9e720c55f510e1acdadeedd5255c",
22
+ "sourceRevision": "19f2fb7f6f72710295cb89a7ed7b19f27adb6ca8",
23
23
  "timestampPolicyDetails": {
24
24
  "contract": "kungfu-buildchain-surface-timestamp-policy",
25
25
  "timestampFields": [
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "package": {
39
39
  "name": "@kungfu-tech/buildchain",
40
- "version": "4.0.1-alpha.33",
40
+ "version": "4.0.1-alpha.35",
41
41
  "versionSource": "package.json#version"
42
42
  },
43
43
  "entrypoint": "buildchain-site.json",
@@ -2027,7 +2027,7 @@
2027
2027
  "status": "preview",
2028
2028
  "owner": "buildchain-workflows",
2029
2029
  "maturity": "preview",
2030
- "introducedVersion": "4.0.1-alpha.33",
2030
+ "introducedVersion": "4.0.1-alpha.35",
2031
2031
  "compatibilityPromise": "preserved-through-the-v3-major-line",
2032
2032
  "deprecationReplacement": "",
2033
2033
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -2048,7 +2048,7 @@
2048
2048
  "status": "preview",
2049
2049
  "owner": "buildchain-workflows",
2050
2050
  "maturity": "preview",
2051
- "introducedVersion": "4.0.1-alpha.33",
2051
+ "introducedVersion": "4.0.1-alpha.35",
2052
2052
  "compatibilityPromise": "preserved-through-the-v3-major-line",
2053
2053
  "deprecationReplacement": "",
2054
2054
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -2069,7 +2069,7 @@
2069
2069
  "status": "preview",
2070
2070
  "owner": "buildchain-workflows",
2071
2071
  "maturity": "preview",
2072
- "introducedVersion": "4.0.1-alpha.33",
2072
+ "introducedVersion": "4.0.1-alpha.35",
2073
2073
  "compatibilityPromise": "preserved-through-the-v3-major-line",
2074
2074
  "deprecationReplacement": "",
2075
2075
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
@@ -2119,7 +2119,7 @@
2119
2119
  "status": "preview",
2120
2120
  "owner": "buildchain-workflows",
2121
2121
  "maturity": "preview",
2122
- "introducedVersion": "4.0.1-alpha.33",
2122
+ "introducedVersion": "4.0.1-alpha.35",
2123
2123
  "compatibilityPromise": "preserved-through-the-v3-major-line",
2124
2124
  "deprecationReplacement": "",
2125
2125
  "sunsetCondition": "explicit-breaking-change-review-in-a-future-major-line",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kungfu-tech/buildchain",
3
- "version": "4.0.1-alpha.33",
3
+ "version": "4.0.1-alpha.35",
4
4
  "private": false,
5
5
  "description": "Buildchain Release Passport, release governance, CLI toolkit, and site facts.",
6
6
  "repository": "https://github.com/kungfu-systems/buildchain",
@@ -41,10 +41,7 @@ import {
41
41
  verifyV4RuntimeAuthorizationReceipt,
42
42
  } from "../packages/core/v4-runtime-ref-resume-authority.js";
43
43
 
44
- function env(name, fallback = "") {
45
- return process.env[name] || fallback;
46
- }
47
-
44
+ function env(name, fallback = "") { return process.env[name] || fallback; }
48
45
  function requiredEnv(name) {
49
46
  const value = env(name).trim();
50
47
  if (!value) throw new Error(`${name} is required for candidate recovery`);
@@ -57,9 +54,7 @@ function splitRepository(repository) {
57
54
  return { owner: match[1], repo: match[2], fullName: `${match[1]}/${match[2]}` };
58
55
  }
59
56
 
60
- function splitPatterns(value = "") {
61
- return String(value || "").split(/\r?\n|,/).map((entry) => entry.trim()).filter(Boolean);
62
- }
57
+ function splitPatterns(value = "") { return String(value || "").split(/\r?\n|,/).map((entry) => entry.trim()).filter(Boolean); }
63
58
 
64
59
  function patternMatcher(pattern) {
65
60
  const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&").replaceAll("*", ".*");
@@ -700,14 +695,26 @@ export function createRecoveredPublicationCandidate({
700
695
  };
701
696
  return { ...payload, candidateDigest: publicationArtifactCandidateDigest(payload) };
702
697
  }
703
-
704
- export function createRecoveredPublication({ downloads, bundleRoot, repository, passport, candidateRuntimeSha, publishArtifactKind, publishPackageMain, releasePatterns, platformManifests }) {
705
- const allFiles = downloads.flatMap((download) => download.files.map((file) => ({
706
- path: path.relative(bundleRoot, file.absolutePath).split(path.sep).join("/"),
707
- size: file.size,
708
- sha256: file.sha256.replace(/^sha256:/, ""),
709
- absolutePath: file.absolutePath,
710
- }))).sort((left, right) => left.path.localeCompare(right.path));
698
+ export function resolveRecoveredPublicationVersion({ artifactVersion, channel, rematerializeOnResume = false } = {}) {
699
+ const version = String(artifactVersion || "").trim(), match = version.match(/^(\d+\.\d+\.\d+)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/u);
700
+ if (!match) throw new Error(`recovered npm artifact has invalid publication version: ${version || "<empty>"}`);
701
+ return channel === "release" && rematerializeOnResume ? match[1] : version;
702
+ }
703
+ export function resolveRecoveredCandidateVersion({ artifactVersion, publicationVersion, channel, rematerializeOnResume = false, targetRef = "", candidateRef = "" } = {}) {
704
+ const version = String(artifactVersion || "").trim(), target = String(targetRef || "").replace(/^refs\/heads\//u, ""), candidate = String(candidateRef || "").replace(/^refs\/heads\//u, "");
705
+ if (channel !== "release" || !rematerializeOnResume) return version;
706
+ const prefix = `publish-gate/${target}/`;
707
+ if (!target || !candidate.startsWith(prefix)) throw new Error(`stable recovery candidate ref must descend from ${prefix || "publish-gate/<target>/"}`);
708
+ const candidateVersion = candidate.slice(prefix.length);
709
+ if (!/^\d+\.\d+\.\d+-alpha\.\d+$/u.test(candidateVersion)) throw new Error(`stable recovery candidate ref must bind an exact alpha version, got ${candidateVersion || "<empty>"}`);
710
+ if (candidateVersion.replace(/-alpha\.\d+$/u, "") !== publicationVersion) throw new Error(`stable recovery candidate ${candidateVersion} does not match publication ${publicationVersion || "<empty>"}`);
711
+ if (![candidateVersion, publicationVersion].includes(version)) throw new Error(`recovered npm artifact version ${version || "<empty>"} is not bound to candidate ${candidateVersion} or publication ${publicationVersion}`);
712
+ return candidateVersion;
713
+ }
714
+ export function createRecoveredPublication({ downloads, bundleRoot, repository, passport, candidateRuntimeSha, publishArtifactKind, publishPackageMain, releasePatterns, platformManifests, channel, targetRef = "", candidateRef = "", rematerializeOnResume = false }) {
715
+ const allFiles = downloads.flatMap((download) => download.files.map((file) => ({ path: path.relative(bundleRoot, file.absolutePath).split(path.sep).join("/"),
716
+ size: file.size, sha256: file.sha256.replace(/^sha256:/, ""), absolutePath: file.absolutePath })))
717
+ .sort((left, right) => left.path.localeCompare(right.path));
711
718
  const kind = String(publishArtifactKind || "npm");
712
719
  const releaseMatchers = splitPatterns(releasePatterns).map(patternMatcher);
713
720
  const releaseAssets = allFiles.filter((file) => releaseMatchers.some((matcher) => matcher.test(path.basename(file.path))));
@@ -715,12 +722,8 @@ export function createRecoveredPublication({ downloads, bundleRoot, repository,
715
722
  createRecoveredPublicationCandidate({ allFiles, repository, passport, candidateRuntimeSha });
716
723
  const version = String(passport.target?.version || "").trim();
717
724
  if (!version) throw new Error("candidate recovery requires a passport publication version");
718
- return {
719
- manifest: undefined,
720
- npmArtifacts: [],
721
- allFiles,
722
- releaseAssets,
723
- version,
725
+ return { manifest: undefined, npmArtifacts: [], allFiles, releaseAssets,
726
+ version, candidateVersion: version,
724
727
  publishRequiredArtifacts: generatePublishRequiredArtifacts({ manifests: platformManifests, version, kind }),
725
728
  };
726
729
  }
@@ -732,12 +735,9 @@ export function createRecoveredPublication({ downloads, bundleRoot, repository,
732
735
  const npmReleaseAssets = allFiles.filter((file) => releaseMatchers.length
733
736
  ? releaseMatchers.some((matcher) => matcher.test(path.basename(file.path)))
734
737
  : file.path.toLowerCase().endsWith(".tgz"));
735
- const candidate = createRecoveredPublicationCandidate({
736
- allFiles,
737
- repository,
738
- passport,
739
- candidateRuntimeSha,
740
- });
738
+ const publicationVersion = resolveRecoveredPublicationVersion({ artifactVersion: main.metadata.ref, channel, rematerializeOnResume });
739
+ const candidateVersion = resolveRecoveredCandidateVersion({ artifactVersion: main.metadata.ref, publicationVersion, channel, rematerializeOnResume, targetRef, candidateRef });
740
+ const candidate = createRecoveredPublicationCandidate({ allFiles, repository, passport, candidateRuntimeSha });
741
741
  const manifest = createPublicationSealedBundle({
742
742
  candidate,
743
743
  packageName: main.metadata.name,
@@ -751,12 +751,12 @@ export function createRecoveredPublication({ downloads, bundleRoot, repository,
751
751
  npmArtifacts,
752
752
  allFiles,
753
753
  releaseAssets: npmReleaseAssets,
754
- version: manifest.npm.version,
754
+ version: publicationVersion, candidateVersion,
755
755
  publishRequiredArtifacts: generatePublishRequiredArtifacts({
756
756
  kind: "npm",
757
757
  tarballPaths: npmArtifacts.map((entry) => entry.file.absolutePath),
758
758
  mainPackage: publishPackageMain,
759
- }),
759
+ }).map((artifact) => rematerializeOnResume ? { ...artifact, ref: publicationVersion } : artifact),
760
760
  };
761
761
  }
762
762
 
@@ -832,9 +832,9 @@ export async function resolveRecoveryTransaction({
832
832
  })
833
833
  : undefined;
834
834
  if (!transaction) {
835
- transaction = await readExistingTransactionById({
836
- repoInfo, apiUrl, token, fetchImpl, transactionId,
837
- });
835
+ transaction = transactionId
836
+ ? await readExistingTransactionById({ repoInfo, apiUrl, token, fetchImpl, transactionId })
837
+ : undefined;
838
838
  }
839
839
  return { version: transaction?.version || publicationVersion, transaction };
840
840
  }
@@ -865,7 +865,7 @@ export async function resumeFromCandidateRun({
865
865
  channel, targetRef, targetSha,
866
866
  expectedSourceTree = "", expectedCandidateRoot = "",
867
867
  candidateRuntimeSha, runtimeSha,
868
- transactionId = "", artifactName = "", artifactPatterns = "", releasePatterns = "",
868
+ transactionId = "", artifactName = "", artifactPatterns = "", releasePatterns = "", rematerializeOnResume = false,
869
869
  requiredArtifactCount = 0,
870
870
  publishArtifactKind = "npm", publishPackageMain = "",
871
871
  outputDir = ".buildchain/release-candidate-recovery",
@@ -908,7 +908,7 @@ export async function resumeFromCandidateRun({
908
908
  publishArtifactKind,
909
909
  publishPackageMain,
910
910
  releasePatterns,
911
- platformManifests: platformManifestEvidence.manifests,
911
+ platformManifests: platformManifestEvidence.manifests, channel, targetRef, candidateRef: pullRequest.head?.ref || "", rematerializeOnResume,
912
912
  });
913
913
  const stageCapsules = resolveRecoveredStageCapsules({
914
914
  candidateRuntimeSha,
@@ -918,7 +918,7 @@ export async function resumeFromCandidateRun({
918
918
  downloads,
919
919
  });
920
920
  const {
921
- version: candidateVersion,
921
+ version: publicationVersion,
922
922
  transaction: existingTransaction,
923
923
  } = await resolveRecoveryTransaction({
924
924
  repoInfo,
@@ -976,7 +976,7 @@ export async function resumeFromCandidateRun({
976
976
  platformManifestEvidence: platformManifestEvidence.evidence,
977
977
  productPayloadManifests,
978
978
  artifacts: downloads.map((download) => download.record),
979
- publicationVersion: candidateVersion,
979
+ publicationVersion,
980
980
  currentToolingSha: runtimeSha,
981
981
  recoveryRunId,
982
982
  });
@@ -992,7 +992,7 @@ export async function resumeFromCandidateRun({
992
992
  repoInfo,
993
993
  targetRef,
994
994
  runtimeSha,
995
- version: candidateVersion,
995
+ version: publicationVersion,
996
996
  passport,
997
997
  sidecar: stageCapsuleSidecar,
998
998
  stageCapsules,
@@ -1007,7 +1007,7 @@ export async function resumeFromCandidateRun({
1007
1007
  repository: repoInfo.fullName,
1008
1008
  run: { id: runId, url: run.html_url || "", name: run.name },
1009
1009
  artifacts: { passport: selected.passport.name, summary: selected.summary.name, payloads: chosen.map((artifact) => artifact.name), sourceSha: selected.sourceSha },
1010
- version: candidateVersion,
1010
+ version: publicationVersion, candidateVersion: publication.candidateVersion,
1011
1011
  candidateRoot: recovery.receipt.recovered.candidateRoot,
1012
1012
  artifactRoot: recovery.receipt.recovered.artifactRoot,
1013
1013
  receipt: recovery.receipt,
@@ -1048,7 +1048,7 @@ export async function resumeFromCandidateRunCli() {
1048
1048
  expectedCandidateRoot: env("BUILDCHAIN_RESUME_EXPECTED_CANDIDATE_ROOT"),
1049
1049
  candidateRuntimeSha: requiredEnv("BUILDCHAIN_RESUME_EXPECTED_CANDIDATE_RUNTIME_SHA"),
1050
1050
  runtimeSha: requiredEnv("BUILDCHAIN_RESUME_RUNTIME_SHA"),
1051
- transactionId: env("BUILDCHAIN_RESUME_TRANSACTION_ID"),
1051
+ transactionId: env("BUILDCHAIN_RESUME_TRANSACTION_ID"), rematerializeOnResume: env("BUILDCHAIN_PUBLISH_REMATERIALIZE_ON_RESUME") === "true",
1052
1052
  artifactName: env("BUILDCHAIN_ARTIFACT_NAME"),
1053
1053
  artifactPatterns: env("BUILDCHAIN_ARTIFACT_PATTERNS"),
1054
1054
  releasePatterns: env("BUILDCHAIN_GITHUB_RELEASE_PAYLOAD_PATTERNS"),
@@ -1062,7 +1062,7 @@ export async function resumeFromCandidateRunCli() {
1062
1062
  "release-candidate-action": result.action,
1063
1063
  "release-candidate-passport-path": result.paths.passport,
1064
1064
  "release-candidate-build-summary-path": result.paths.buildSummary,
1065
- "release-candidate-version": result.version,
1065
+ "release-candidate-version": result.candidateVersion, "release-candidate-publication-version": result.version,
1066
1066
  "release-candidate-source-sha": result.artifacts.sourceSha,
1067
1067
  "release-candidate-artifact": result.artifacts.passport,
1068
1068
  "release-candidate-build-summary-artifact": result.artifacts.summary,