compiler-explorer / compiler-explorer/compiler-workflows

Alert when a daily build stops producing artifacts

Open
#81 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
25
Forks
42
Avg merge
2h 25m
Merged PRs (30d)
3

Description

A daily build that stops producing artifacts stays green, so nobody finds out. Two real cases:

- **llvmflang** failed for ~2 months (60 consecutive runs) before anyone noticed.
- **clang_ir** has reported success every day since **February** while building nothing, because its activity gate watched `llvm/clangir`, archived on 2026-02-21. Six months of a stale compiler on the site. Fixed in #80, found by accident.

The naive version of this alert ("no successful build in N days") is too noisy to live with: a gated fork that is genuinely idle is *supposed* to skip for weeks, and may legitimately wake up later. We do not want to be paged about a dormant-but-healthy fork.

The fix is to alert on the **discrepancy**, not the silence. Three rules, each with a decisive signal rather than a heuristic:

- [ ] **Upstream moved but we did not build.** `repos:` has commits newer than `last_success` by more than N days. Catches a fork whose build breaks while its upstream is active. An idle fork never trips this, which is what kills the noise.
- [ ] **The gate can never fire.** A `repos:` target is archived or 404s. Catches `clang_ir`; the activity rule above would *not* have, since the dead repo has no commits by definition.
- [ ] **Ungated builds must always produce.** An entry with no `repos:` key (`clang`, `clang_assertions`, `clang_llvmflang`) builds unconditionally, so no successful build in N days is unambiguously broken. Catches the llvmflang case.

The data is already there: `https://lambda.compiler-explorer.com/compiler-build/` returns `last_success.timestamp`, which is what `build-status.md` badges render. `clang_ir` currently returns `2026-02-22`. So this needs `compilers.yaml` plus that endpoint plus the GitHub API, and no new build-side plumbing.

Worth deciding separately: where it reports (a scheduled workflow that opens or updates a single issue is probably enough, and is self-throttling).

Contributor guide

Open the contributing guide

Research direction

Start with compilers.yaml and the compiler-build/ endpoint, which exposes last_success.timestamp, then review the GitHub API needed to inspect repository activity and status. Done means detecting all three discrepancies without flagging legitimately idle gated forks, with reporting handled by an agreed scheduled workflow that opens or updates one issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, python, yaml
Domain
build-system, ci-cd, devops
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.