This allows us to calculate those directories only once, and just pass them around as necessary.
This way we can return more values without breaking callers.
Otherwise we risk tripping over confusing statuses where a build is "done" and "Cached", but we were expecting to run it.