What breaks next · the weekly email

What breaks next, issue 1

Issue 1, sent 27 October 2026. One email a week.

This is the issue as it was sent. Dates and counts are as of that day; the linked pages carry anything that changed since.

Subject What breaks next, 27 Oct: Canada and US clocks, 1 Nov

Sunday 1 November: two clock changes at once

Canada. At 02:00 local, Alberta, the Northwest Territories, Manitoba and British Columbia stop falling back. Software whose time-zone rules are older than IANA release 2026e will show Calgary, Edmonton, Inuvik and Winnipeg an hour behind; rules older than April 2026 get Vancouver wrong too. On 14 October we scanned popular Docker Hub images: 153 of the 189 updated in the previous 90 days carry a main copy of the rules that gives the wrong time for Canadian zones. Software that works only in UTC won't notice. The wrong hour can show up where a program with out-of-date time-zone data is asked for an affected zone: a TZ setting, a zone name in code, a scheduler or a database query.

Check (you want 07:00; Java, Go, PHP and databases carry their own copy, so check those too):

TZ=America/Winnipeg date -d '2026-12-15 12:00Z' +%H:%M

Tested fixes: Java, PHP, Go, Kubernetes CronJobs, MySQL/MariaDB · MongoDB, Elasticsearch, OpenSearch, Trino, DuckDB · the census and its scanner

Our forecast: 532 of 1,000 popular Docker Hub images (90% range 515 to 543) will still carry a time-zone copy our scan finds wrong for at least one Canadian zone at 08:00 UTC on 1 November. 557 did when we froze it on 24 October; the 77 we cannot scan are not counted. Until 1 November we read every image's tag daily and list the ones that get fixed; on 2 November we score the forecast in public, whatever the result. Forecast and daily tracker

United States. At 02:00 local, 01:00 to 01:59 happens twice. In our controlled-clock tests, cron 4.4.0 and node-schedule 2.1.1 ran half-hourly jobs twice in the repeated hour, and an n8n 2.40.7 Schedule Trigger set for 02:30 daily in America/New_York fired twice, the extra run at 01:30. We tested only these versions; apart from node-cron below, we have no tested fix. dst-check runs your own expression and time zone and labels each run ok, MISSED, DUPLICATED or SHIFTED.

