This PR changes the behaviour of most service methods: instead of returning a task, they now return a task specification. It is then the caller's responsibility to create a task from the specification. Introducing a layer of indirection allows the task group constructor to use the specifications to help construct the group, e.g. naming the group, and whether to respect module dependencies, etc.
This PR changes the behaviour of most service methods: instead of returning a task, they now return a task specification. It is then the caller's responsibility to create a task from the specification. Introducing a layer of indirection allows the task group constructor to use the specifications to help construct the group, e.g. naming the group, and whether to respect module dependencies, etc.