Stop the long retry chain after three consecutive 429s and restore prior
hero cells so a burned IP no longer stalls the whole daily tier.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep restored cache and continue the tier so a burned runner IP cannot
block leaderboards, pro-match rotation, or streamer refresh.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>