This function should be able to accept a representation of a user-defined pipeline job and return a sequence of containers steps to launch in the appropriate order. Mounts should be included in the result as well.
Additionally, this algorithm should be independent enough so that we can easily write test cases for e.g. one for cartesian product, one for hadamard product, etc.