Schedule artifact transforms early (#5657) Schedule artifact transforms early when possible
Before this change artifact transforms were executed as late as possible, typically when snapshotting the task's input that would consume them. With this change artifact transforms are scheduled like tasks whenever possible, and are executed as soon as all their dependencies are built.
The execution engine now understands three different kinds of "work":
- tasks in the current build (this is the most typical type of work) - tasks from another included build referenced from the current build - artifact transforms discovered via task inputs
There are two kinds of artifact transforms that are not executed alongside tasks after this change:
- transforms that never appear in a task's (or another transform's) inputs - transforms that transform file dependencies
These cases are handled as before, i.e. the transforms are executed when they are consumed.
Some types have been introduced to cover the new concepts of work and transforms wrt building the graph of work. Several existing types are still have "task" in their names even though they now work with more than just tasks. These should be renamed/refactored in follow-up PRs.