Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ai_pr_review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ concurrency:

jobs:
review:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

# Run if:
# - PR opened (same-repo only — fork PRs are skipped here at the workflow
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/build-wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
matrix:
include:
- arch: x86_64
runner: ubuntu-latest
runner: ubuntu-24.04
container: quay.io/pypa/manylinux_2_28_x86_64
artifact: wheels-linux-x86_64
- arch: aarch64
Expand Down Expand Up @@ -143,7 +143,7 @@ jobs:
build-sdist:
name: Build source distribution
if: ${{ !inputs.linux_only }}
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ permissions: {}
jobs:
ci-gate:
name: CI Gate
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- name: Require ready-for-ci label on PRs
if: >-
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/docs-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ jobs:
|| (contains(github.event.pull_request.labels.*.name, 'ready-for-ci')
&& (github.event.action != 'labeled' && github.event.action != 'unlabeled'
|| github.event.label.name == 'ready-for-ci'))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down Expand Up @@ -157,7 +157,7 @@ jobs:
|| (contains(github.event.pull_request.labels.*.name, 'ready-for-ci')
&& (github.event.action != 'labeled' && github.event.action != 'unlabeled'
|| github.event.label.name == 'ready-for-ci'))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down Expand Up @@ -231,7 +231,7 @@ jobs:
|| (contains(github.event.pull_request.labels.*.name, 'ready-for-ci')
&& (github.event.action != 'labeled' && github.event.action != 'unlabeled'
|| github.event.label.name == 'ready-for-ci'))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ concurrency:
jobs:
format-lint:
name: Ruff + Black
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Set up Python
Expand All @@ -47,7 +47,7 @@ jobs:

typecheck:
name: Mypy
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Set up Python
Expand All @@ -70,7 +70,7 @@ jobs:
# SKIPPED, and GitHub treats a skipped required check as satisfied.
lint-gate:
name: Lint Gate
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
needs: [format-lint, typecheck]
if: always()
steps:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/lwdid-data-canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ permissions:
jobs:
lwdid-real-data:
name: Prop 99 / Walmart real-data canary
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/mmm-interop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
|| (contains(github.event.pull_request.labels.*.name, 'ready-for-ci')
&& (github.event.action != 'labeled' && github.event.action != 'unlabeled'
|| github.event.label.name == 'ready-for-ci'))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down Expand Up @@ -99,7 +99,7 @@ jobs:
|| (contains(github.event.pull_request.labels.*.name, 'ready-for-ci')
&& (github.event.action != 'labeled' && github.event.action != 'unlabeled'
|| github.event.label.name == 'ready-for-ci'))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/notebooks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
|| (contains(github.event.pull_request.labels.*.name, 'ready-for-ci')
&& (github.event.action != 'labeled' && github.event.action != 'unlabeled'
|| github.event.label.name == 'ready-for-ci'))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down Expand Up @@ -112,7 +112,7 @@ jobs:
|| (contains(github.event.pull_request.labels.*.name, 'ready-for-ci')
&& (github.event.action != 'labeled' && github.event.action != 'unlabeled'
|| github.event.label.name == 'ready-for-ci'))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
publish:
name: Publish to PyPI
needs: build
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
environment: pypi
permissions:
id-token: write
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/rust-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest, ubuntu-24.04-arm]
os: [ubuntu-24.04, macos-latest, windows-latest, ubuntu-24.04-arm]

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
Expand Down Expand Up @@ -140,13 +140,13 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest, ubuntu-24.04-arm]
os: [ubuntu-24.04, macos-latest, windows-latest, ubuntu-24.04-arm]
python-version: ['3.11', '3.13', '3.14', '3.15']
include:
# Python 3.9 floor guard (single Linux leg): mypy >= 2.2 can no
# longer type-check with python_version = "3.9", so this runtime
# leg is the floor's only continuous CI coverage.
- os: ubuntu-latest
- os: ubuntu-24.04
python-version: '3.9'

steps:
Expand Down Expand Up @@ -264,7 +264,7 @@ jobs:
|| (contains(github.event.pull_request.labels.*.name, 'ready-for-ci')
&& (github.event.action != 'labeled' && github.event.action != 'unlabeled'
|| github.event.label.name == 'ready-for-ci'))
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

Expand Down
18 changes: 18 additions & 0 deletions docs/dev-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,24 @@ Linux.
- **Long-term:** revert to the `@` operator when numpy ≥ 2.3 becomes the minimum supported
version.

## GitHub-hosted runners pinned to `ubuntu-24.04`

Every workflow's Linux job uses `runs-on: ubuntu-24.04`, not `ubuntu-latest` (pinned
2026-10-25). GitHub is migrating `ubuntu-latest` to Ubuntu 26.04 gradually (2026-10-19 to
2026-11-19); this repository's runs flipped on 2026-10-24 (#867's review ran on 24.04 on
10-23, #868's on 26.04 on 10-24) and two things broke on the new image:

- `openai/codex-action`'s `drop-sudo` safety strategy fails before codex starts (`runner is
not a member of the sudo group` / `Could not restrict access to
/run/dbus/system_bus_socket`; upstream
[codex-action#188](https://github.com/openai/codex-action/issues/188)), so the AI PR
review job died in under a second and posted nothing.
- `actions/python-versions` ships Python 3.9 builds for Ubuntu 22.04 and 24.04 only, so the
3.9 floor leg of the test matrix (and the 3.9 wheel-test leg) cannot set up on 26.04.

Un-pin only after both are fixed upstream and verified on a throwaway branch. The ARM
matrix entries already used the GitHub-hosted `ubuntu-24.04-arm` label and are unchanged.

## MMM tutorial environments (notebooks 29 / 30)

The two executed MMM calibration tutorials need frameworks that CANNOT share one
Expand Down
Loading