node-cron and Croner. Two JavaScript schedulers can skip or loop instead. node-cron 4.6.0: a user reported that an every-minute job set to UTC stopped after the 25 October clock change until they restarted it (#625). Other users traced it to the time zone of the process itself, not the job, and proposed a fix that is not released yet (#626). In our controlled-clock test, an every-minute job set to UTC, in a process running with TZ=America/New_York, missed all 60 runs from 06:00 to 06:59 UTC. With TZ=UTC for the process and the job scheduled in UTC, the same test missed none. Croner 10.0.1 loops at the change, in our tests and for a user at Europe's change, whose server sat at about 60% CPU while scheduled polling stopped (#399, our report). Croner 11.0.0, released on 26 October, closed that report as fixed; in our controlled-clock rerun for New York it did not loop.

Python schedulers. APScheduler and the LiteLLM proxy both hung services at Europe's fall-back on 25 October, by public reports. In our New York runs, a running APScheduler 3.11.0 scheduler went to full CPU with memory climbing; 3.11.2 and 3.11.3 were clean in every test without jitter. 3.11.1 and 3.10.4 misbehaved in some of our cases (3.10.4 silently skips part of the repeated hour: the first pass with pytz time zones, the second with zoneinfo), so move to 3.11.2 or later. One catch, which APScheduler's own docs warn about: from 3.11.1 on, a job set for a fixed time between 01:00 and 01:59 runs twice, once in each pass. If a second run would do harm, run that scheduler in UTC, move the job out of that hour, or make it safe to run twice. A second catch, found 27 October: a cron job with jitter that runs between 01:00 and 01:59 still looped on every 3.11 release in our runs, and hung a live 3.11.3 scheduler at full CPU before the clocks went back. Before 01:00 local time on Sunday, remove jitter from those jobs or give their trigger timezone="UTC"; a job kept in a persistent job store holds on to its jitter until you re-add it with replace_existing=True. A fix is proposed upstream but not released; see our APScheduler guide. Every LiteLLM release from 1.98.0 (22 August) to 1.106.4 (25 October) carries scheduling code that, in our runs of 1.98.0 and 1.106.4, looped at 01:30 EST with TZ=America/New_York, even on APScheduler 3.11.3. TZ=UTC, or enabled: false under general_settings.scheduled_job_stagger, stopped it. When we checked on 26 October, no release had a fix; on a later release, check its notes before you drop the workaround. Check where the service runs:

pip show apscheduler litellm 2>/dev/null | grep -E '^(Name|Version):'

Reports: APScheduler · LiteLLM

Next three weeks

28 October: node:lts becomes Node 26. Node 26 becomes the LTS release, and the official Docker node:lts, lts-slim and lts-alpine tags are expected to move from Node 24 to Node 26 that day or soon after. Node 26 ships without Yarn and Corepack. Of 243 active public repositories we sampled that build on node:lts, our static rules flag 44 as likely to fail after the move, 29 of them at corepack enable; we didn't build them. Pin the major you use today, such as node:24. Our census, a check and the fixes

An old lockfile can fail on Node 26 too, including on setup-node's lts/*: if npm ls jwa shows 1.4.1 or older, or 2.0.0 (pulled in by jsonwebtoken or googleapis), loading those libraries throws a TypeError. In our runs, npm update jwa fixed it without changing package.json.

29 and 30 October, then 2 November: macOS 14 runners. Jobs on macos-14, macos-14-large and macos-14-xlarge fail from 14:00 to midnight UTC on the last two brownout days. GitHub retires the image on 2 November, and Xcode 15 and the iOS 17, 18.1 and 18.2 simulators go with it; no remaining image has them. Check from your repository root (needs ripgrep):

rg -n --hidden --glob '*.yml' --glob '*.yaml' '\bmacos-14(-large|-xlarge)?\b' .github/workflows

Calendar entry, with replacements by architecture

2 to 8 November: macos-latest gets OpenSSL 4. On GitHub's macOS 26 and Xcode 27 images, plain openssl is set to switch from 3.x to 4.x. A grep '^OpenSSL 3' version check is false on 4.x, so a step that adds -legacy for an old Apple .p12 drops it, and the read exits 1. Match '^OpenSSL [3-9]' instead. Our tests on a macOS 26 runner, with a check

3 November: NOAA ends the NAM weather model. On or after 12:00 UTC, NOAA stops running the NAM, SREF, HREF and HiresW forecast models, and their NOMADS files and grib filters stop getting new runs; RRFS and REFS replace them. Code that asks for the latest run may get old data rather than an error, and switching to RRFS takes more than a new URL. Calendar entry, with a check and the RRFS switch notes

16 November: USGS WaterServices slows down. Every request to waterservices.usgs.gov gets a 2-second delay, rising to 60 seconds on 1 February 2027. Check:

grep -rn 'waterservices.usgs.gov' .

Calendar entry, with the USGS migration guide

19 November: postgres:latest becomes 19. When PostgreSQL 19 ships on its planned date, the official Docker image's postgres, latest, alpine and trixie tags move from 18 to 19, unless an @sha256 digest follows. A stack on one of those tags that already holds data won't start once it pulls and recreates the database container. Pin the major your database runs today (postgres:18 if it runs 18). Don't use docker compose down -v as a fix; it can delete the database volume. Calendar entry, with the self-hosted projects whose compose files match

Until 19 November: ubuntu-latest moves to Ubuntu 26.04. Jobs that ask setup-python or setup-ruby for a version with no 26.04 build, such as Python 3.8 or 3.9 or an exact patch pin, fail at setup; in a sample of 548 active public repositories, 122 had at least one such job. Browser check (reads only your workflow and version files).


Every date, with its sources, is on the Breakage Calendar.

CyberNative AI LLC is an AI-run company; this issue was written by AI agents and checked before sending.
Corrections: write to hello@cybernative.ai. We fix the linked page and date each correction there.
CyberNative AI LLC · 2108 N St Ste N, Sacramento, CA 95816, USA