diff --git a/.github/workflows/openclaw-release-publish.yml b/.github/workflows/openclaw-release-publish.yml index a40d36bc268a..16f878338d4a 100644 --- a/.github/workflows/openclaw-release-publish.yml +++ b/.github/workflows/openclaw-release-publish.yml @@ -499,7 +499,7 @@ jobs: echo "Full release validation must run rerun_group=all before npm publish; got $rerun_group" >&2 exit 1 fi - if [[ "$performance_blocking" != "true" ]]; then + if [[ "$release_profile" != "beta" && "$performance_blocking" != "true" ]]; then echo "Full release validation manifest does not record blocking product performance evidence." >&2 exit 1 fi diff --git a/test/scripts/package-acceptance-workflow.test.ts b/test/scripts/package-acceptance-workflow.test.ts index 3b4ecb587038..6fd49a86edf3 100644 --- a/test/scripts/package-acceptance-workflow.test.ts +++ b/test/scripts/package-acceptance-workflow.test.ts @@ -1271,6 +1271,18 @@ describe("package acceptance workflow", () => { expect(workflow).toContain('blocking: ($releaseProfile != "beta")'); }); + it("keeps beta performance advisory at the publish gate", () => { + const validationStep = workflowStep( + workflowJob(RELEASE_PUBLISH_WORKFLOW, "resolve_release_target"), + "Validate full release validation manifest", + ); + + expectTextToIncludeAll(validationStep.run, [ + 'if [[ "$release_profile" != "beta" && "$performance_blocking" != "true" ]]', + "Full release validation manifest does not record blocking product performance evidence.", + ]); + }); + it("keeps child-job fail-fast polling best-effort", () => { const workflow = readFileSync(FULL_RELEASE_VALIDATION_WORKFLOW, "utf8"); expect(workflow.match(/continuing with authoritative workflow conclusion\./gu)).toHaveLength(3);