I think the hierarchy is still a tree, but a failure notifies all ancestors, which in combination with having multiple children that might all have failed leads to a directed graph of failure propagations. :)

At the moment this is not a problem because that part of the task unwinding system uses a boolean `success` flag, which means all the various combinations just lead to a few `AND`s and `OR`s, and a lot of refactoring would be necessary if you wanted to use a sendable type there.