From 21b41efc7bb83dbdba9ce57c2d7140f6c20014e2 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 27 Aug 2026 16:08:03 +0800 Subject: [PATCH] fix(release): include evidence validator in decision checkout (#130803) --- .github/workflows/full-release-validation.yml | 2 ++ test/scripts/ci-workflow-guards.test.ts | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/.github/workflows/full-release-validation.yml b/.github/workflows/full-release-validation.yml index 485af172aed1..c4664d809f6f 100644 --- a/.github/workflows/full-release-validation.yml +++ b/.github/workflows/full-release-validation.yml @@ -1251,6 +1251,8 @@ jobs: sparse-checkout: | scripts/full-release-validation-state.mjs scripts/full-release-validation-policy.mjs + scripts/release-ci-summary.mjs + scripts/lib/plain-gh.mjs sparse-checkout-cone-mode: false persist-credentials: false diff --git a/test/scripts/ci-workflow-guards.test.ts b/test/scripts/ci-workflow-guards.test.ts index 8b8203515258..8dce247056e4 100644 --- a/test/scripts/ci-workflow-guards.test.ts +++ b/test/scripts/ci-workflow-guards.test.ts @@ -9753,6 +9753,30 @@ printf '%s\n' "\${CURL_SUCCESS_IP:-203.0.113.7}" expect(telegramProvenanceHelper).not.toContain(".baseRefName =="); }); + it("checks out the complete Release Decision evidence validator closure", () => { + const workflow = readWorkflow(".github/workflows/full-release-validation.yml"); + const checkout = workflow.jobs.release_decision.steps.find( + (step: WorkflowStep) => step.name === "Checkout release decision tooling", + ); + const sparseCheckoutPaths = String(checkout?.with?.["sparse-checkout"] ?? "") + .split("\n") + .map((line) => line.trim()) + .filter(Boolean); + + expect(sparseCheckoutPaths).toEqual([ + "scripts/full-release-validation-state.mjs", + "scripts/full-release-validation-policy.mjs", + "scripts/release-ci-summary.mjs", + "scripts/lib/plain-gh.mjs", + ]); + for (const sparsePath of sparseCheckoutPaths) { + expect({ sparsePath, exists: existsSync(sparsePath) }).toEqual({ + sparsePath, + exists: true, + }); + } + }); + it("keeps maturity scorecard release docs opt-in from release checks", () => { const releaseWorkflow = readReleaseChecksWorkflow(); const job = releaseWorkflow.jobs.maturity_scorecard_release_checks;