Vault cooking tasks need to be able to "fail" for multiple reasons:
- the bundle can't be cooked (it exceeds some limitations like bundle size etc),
- the bundle temporarily can't be cooked (no space left on device because we did something wrong somewhere?)
- any unplanned exception that happens in the cooker (a bug in our code)
There are multiple ways to do this, the important question is to figure out when we should allow a failed bundle to be re-cooked.