Documentation
¶
Overview ¶
Reports every organisation whose Renovate runner has stopped running, or runs and fails.
The failure it exists to catch is silent by construction. `redscan` asks whether the last run FAILED; a runner that stopped does not fail, it says nothing, and `status=completed&per_page=1` on a repository with no runs returns an empty object -- so a runner that has never fired is invisible to a scan that branches on `conclusion`. This is the other half of that file's own lesson: a red branch is not a broken one, and a green fleet is not a running one. Check WHEN it last ran.
⛔⛔ AND THEN CHECK WHAT BECAME OF IT, which this file did not do for ten days. On 2026-10-31 it reported SIXTEEN organisations as `healthy` whose runner failed in about ten seconds every night, RENOVATE_TOKEN never having been set: none of them had ever received a dependency update. Timeliness was the only question asked, so timely was the only way to be fine. `redscan` caught them incidentally, because a runner's workflow happens to sit on a default branch -- the specialised sweep was the one that said nothing. Activity is not health, and a runner that fails fast is the most active-looking failure there is. The `broken` verdict, the conclusion on the line and the failure streak are that lesson; see quiet.Broken.
⚠ AND THE EVIDENCE IS THE SCHEDULED PATH ONLY, which cuts both ways. The runs listing below is filtered to `event=schedule` because a manual dispatch is not evidence the cron still fires -- so a runner whose dispatches succeed and whose nightly runs fail is reported BROKEN, correctly. Three of those sixteen were called proven on 2026-10-31 on the strength of a dispatch; this tool disagreed, and it was right.
Two properties are structural, not conventions:
- It is not a scheduled GitHub Actions workflow. A watcher that shares the failure mode it watches for is not a watcher. Run it from this machine like its three siblings, or from launchd if it is to be unattended.
- It never dispatches a run. A dispatch opens real pull requests across an organisation, so every call goes through readOnly, which refuses any write verb and any path that could start one.