Daily now refreshes the 15 oldest watchlist pros, keeps prior cache for the
rest, fails fast on consecutive 429s, and still writes a partial result.
Co-authored-by: Cursor <cursoragent@cursor.com>
v4 is unsupported on this Gitea host and was failing the job after a successful refresh; keep continue-on-error so summary upload cannot mask refresh success.
Co-authored-by: Cursor <cursoragent@cursor.com>
Linux self-hosted runners without python3-venv fail job-local venv; use pip --break-system-packages so refresh can still install deps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a job-local venv so pip install no longer fails with externally-managed-environment on the Mac mini runner.
Co-authored-by: Cursor <cursoragent@cursor.com>