Problem: Once a pipeline completes (Monday), its 'completed' status
persists forever. Tuesday's run sees it as 'completed' and skips it.
Fix: Added reset_completed_pipelines() that:
- Tracks pipeline_reset_date in state
- On new day, resets 'completed' and 'failed' pipelines to 'not_started'
- Preserves 'running' pipelines (don't kill active work)
- Called at start of every run_scheduler() invocation
Also added pipeline_reset_date to default state dict.