ci: e2e-staging-saas on staging + canary auto-issue thresholded at 3 reds - #2108
Conversation
…t 3 reds Two CICD-review quick wins consolidated into one PR: # 1. e2e-staging-saas now fires on staging, not just main The full-lifecycle SaaS E2E was main-only, so it caught regressions AFTER they shipped to staging (and into the auto-promote PR). Adding `staging` to the push + pull_request branch list catches them BEFORE the staging→main promotion opens, making canary's green into auto-promote-staging meaningfully more trustworthy. paths-filter is unchanged, so the blast radius stays the same — only provisioning-critical changes trigger the ~25-35 min run. # 2. Canary auto-issue thresholded at 3 consecutive failures The 30-min canary was opening "🔴 Canary failing" issues on every single failure and de-duping via title match. Transient flakes (CF DNS hiccup, AWS API blip) generated noise. Now: on first failure, look up the prior `THRESHOLD-1` runs of this same workflow. Only file an issue when ALL of those also failed (i.e. this is the 3rd consecutive red, ~90 min of sustained failure). If an issue is already open we still comment per-failure so the streak is visible. Threshold rationale: canary fires every 30 min, so 3 reds = ~90 min of sustained failure — past any single-run flake but well inside the deploy window so a real outage still surfaces fast. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Skipping review: required check E2E Staging SaaS failing. Failure was at TLS/DNS propagation step at 19:21Z, during the lib/pq cached-prepared-statement window before CP #282 deployed (~20:30Z). Re-triggered the failed job — should pass now. Will re-evaluate once green. |
|
Skipping review this pass: required check E2E Staging SaaS still failing at TLS/DNS propagation step ( |
|
Re-triggered failed CI (CP #284 just merged at 21:49Z, fixing the silent-DNS-failure root cause that was stranding tests at |
|
Still skipping: failed E2E correlates with the active Cloudflare |
Code review (5-axis)Correctness: ✓ Two unrelated changes bundled here:
Tests: N/A — workflow YAML, no test surface. Inline comment block traces the "why" sufficiently. Architecture: Two unrelated changes in one PR is a minor splitting violation per the skill's "separate refactoring from feature work" guideline, but they're both small and operationally tied (CI alerting tuning). Acceptable bundle. Security: ✓ No new secrets, no new permissions. Performance: ✓ One extra Optional
CI failure on E2E Staging SaaS is the pre-CF-zone-cleanup symptom (failure timestamp 21:52Z, before 22:50Z cleanup). Re-trigger should pass — already kicked. LGTM modulo the failing CI. |
|
Skip this pass: required check E2E Staging SaaS still failing — but the failure mode shifted post-CF-zone-cleanup. The feature test now passes all 11 steps cleanly (provisioning, A2A roundtrip, HMA memory, peer discovery, delegation all green at 23:03Z). The new failure is in the teardown-verify step: The DELETE on Not blocking this PR's merit (workflow tweaks are unrelated to teardown), but the underlying teardown-leak is a separate issue worth tracking. Skipping per CI gate; auto-merge stays armed. |
|
Skip (no-change re-pass): same E2E Staging SaaS failure from 23:04:31Z, no new commits since. Holding pattern from my prior comment still applies — feature test passes, teardown-verify fails on |
|
🔒 Auto-merge disabled — new commit ( |
Summary
Two CICD-review quick wins consolidated into one PR. Closes items 5 and 10 from the comprehensive review.
1. e2e-staging-saas fires on staging, not just main
Full-lifecycle SaaS E2E was main-only, so it caught regressions after they shipped to staging (and into the auto-promote PR). Now fires on staging push + PR too — catches them before the staging→main promotion opens, making the canary→auto-promote chain meaningfully more trustworthy.
`paths-filter` unchanged → blast radius stays the same (only provisioning-critical changes trigger the ~25-35 min run).
2. Canary auto-issue thresholded at 3 consecutive failures
The 30-min canary was opening "🔴 Canary failing" issues on every red. Transient flakes (CF DNS hiccup, AWS blip) generated noise — see #2090's history this session.
Now:
Threshold rationale: canary fires every 30 min → 3 reds = ~90 min of sustained failure. Past any single-run flake but well inside the deploy window so a real outage still surfaces fast.
Out of band — already done in this CICD-review pass:
Test plan
🤖 Generated with Claude Code