Skip to content

ci: tolerate Cloudflare propagation lag (stale 200) in the stable smoke dev-floor check - #44

Merged
pmaxhogan merged 1 commit into
mainfrom
ci/release-smoke-tolerate-stale-dev-manifest
Jun 26, 2026
Merged

pmaxhogan merged 1 commit into
mainfrom
ci/release-smoke-tolerate-stale-dev-manifest

Conversation

@pmaxhogan

Copy link
Copy Markdown
Owner

What happened

The v0.3.0 release.yml run failed its Smoke test deployed stable manifests step with dev 0.2.0 is BELOW stable 0.3.0 for darwin/x86_64 - but the release was correct: all 4 platform builds succeeded, and the live manifests serve stable AND dev = 0.3.0 across every target. Stable and dev users both correctly get 0.3.0.

Root cause

The smoke's secondary dev >= stable check (release.yml) only tolerates a 404 as Cloudflare Pages propagation lag. A stale edge instead returns HTTP 200 with the previous (below-stable) dev version, which curl does not retry - so the check read the stale 0.2.0 manifest seconds after deploy and hard-failed. The authoritative local pre-deploy floor gate (floor-dev-channel.mjs assertFloored) had already enforced dev >= stable, so this post-deploy check is an eventual-consistency double-check that must never fail the release on lag. Same class as the earlier m10 404-retry fix - this is the stale-200 variant.

Fix

Re-fetch the deployed dev manifest in a bounded loop until it's >= stable (rides out both 404 and stale-200 propagation); if it never catches up in the window, emit a ::warning:: instead of failing. dev-channel.yml's smoke has no cross-channel comparison and is unaffected.

No app/runtime code changes; release-pipeline robustness only.

🤖 Generated with Claude Code

…ke dev-floor check

The post-deploy "Smoke test deployed stable manifests" step hard-failed the
v0.3.0 release on `dev 0.2.0 is BELOW stable 0.3.0`, even though the deploy was
correct (live stable AND dev manifests are 0.3.0 across all 4 targets, and the
authoritative LOCAL pre-deploy "Floor dev channel to stable" gate already
asserted dev>=stable).

Root cause: the smoke's secondary dev>=stable check only tolerated a 404 as
Cloudflare Pages propagation lag. But a stale edge returns HTTP 200 with the
PREVIOUS (below-stable) dev version, and curl does not retry a 200 - so the
check read the stale 0.2.0 manifest and failed the release. Same class as the
earlier m10 404-retry fix, just the stale-200 variant.

Fix: re-fetch the deployed dev manifest in a bounded loop until it is >= stable
(rides out both 404 and stale-200 propagation); if it never catches up in the
window, emit a ::warning:: instead of failing. The local pre-deploy floor gate
is authoritative, so this eventual-consistency double-check must never fail the
release on lag. dev-channel.yml's smoke has no cross-channel check and is
unaffected.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017GadVxaYAAY1Q5tRMNucrM
@github-actions

Copy link
Copy Markdown
Contributor

Coverage

Area main this PR delta
Rust (lib crates) 76.57% 76.57% +0.00 (OK)
UI (vue/ts) 86.94% 86.94% +0.00 (OK)

Gate: passed - no coverage regression (epsilon 0.1 pp).

@pmaxhogan
pmaxhogan merged commit 8108f50 into main Jun 26, 2026
18 checks passed
@pmaxhogan
pmaxhogan deleted the ci/release-smoke-tolerate-stale-dev-manifest branch June 26, 2026 15:50
@github-project-automation github-project-automation Bot moved this to Done in Driven Jun 26, 2026
@pmaxhogan pmaxhogan added this to the v0.3.0 milestone Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant