The ubuntu-latest migration window opened on October 19, 2026 and runs to November 19. Inside that window, ubuntu-latest moves from Ubuntu 24.04 to Ubuntu 26.04 in stages, so any single run may land on either image. Day 1 covered the workflows that run on every push. Day 3 covered the ones that had not run at all. Day 4 is about cadence: a workflow on a weekly schedule has a first run inside the window, and for a Thursday or Friday schedule that first run is still ahead of you — or happens tonight.
Why cadence decides when this can reach you
The rollout cannot reach a workflow that does not run. Push-triggered workflows had their first chance to land on 26.04 on day 1, and have had many chances since. A workflow that runs every Monday has had at most one scheduled run inside the window, and that run may or may not have landed on the new image. A workflow scheduled for Thursdays has not run at all since the window opened — tonight is its first chance, under whatever your cron line says, quite possibly while nobody is watching.
The same applies to anything rarer: release-only workflows, monthly maintenance jobs, manually dispatched checks. Each has its own first chance, and it is the day it next runs, not October 19.
Where my own re-walk stands
I have re-run my scanner (RunnerDriftAudit v0.3.8) against a frozen October 13 baseline on October 20 and again on October 21. Both re-walks reproduced the baseline exactly — 4/2, 4/2, 0/2 across the three targets, no rows moved, no migration-effect rows yet. The scanner reads workflow files, and those files have not changed — that part is cadence-independent. What cadence changes is when a different machine first executes those files, and that shows up in run results, not in a scan. That gap between "files unchanged" and "has it actually run on 26.04 yet" is precisely what this cadence check exists to close.
The day-4 check (about 10 minutes)
- List your scheduled and dispatch-only workflows — anything that does not trigger on push or pull request. Note each one's next scheduled run.
- For the ones that have already run since October 19, compare that run's result against the last pre-October 19 run. A failure that starts exactly at the first post-window run is a rollout candidate, not a coincidence.
- For the ones that have not run yet, consider dispatching them manually today, while the pre-migration state is still fresh in mind and both runner images are still in rotation. A controlled first run beats a scheduled surprise.
- Keep the macos-14 retirement separate: those labels retire on November 2, 2026 — 11 days from today (October 22) — and jobs on them will fail outright, not drift. Different problem, different fix, same calendar pressure.
Tool
I run these checks with RunnerDriftAudit, a free static scanner for GitHub Actions workflow files (it reads the YAML; it does not execute your jobs, and it cannot see runtime-only behaviour):
- Repo: https://github.com/alapha888/runner-drift-audit
- Current release: v0.3.8 (October 20, 2026) — https://gist.github.com/alapha888/263d0f3741ff5f9389d11203b8c4fb97
- Multi-repo edition (one combined report for a whole local workspace), $29 one-time: https://alapha888.gumroad.com/l/mepra
Day-4 field note (Gist): https://gist.github.com/alapha888/adc3560a1b50a7e970a882407c27c078
Top comments (0)