Follow-up to PR #271 (self-hosted GHA runner migration, 2026-07-17). The bootstrap script only pre-caches Python 3.12 — same AL2023/actions-setup-python gotcha as morning-signal's companion issue. ci.yml's test job also uses runs-on: ${{ matrix.os }} (not a fixed ubuntu-latest) — check what OS values are in that matrix before assuming a single self-hosted label covers it. install-test.yml additionally runs matrix legs inside Docker containers (image: python:${{ matrix.python-version }}-slim) — self-hosted runners CAN run container jobs but need Docker installed on the box, which this bootstrap script does not currently do.
No job was repointed in PR #271 — ci.yml stays fully on ubuntu-latest except the concurrency-group fix.
Acceptance criteria: extend the bootstrap script for multi-version Python + Docker support as needed, verify via real live dispatch per job type, then repoint incrementally.
Follow-up to PR #271 (self-hosted GHA runner migration, 2026-07-17). The bootstrap script only pre-caches Python 3.12 — same AL2023/actions-setup-python gotcha as morning-signal's companion issue. ci.yml's test job also uses
runs-on: ${{ matrix.os }}(not a fixed ubuntu-latest) — check what OS values are in that matrix before assuming a single self-hosted label covers it. install-test.yml additionally runs matrix legs inside Docker containers (image: python:${{ matrix.python-version }}-slim) — self-hosted runners CAN run container jobs but need Docker installed on the box, which this bootstrap script does not currently do.No job was repointed in PR #271 — ci.yml stays fully on ubuntu-latest except the concurrency-group fix.
Acceptance criteria: extend the bootstrap script for multi-version Python + Docker support as needed, verify via real live dispatch per job type, then repoint incrementally.