Goal
Add macOS CI to the test matrix so we catch platform-specific issues (imports, path handling, binary deps) before they hit developers on Macs.
Approach
- Add a parallel macos-tests job to the existing docker.yml workflow
- Use GitHub-hosted macos-latest runner (M1 arm64, 3 CPU, 7GB RAM, 14GB SSD)
- No Docker containers — install uv directly, sync deps, run tests on bare metal
- Skip extras that have no macOS wheels: cuda, cpu, dds, unitree
- Run mypy + pytest (same markers as Linux: not (tool or mujoco))
- Gated on check-changes.outputs.tests == true (same trigger as Linux tests)
Storage Budget (14GB SSD)
- macOS image + preinstalled tools: ~5GB
- Repo checkout (no LFS): ~300MB
- Python venv (no cuda/nvidia): ~4-5GB
- Headroom: ~4GB
Extras Installed
--all-extras --no-extra cuda --no-extra cpu --no-extra dds --no-extra unitree
This gives us: agents, base, dev, docker, drone, manipulation, misc, perception, psql, sim, visualization, web.
Not in Scope
- macOS Intel runners (can add later)
- LFS data tests (pointer files only on CI, data tests are @slow)
- ROS-dependent tests (ROS not available on macOS)
Risk
- 14GB SSD is tight with torch (~800MB macOS CPU). Monitor disk usage.
- macOS minutes cost 10x Linux on private repos. Keep test suite lean.
Synced from DIM-696
Goal
Add macOS CI to the test matrix so we catch platform-specific issues (imports, path handling, binary deps) before they hit developers on Macs.
Approach
Storage Budget (14GB SSD)
Extras Installed
--all-extras --no-extra cuda --no-extra cpu --no-extra dds --no-extra unitree
This gives us: agents, base, dev, docker, drone, manipulation, misc, perception, psql, sim, visualization, web.
Not in Scope
Risk
Synced from DIM-696