diff --git a/incidents/2026-04-01.md b/incidents/2026-04-01.md new file mode 100644 index 0000000..82c7894 --- /dev/null +++ b/incidents/2026-04-01.md @@ -0,0 +1,45 @@ +# 2026-04-01 Incident Report + +- Incident Commander: @MattIPv4 +- Severity Level: P2 + +For a brief period of time, the `/en/download/current` page was blank due to a logic bug in determining the Current version of Node.js. The main `/en/download` page was unaffected and could be accessed throughout. + +## Timeline + +- **2025-04-01 12:00 AM UTC**: Start of impact. Release schedule indicates that Node.js 25.x has moved from Current to Maintenance LTS. + +- **2025-04-01 00:14 AM UTC**: Impact identified by [@MattIPv4's monitoring action](https://github.com/MattIPv4/monitors/actions/runs/23825485542). + +- **2025-04-01 00:51 AM UTC**: Impact reported in [OpenJSF Slack](https://openjs-foundation.slack.com/archives/CVAMEJ4UV/p1775004674164609). Investigation began. + +- **2025-04-01 01:00 AM UTC**: Root cause identified. + +- **2025-04-01 01:20 AM UTC**: [nodejs/nodejs.org#8787](https://github.com/nodejs/nodejs.org/issues/8787) opened to resolve issue. + +- **2025-04-01 01:33 AM UTC**: [nodejs/nodejs.org#8787](https://github.com/nodejs/nodejs.org/issues/8787) merged. Impact resolved shortly after. + +## Impact + +Users navigating to `https://nodejs.org/en/download/current` would see a blank page instead of the proper download instructions. + +Users accessing any page on the website would see only the 24.x LTS release in the footer, no Current release. + +`https://nodejs.org/en/download` showed 25.x as an LTS release, but was otherwise unaffected by this issue, with users being able to access download instructions as normal. + +On both the `/en/download` page, and throughout the site in the footer, 24.x continued to be shown as the LTS release, due to it still being the Active LTS major, with 25.x having transitioned directly to Maintenance LTS in the schedule. + +## Root Cause + +According to the static release schedule, on April 1st, 2026, Node.js 25.x was expected to move from Current to Maintenance LTS. Due to this, the website logic automatically started treating 25.x as a Maintenance LTS major. + +However, no new release of 25.x has yet been made to be marked as LTS, nor has the first release of 26.x been made to become the new Current major. This left the website with no Current release per its logic. + +## Fix + +[nodejs/nodejs.org#8787](https://github.com/nodejs/nodejs.org/issues/8787) resolved the issue by changing the detection of a release's `status` to require `.lts.isLts` to be `true` before allowing a release to be marked as `Active LTS` or `Maintenance LTS`, ensuring that a given major has a valid LTS release available before the website considers it an LTS release. + +## Follow-up Work + +* When possible, avoid relying on [the expected schedule](https://raw.githubusercontent.com/nodejs/Release/main/schedule.json), as various + delays and circumstances cause this to be inaccurate to actual release dates.