Currently, Task statuses such as error are set upon the execution of a ProtocolDAG that throws an exception, but when a ProtocolDAG fails to be created for a given Task, no error status is raised. Instead, the compute service dies and the Task is returned to waiting.
Instead of this, we could have a Task's status set to error if the ProtocolDAG fails to create, and populate the Task's reason field with the content of the traceback. This same reason field could be optionally be populated with information from users when setting a Task to deleted or invalid.