Replace the setState-during-render pattern in PlanTasksFetcher with a useEffect hook. The onTasks callback was being called directly in the render body when tasksQuery.isSuccess was true, which could cause infinite re-render loops when the parent state update triggered a re-render. Now data flows through useEffect with proper dependencies.