11name : Test
22
3- # Spine contract tests (unit + parity). Separate from the release-only
4- # workflow.yml: this workflow has NO id-token permission, so OIDC trusted
5- # publishing stays isolated to the publisher (ARCHITECTURE.md §12).
3+ # TEMP DIAGNOSTIC: isolate why mlx-cpu aborts on Linux. Will be restored to the
4+ # real matrix once the setup fix is known.
65
76on :
87 push :
@@ -15,25 +14,29 @@ jobs:
1514 test :
1615 name : Unit + spine contracts
1716 runs-on : ubuntu-latest
18- strategy :
19- fail-fast : false
20- matrix :
21- python-version : ["3.9", "3.13"]
2217 steps :
2318 - uses : actions/checkout@v6
2419
2520 - name : Set up Python
2621 uses : actions/setup-python@v6
2722 with :
28- python-version : ${{ matrix.python-version }}
23+ python-version : " 3.12 "
2924
3025 - name : Install package + test deps
3126 run : |
3227 python -m pip install --upgrade pip
33- # On Linux the bare `mlx` wheel is a thin wrapper; the native libmlx.so
34- # backend ships separately. `mlx[cpu]` pulls the matching mlx-cpu build.
35- # (The [mlx] extra stays bare `mlx` so macOS installs the Metal backend.)
3628 python -m pip install -e ".[test]" "mlx[cpu]"
29+ python -m pip show mlx mlx-cpu 2>/dev/null | grep -E "^(Name|Version):" || true
3730
38- - name : Run tests
39- run : python -m pytest -q
31+ - name : mlx-cpu op probes
32+ continue-on-error : true
33+ run : |
34+ python -c "import mlx.core as mx; print('import OK')" || echo 'IMPORT ABORTED'
35+ python -c "import mlx.core as mx; mx.eval(mx.add(mx.ones((4,)), mx.ones((4,)))); print('add OK')" 2>&1 || echo 'add ABORTED'
36+ python -c "import mlx.core as mx; a=mx.random.normal((1,16,16,8)); w=mx.random.normal((4,3,3,8)); mx.eval(mx.conv2d(a,w)); print('conv2d OK')" 2>&1 || echo 'conv2d ABORTED'
37+ python -c "import mlx.core as mx; a=mx.random.normal((1,16,16,4)); w=mx.random.normal((4,3,3,4)); mx.eval(mx.conv_transpose2d(a,w)); print('conv_transpose2d OK')" 2>&1 || echo 'conv_transpose2d ABORTED'
38+ python -c "import mlx.core as mx; q=mx.random.normal((1,2,8,16)); mx.eval(mx.fast.scaled_dot_product_attention(q,q,q,scale=0.5)); print('sdpa OK')" 2>&1 || echo 'sdpa ABORTED'
39+
40+ - name : Single failing test (full stderr)
41+ continue-on-error : true
42+ run : python -m pytest tests/test_da3_parity.py -s -rA
0 commit comments