Skip to content

build(workflows): remove orphaned matrix include entries in nightly install workflows#13287

Draft
Planeshifter wants to merge 1 commit into
developfrom
philipp/ci-fix-npm-install-matrix-2026-07-05
Draft

build(workflows): remove orphaned matrix include entries in nightly install workflows#13287
Planeshifter wants to merge 1 commit into
developfrom
philipp/ci-fix-npm-install-matrix-2026-07-05

Conversation

@Planeshifter

Copy link
Copy Markdown
Member

Description

This pull request:

  • fixes macos_test_npm_install and linux_test_install, two nightly scheduled workflows that have failed on every single run for at least the past 30 days, each time completing in under 10 seconds with zero billable minutes for the actual test-matrix job — only the downstream zulip notification job ever ran.
  • removes orphaned strategy.matrix.include entries (Node.js versions 14, 12, 10, 8, 6, 4, 0.12, 0.10) left over after both workflows' active NODE_VERSION list was trimmed down to ['20', '18', '16'], plus the resulting fully-vestigial exclude block in linux_test_install.yml.

Related Issues

None.

Questions

No.

Other

Failing runs:

Symptom: both workflows conclude failure on every scheduled run, in under 10 seconds, with the jobs API showing zero billable minutes for test_npm_install/test_install — only the zulip notification job (which correctly reports the upstream failure) ever executes.

Root cause: GitHub Actions' matrix-expansion rules create a new, standalone combination from an include entry whenever that entry's keys don't match any existing matrix combination — a new combination that only contains the keys given in that entry. Both workflows' include lists still had entries for NODE_VERSION values (14, 12, 10, 8, 6, 4, 0.12, 0.10) that no longer appear in the active NODE_VERSION: ['20', '18', '16'] list. Each such entry therefore spawned a combination missing the OS key, so runs-on: ${{ matrix.OS }} resolved to empty and the job's matrix expansion failed before any runner was allocated — for every one of the intended combinations, not just the orphaned ones. The sibling windows_test_npm_install workflow does not have this bug because its include entries match its NODE_VERSION list exactly.

Fix: delete the orphaned include entries in both files (and the now fully-vestigial exclude block in linux_test_install.yml, which referenced only Node versions no longer present anywhere in the matrix), and remove a leftover comment listing the old, wider Node.js version set. Both workflows now cleanly expand to their intended 3 combinations (Node.js 20/18/16), matching the windows_test_npm_install convention. No step definitions, other matrix dimensions, secrets, permissions, or the zulip job are touched.

Validation: confirmed both files remain valid YAML post-edit (parsed with PyYAML) and that every remaining include entry's NODE_VERSION is now a subset of the active list. Reviewed independently by three agents (correctness, regression scope, style/conventions) — all approved, no blocking findings. One non-blocking nit (a stale comment referencing the old Node version list) was folded in before commit.

Reviewer notes: package.json's engines field still nominally advertises >=0.10.0 support — a pre-existing, repo-wide inconsistency with the real 16+ CI target, unrelated to this fix and out of scope here.

Checklist

AI Assistance

  • Yes

  • No

  • Code generation (e.g., when writing an implementation or fixing a bug)

  • Test/benchmark generation

  • Documentation (including examples)

  • Research and understanding

Disclosure

This PR was authored by Claude Code as part of an automated CI-failure investigation routine: it identified that both nightly workflows had been failing on every run for a month, root-caused the matrix-expansion bug, applied the fix, and validated it against three independent review passes before opening this draft.


@stdlib-js/reviewers


Generated by Claude Code

…nstall workflows

The workflows `macos_test_npm_install` and `linux_test_install` failed
on every single scheduled run for at least the past 30 days, each time
completing in under 10 seconds with zero billable minutes for the
actual test-matrix job (`test_npm_install` / `test_install`) — only the
downstream `zulip` notification job ever ran.

Root cause: both workflows trimmed their active `NODE_VERSION` list
down to `['20', '18', '16']`, but left `strategy.matrix.include`
entries referencing older Node.js versions (14, 12, 10, 8, 6, 4, 0.12,
0.10) that no longer appear anywhere in the active matrix. Per GitHub
Actions' matrix-expansion rules, an `include` entry whose keys don't
match any existing combination spawns a new, standalone combination
containing only that entry's own keys — so each orphaned entry produced
a combination missing the `OS` key, making `runs-on: ${{ matrix.OS }}`
resolve to empty and failing the whole job's matrix expansion before
any runner was ever allocated. The sibling `windows_test_npm_install`
workflow does not exhibit this bug because its `include` entries match
its `NODE_VERSION` list exactly.

This commit removes the orphaned `include` entries (and the resulting
fully-vestigial `exclude` block in `linux_test_install.yml`, which only
referenced Node versions no longer present anywhere in the matrix), so
both workflows cleanly expand to their intended 3 combinations
(Node.js 20/18/16) and can actually run.

Ref: https://github.com/stdlib-js/stdlib/actions/runs/28736742230
Ref: https://github.com/stdlib-js/stdlib/actions/runs/28736806563
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants