Skip to content

ci(smoke): make prod smoke non-blocking (alert, not auto-rollback) - #294

Merged
thomasluizon merged 1 commit into
mainfrom
ci/smoke-non-blocking
Jun 24, 2026
Merged

ci(smoke): make prod smoke non-blocking (alert, not auto-rollback)#294
thomasluizon merged 1 commit into
mainfrom
ci/smoke-non-blocking

Conversation

@thomasluizon

Copy link
Copy Markdown
Owner

The smoke suite is genuinely flaky against cold-start prod (log-habit Today-list re-render; paywall intermittent plans-load), and its retries=0 auto-rollback reverted ~6 healthy deploys + repeatedly paused prod. Make it a non-blocking post-deploy check that alerts instead of rolling back; recover via the Promote Production workflow if prod is actually bad. Re-enable blocking after the two flows are hardened. .github-only.

🤖 Generated with Claude Code

The suite is genuinely flaky against cold-start prod — across 8 runs it intermittently failed log-habit (Today-list re-render makes the status toggle hit a stale element) and paywall (plans query loads in 2s on a warm hit, never on a cold one). Its retries=0 auto-rollback therefore reverted ~6 healthy deploys and repeatedly paused production. Per the repo's own fix-or-delete-flaky policy, gate-by-flaky-rollback is worse than no gate: run the smoke as a non-blocking post-deploy check that alerts, and recover with the Promote Production workflow if prod is genuinely bad. Re-enable blocking once the two flows are hardened (wait for create-persistence before logging; make plans-load deterministic).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@thomasluizon
thomasluizon merged commit 1f3aaec into main Jun 24, 2026
@vercel

vercel Bot commented Jun 24, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
orbit-ui-mobile-web Ignored Ignored Jun 24, 2026 3:26am

Request Review

@thomasluizon
thomasluizon deleted the ci/smoke-non-blocking branch June 24, 2026 03:26

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review: PR #294 — ci(smoke): make prod smoke non-blocking

Recommendation: NEEDS WORK

Summary

This PR disables the auto-rollback on smoke failure and converts the smoke step to non-blocking (continue-on-error: true), which is the right call given the documented flakiness. However, the "Capture previous production deployment for rollback" step is now dead operational code — it still runs on every push to main, makes a Vercel API call, and produces an output (previous_url) that nothing downstream consumes.

Findings

Critical

None

High

[HIGH] Dead "Capture previous production deployment for rollback" step still executes

  • dimension: Dead / stale code (rubric #2)
  • location: .github/workflows/smoke-prod.yml:86-100
  • issue: The prev_deploy step captures steps.prev_deploy.outputs.previous_url but nothing references that output after this PR removes the rollback step. The step has no if: guard, so it runs on every push to main and makes a Vercel API call for no purpose.
  • risk: Wasted CI time and an unnecessary Vercel API call on every prod deploy; the dead output is a permanent source of confusion for whoever next reads the workflow.
  • fix: Delete the entire "Capture previous production deployment for rollback" step (lines 86-100 in the post-merge file). If rollback is re-enabled later, reintroduce it at that point.
  • reference: CLAUDE.md rule 2 — "Delete unused code immediately. No just-in-case exports, dead branches, stub functions."

Medium

None

Low / Info

None (job name Post-deploy smoke + rollback on red is now stale — updating to Post-deploy smoke (alert-only) is cheap and avoids misleading the GitHub Actions UI)

Subagents

Agent Verdict
parity-checker N/A
i18n-syncer N/A
contract-aligner N/A
security-reviewer N/A

Validation

Check Result
Lint N/A — CI YAML only
Type check N/A — CI YAML only
Tests N/A — CI YAML only
Build (api) N/A — CI YAML only

What is good

  • continue-on-error: true correctly scopes non-blocking to the smoke step only, so upload-artifact and other cleanup steps still run regardless.
  • The warning message is actionable: it names the two flaky flows, explains why rollback was disabled, and points at the recovery path (Promote Production workflow).
  • Removing the set -euo pipefail block and the edge-case exit 1 path is a clean simplification.

Recommendation

Delete the now-dead "Capture previous production deployment for rollback" step (lines 86-100 of the post-merge file). That is the only change needed for approval.

@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant