diff --git a/scripts/release-candidate-checklist.mjs b/scripts/release-candidate-checklist.mjs index 172a687d6f21..1751502cea52 100644 --- a/scripts/release-candidate-checklist.mjs +++ b/scripts/release-candidate-checklist.mjs @@ -1215,7 +1215,7 @@ export function validateFullManifest(manifest, params) { `full validation must record runReleaseSoak=true for ${params.releaseProfile} release candidates`, ); } - if (manifest.controls?.performanceBlocking !== true) { + if (params.releaseProfile !== "beta" && manifest.controls?.performanceBlocking !== true) { throw new Error("full validation manifest must record blocking product performance evidence"); } } diff --git a/test/scripts/release-candidate-checklist.test.ts b/test/scripts/release-candidate-checklist.test.ts index 1e7786ddda3a..054ab6e8e105 100644 --- a/test/scripts/release-candidate-checklist.test.ts +++ b/test/scripts/release-candidate-checklist.test.ts @@ -707,6 +707,25 @@ describe("release candidate checklist", () => { ).toThrow("blocking product performance"); }); + it("keeps product performance advisory for beta release candidates", () => { + expect(() => + validateFullManifest( + { + workflowName: "Full Release Validation", + targetSha: "candidate-sha", + releaseProfile: "beta", + rerunGroup: "all", + runReleaseSoak: "false", + controls: { performanceBlocking: false }, + }, + { + targetSha: "candidate-sha", + releaseProfile: "beta", + }, + ), + ).not.toThrow(); + }); + it("binds SHA-pinned full validation evidence through its manifest", () => { const source = readFileSync("scripts/release-candidate-checklist.mjs", "utf8");