The temp dir serves two key purposes - one is it makes sure there is no async hang up where the FS gets overloaded when lots of IO is occurring. The other objective is to reduce the amount of IO that needs to hit the disk in the first place.
The current implementation "overcopies" data when a clean level of 0 is set, where it ends up copying everything. This may be needed in a diagnostic scenario, but generally not what we'd want. We want the files that are kept/cleaned to be separated from which ones are streamed.
more details to come but want to put a placeholder