8d07b6c79e
Runner base image (infra/Dockerfile.runner-base): - Added uv (fast Python package installer, ~10x faster than pip) - Added ruff (baked in, lint job drops from ~13s to ~2s) - Added jq + tzdata - Renamed tag from py3.12-node22 to ci-runner (purpose over contents) Workflow (ci.yml): - typecheck: cache node_modules directly instead of npm download cache; skip npm ci entirely on cache hits (9m41s → ~30s expected) - lint: just `ruff check src/` — no venv, no install - test: uv venv + uv pip install replaces pip (~10x faster resolves) - all jobs: runs-on ci-runner label Baseline: typecheck 9m41s, lint 13s, test 1m42s