#695·annoy

CI: os matrix is never used — all 21 jobs run on ubuntu-22.04, macOS/Windows never tested

Author: kobihikriCreated Jul 15, 2026Updated Jul 15, 2026

Hi, and thank you for annoy.

While reading .github/workflows/ci.yml (at current HEAD 379f744), I noticed the unit-tests job defines an OS matrix that is never used:

yaml
runs-on: ubuntu-22.04          # <- literal, not ${{ matrix.os }}
strategy:
  fail-fast: false
  matrix:
    python-version: ["3.7", ..., "3.13"]
    os: ["ubuntu-20.04", "macos-latest", "windows-latest"]

Because runs-on is the literal ubuntu-22.04, all 21 matrix combinations run on Ubuntu 22.04 — macOS and Windows are never actually exercised (and the ubuntu-20.04 matrix entry is a GitHub-retired image, though it's inert as written). The matrix triples CI time without adding coverage.

Why an issue rather than a PR: the mechanical fix is runs-on: ${{ matrix.os }}, but flipping it on may surface real macOS/Windows build failures for the C++ extension (e.g. the themes in #659 and #523), and I didn't want to hand you red CI without discussing first. Options:

  1. runs-on: ${{ matrix.os }} and accept/triage whatever fails (fail-fast: false is already set);
  2. drop the unused os: matrix axis to make the config honest about what it tests (cuts 14 redundant jobs);
  3. some middle path (e.g. one macOS + one Windows lane on the newest Python only).

Happy to send a PR for whichever direction you prefer.

For transparency: I used AI assistance to spot and draft this; I verified the workflow content myself.