fix(macos): py2app — drop universal2 default + deprecated setup_requires #11
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Lint & Test | |
| # Required PR check: compliance greps, Python tests, Rust tests. | |
| # Runs on every PR + on pushes to main/development branches. | |
| # Fast — runs on ubuntu-latest, no macOS minutes. | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| - 'claude/**' | |
| jobs: | |
| python: | |
| name: Python tests + compliance | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Install Python deps | |
| run: | | |
| python -m pip install --upgrade pip | |
| # Core runtime + dev deps (sufficient for compliance + the | |
| # unit tests that don't need the ML extras). | |
| python -m pip install \ | |
| click jsonschema numpy pyyaml pydantic mcp \ | |
| pytest pytest-timeout | |
| - name: Build Rust hot path | |
| # maturin develop requires an active virtualenv; CI runners | |
| # don't have one. pip install -e . goes through maturin via | |
| # the PEP 517 build backend and works without a venv. --no-deps | |
| # skips the heavy pyproject.toml runtime deps (onnxruntime, | |
| # transformers, xgboost) which the next step doesn't need. | |
| run: | | |
| python -m pip install --upgrade pip maturin | |
| python -m pip install --no-deps -e . | |
| python -c "import harlo.hippocampus; print('hippocampus OK')" | |
| - name: harlo doctor --strict | |
| # Replaces the previous standalone bash compliance grep step, | |
| # which produced false positives on legitimate `//!` Rust | |
| # doc-comments mentioning the forbidden tokens. The doctor's | |
| # compliance check uses the same comment/test-name filter as | |
| # tests/test_integration/test_compliance.py, so the two layers | |
| # below — doctor here + pytest below — fully cover every | |
| # CLAUDE.md invariant with no false positives. | |
| # Exercises the doctor module itself, not just the underlying | |
| # greps. Catches regressions in the doctor's compliance | |
| # filters / schema loader / launchd-status branches. | |
| run: PYTHONPATH=python python -m harlo.cli.main doctor --strict | |
| - name: Pytest | |
| # Excludes test dirs that require heavy / model-specific deps | |
| # (torch via sentence_transformers, onnxruntime, usd-core, | |
| # networkx, xgboost+model artifact, anthropic) or that are | |
| # known pre-existing failures unrelated to this PR | |
| # (test_observer, test_tactical). The lint job is deliberately | |
| # the lean, fast subset — the full suite runs locally via | |
| # `make verify` and on tag pushes via macos-build. | |
| run: | | |
| PYTHONPATH=python python -m pytest tests/ -q --timeout=60 \ | |
| --ignore=tests/test_onnx \ | |
| --ignore=tests/test_schedule \ | |
| --ignore=tests/test_sprint1 \ | |
| --ignore=tests/test_sprint3 \ | |
| --ignore=tests/test_sprint4 \ | |
| --ignore=tests/test_sprint5 \ | |
| --ignore=tests/test_recalibration \ | |
| --ignore=tests/test_observer \ | |
| --ignore=tests/test_tactical \ | |
| --ignore=tests/test_mcp \ | |
| --ignore=tests/test_provider \ | |
| --ignore=tests/test_path_c \ | |
| --ignore=tests/test_migrate_path_c \ | |
| --ignore=tests/test_federated_recall \ | |
| --ignore=tests/test_encoder | |
| rust: | |
| name: Rust tests | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: cargo test | |
| run: cargo test -p hippocampus --release | |
| signing-readiness: | |
| name: Signing-readiness pre-flight | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 5 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Python 3.12 | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install pyyaml | |
| run: python -m pip install pyyaml | |
| - name: Run readiness script | |
| run: bash scripts/check_signing_readiness.sh |