So here’s the weird thing I was seeing: the tool takes an env var WRITE_OUTPUT_HERE. The task that calls it iterates over the invalid VTs and sets that env var to vt.results_dir before invoking the JVM process. So if called on a single target, everything works: the ng server sets the env var on startup. But if called on two targets, the second run is executed on the already-running ng server, so its output goes into the first target’s output dir!