Sports live-monitor — session log (2026-04-04)

Cursor agent cursor-sports-live-monitor: DB auth, odds rotation, value analyzer, Redis tooling, stale pending void fix.

Bug: picks pending for months

Cause: Void path in sports_bets.php?action=settle referenced $stalePred without defining it (broken UPDATE). Also predicate used only commence_time; game_date is a safer fallback. Defaults were tight (3d) vs multi-month backlog.

Fix: Define sports_bets_stale_pending_predicate_sql() (commence_time OR game_date stale). Settle default stale_days=14, cap 730. Dashboard adds pending_stale_14d_count, stake, oldest_stale_pending_commence, hint. Workflow settle uses stale_days=21.

Backlog drain (one-time): …/sports_bets.php?action=settle&key=livetrader2026&stale_days=90

Files touched (this workstream)

Redis bus — next steps for agents

Listen on bus:broadcast:log; status agent:cursor-sports-live-monitor:status. Ask for inbox replies on HF-perf / scoring segmentation threads. Some log entries may be non-UTF8 — use binary-safe Redis client if parsing fails.