Problem & Motivation
There is no alert today on repeated Vercel-deploy failures across refokus-agency. A recent postmortem showed a real failure stayed hidden for ~48h over the weekend because nothing surfaced it. Without a signal that fires when something is consistently broken, low-merge-activity windows mask incidents.
Adding the alert today would not work: transferred custom-code repos generate constant deploy failures and would drown the alert in false positives. That cleanup is tracked in #20 — this issue is blocked by it.
Scope
- Define the alert: threshold (e.g. N consecutive failed deploy runs in a single repo, or M failures across the org in a window), scope (which workflows / which repos), and delivery channel.
- Implement the alert against GitHub Actions runs (recommended via a scheduled workflow in
platform querying the API, or via existing monitoring tooling if there is one).
- Verify end-to-end with an intentional failure or replay.
Acceptance Criteria
Risks & Constraints
Edge Cases
- Dependabot deploy runs are already skipped (
if: github.actor != 'dependabot[bot]') and should not count as failures.
- Manual
workflow_dispatch runs intentionally failed during testing — decide whether to exclude or accept as noise.
Blocked by #20.
Problem & Motivation
There is no alert today on repeated Vercel-deploy failures across
refokus-agency. A recent postmortem showed a real failure stayed hidden for ~48h over the weekend because nothing surfaced it. Without a signal that fires when something is consistently broken, low-merge-activity windows mask incidents.Adding the alert today would not work: transferred custom-code repos generate constant deploy failures and would drown the alert in false positives. That cleanup is tracked in #20 — this issue is blocked by it.
Scope
platformquerying the API, or via existing monitoring tooling if there is one).Acceptance Criteria
umh-custom-code/profile-behavior-custom-code.Risks & Constraints
Edge Cases
if: github.actor != 'dependabot[bot]') and should not count as failures.workflow_dispatchruns intentionally failed during testing — decide whether to exclude or accept as noise.