I had tasks in some of my policies that failed even though deploying the task using jobs and tasks ran fine.
I ended up packaging these as software resources or patches and then added them to the updates for the relevenant software packages they were related to.
The other problem i found was when the policy checked if it was installed it then ran it again. Obviously validation was put in to stop it doing anything but it still ran every time.