diff --git a/.github/workflows/update-demo-server.yml b/.github/workflows/update-demo-server.yml index cf058e5c7..252cd2ed9 100644 --- a/.github/workflows/update-demo-server.yml +++ b/.github/workflows/update-demo-server.yml @@ -200,7 +200,7 @@ jobs: exit 1 fi release_state="$( - gh release view "${TAG}" --json isDraft,isPrerelease,publishedAt,tagName \ + gh release view "${TAG}" --repo rcourtman/Pulse --json isDraft,isPrerelease,publishedAt,tagName \ --jq '[.tagName, (.isDraft | tostring), (.isPrerelease | tostring), (.publishedAt // "")] | @tsv' )" if [ "$(awk -F '\t' '{print $1}' <<<"${release_state}")" != "${TAG}" ] || \ diff --git a/docs/release-control/v6/internal/subsystems/deployment-installability.md b/docs/release-control/v6/internal/subsystems/deployment-installability.md index 9f7aa2c19..13fd8d125 100644 --- a/docs/release-control/v6/internal/subsystems/deployment-installability.md +++ b/docs/release-control/v6/internal/subsystems/deployment-installability.md @@ -1944,6 +1944,9 @@ its proof. A demo failure is retriable convergence debt and cannot retroactively unpublish the committed GitHub release. An asynchronous dispatch or manual SSH deployment is not release completion. A one-shot `ssh-keyscan` against a private demo target is not sufficient release or deploy proof. +Checkout-free mutation guards must address the Pulse repository explicitly +when querying release state; they must not rely on `gh` discovering a local git +checkout before the workflow's checkout step has intentionally been admitted. Those same workflows also own customer-visible browser truth for the public demo shell. Health checks and entry-asset parity are necessary but not sufficient; after those checks pass, the governed helpers diff --git a/scripts/installtests/build_release_assets_test.go b/scripts/installtests/build_release_assets_test.go index 7f54d0d9a..346505f5d 100644 --- a/scripts/installtests/build_release_assets_test.go +++ b/scripts/installtests/build_release_assets_test.go @@ -1420,6 +1420,7 @@ func TestUpdateDemoWorkflowUsesGovernedNetworkPath(t *testing.T) { `activation_convergence_run_id:`, `release-activation.json`, `.convergence_run_id == $convergence_run_id`, + `gh release view "${TAG}" --repo rcourtman/Pulse`, `Stable demo mutation refuses inactive or prerelease tag`, `Verify public browser smoke`, `./scripts/run_demo_public_browser_smoke.sh`,