Roll recipe dependencies (nontrivial).

This is an automated CL created by the recipe roller. This CL rolls recipe
changes from upstream projects (e.g. depot_tools) into downstream projects
(e.g. tools/build).


Please review the expectation changes, and LGTM+CQ.


More info is at https://goo.gl/zkKdpD. Use https://goo.gl/noib3a to file a bug.
build:
  https://crrev.com/06e6b3accc66f6c31053055c8e0efcd978f18b03 Implement a generic postprocess/merge hook for swarming tasks. (RELAND 4) (jbudorick@chromium.org)


Change-Id: Ib62301f7336873f022cd5a7efe8df577c1414689
Recipe-Tryjob-Bypass-Reason: Autoroller
Bugdroid-Send-Email: False
Reviewed-on: https://skia-review.googlesource.com/13775
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
diff --git a/infra/bots/recipes.py b/infra/bots/recipes.py
index 7bb2c1f..dc7077b 100755
--- a/infra/bots/recipes.py
+++ b/infra/bots/recipes.py
@@ -102,7 +102,7 @@
   any, or None if the user didn't override it."""
   PREFIX = 'recipe_engine='
 
-  p = argparse.ArgumentParser(add_help=False)
+  p = argparse.ArgumentParser()
   p.add_argument('-O', '--project-override', action='append')
   args, _ = p.parse_known_args(argv)
   for override in args.project_override or ():
diff --git a/infra/bots/recipes/ct_skps.expected/CT_CPU_BENCH_10k_SKPs.json b/infra/bots/recipes/ct_skps.expected/CT_CPU_BENCH_10k_SKPs.json
index f148514..ead01e7 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_CPU_BENCH_10k_SKPs.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_CPU_BENCH_10k_SKPs.json
@@ -1211,6 +1211,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1220,13 +1232,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-1/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-1/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1345,6 +1358,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1354,13 +1379,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-2/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-2/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1479,6 +1505,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1488,13 +1526,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-3/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-3/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1613,6 +1652,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1622,13 +1673,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-4/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-4/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1747,6 +1799,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1756,13 +1820,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-5/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-5/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_DM_100k_SKPs.json b/infra/bots/recipes/ct_skps.expected/CT_DM_100k_SKPs.json
index 2cb7ff5..1db16eb 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_DM_100k_SKPs.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_DM_100k_SKPs.json
@@ -1211,6 +1211,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1220,13 +1232,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\", \"tasks\": {\"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1276,6 +1289,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1285,13 +1310,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\", \"tasks\": {\"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1341,6 +1367,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1350,13 +1388,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\", \"tasks\": {\"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1406,6 +1445,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1415,13 +1466,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\", \"tasks\": {\"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1471,6 +1523,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1480,13 +1544,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\", \"tasks\": {\"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_DM_10k_SKPs.json b/infra/bots/recipes/ct_skps.expected/CT_DM_10k_SKPs.json
index 0a03633..ed443e8 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_DM_10k_SKPs.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_DM_10k_SKPs.json
@@ -1211,6 +1211,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1220,13 +1232,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\", \"tasks\": {\"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1276,6 +1289,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1285,13 +1310,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\", \"tasks\": {\"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1341,6 +1367,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1350,13 +1388,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\", \"tasks\": {\"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1406,6 +1445,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1415,13 +1466,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\", \"tasks\": {\"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1471,6 +1523,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1480,13 +1544,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\", \"tasks\": {\"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_DM_10k_SKPs_Trybot.json b/infra/bots/recipes/ct_skps.expected/CT_DM_10k_SKPs_Trybot.json
index 0e3ecb4..5dd02ea 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_DM_10k_SKPs_Trybot.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_DM_10k_SKPs_Trybot.json
@@ -1235,6 +1235,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1244,13 +1256,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\", \"tasks\": {\"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1300,6 +1313,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1309,13 +1334,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\", \"tasks\": {\"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1365,6 +1391,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1374,13 +1412,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\", \"tasks\": {\"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1430,6 +1469,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1439,13 +1490,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\", \"tasks\": {\"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1495,6 +1547,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1504,13 +1568,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\", \"tasks\": {\"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_10k_SKPs-Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs.json b/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs.json
index 1c12f21..c9e5f0d 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs.json
@@ -1211,6 +1211,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1220,13 +1232,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1276,6 +1289,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1285,13 +1310,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1341,6 +1367,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1350,13 +1388,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1406,6 +1445,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1415,13 +1466,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1471,6 +1523,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1480,13 +1544,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs_2slaves_failure.json b/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs_2slaves_failure.json
index ce91cc7..7e443f6 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs_2slaves_failure.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs_2slaves_failure.json
@@ -1211,6 +1211,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1220,14 +1232,15 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-1",
     "~followup_annotations": [
       "step returned non-zero exit code: 1",
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1280,6 +1293,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1289,13 +1314,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1345,6 +1371,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1354,14 +1392,15 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-3",
     "~followup_annotations": [
       "step returned non-zero exit code: 1",
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1414,6 +1453,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1423,13 +1474,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1479,6 +1531,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1488,13 +1552,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs_slave3_failure.json b/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs_slave3_failure.json
index f2dcb11..c2ebcd0 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs_slave3_failure.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_DM_1m_SKPs_slave3_failure.json
@@ -1211,6 +1211,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1220,13 +1232,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1276,6 +1289,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1285,13 +1310,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1341,6 +1367,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1350,14 +1388,15 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-3",
     "~followup_annotations": [
       "step returned non-zero exit code: 1",
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1410,6 +1449,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1419,13 +1470,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1475,6 +1527,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1484,13 +1548,14 @@
       "--json",
       "{\"base_task_name\": \"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\", \"tasks\": {\"ct-dm-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_DM_1m_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-dm-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-dm-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_GPU_BENCH_10k_SKPs.json b/infra/bots/recipes/ct_skps.expected/CT_GPU_BENCH_10k_SKPs.json
index f79abc7..2b3ae23 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_GPU_BENCH_10k_SKPs.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_GPU_BENCH_10k_SKPs.json
@@ -1226,6 +1226,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1235,13 +1247,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-1/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-1/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1360,6 +1373,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1369,13 +1394,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-2/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-2/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1494,6 +1520,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1503,13 +1541,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-3/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-3/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1628,6 +1667,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1637,13 +1688,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-4/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-4/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1762,6 +1814,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1771,13 +1835,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-5/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\", \"tasks\": {\"ct-nanobench-5/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_GPU_BENCH_1k_SKPs.json b/infra/bots/recipes/ct_skps.expected/CT_GPU_BENCH_1k_SKPs.json
index 456e8eb..7da69c3 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_GPU_BENCH_1k_SKPs.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_GPU_BENCH_1k_SKPs.json
@@ -1226,6 +1226,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1235,13 +1247,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-1/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\", \"tasks\": {\"ct-nanobench-1/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1360,6 +1373,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1369,13 +1394,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-2/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\", \"tasks\": {\"ct-nanobench-2/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1494,6 +1520,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1503,13 +1541,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-3/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\", \"tasks\": {\"ct-nanobench-3/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1628,6 +1667,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1637,13 +1688,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-4/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\", \"tasks\": {\"ct-nanobench-4/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1762,6 +1814,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1771,13 +1835,14 @@
       "--json",
       "{\"base_task_name\": \"ct-nanobench-5/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\", \"tasks\": {\"ct-nanobench-5/Ubuntu-14.04/[dummy has/Perf-Ubuntu-GCC-Golo-GPU-GT610-x86_64-Release-CT_BENCH_1k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-nanobench-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-nanobench-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_100k_SKPs.json b/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_100k_SKPs.json
index be747af..295b026 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_100k_SKPs.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_100k_SKPs.json
@@ -1211,6 +1211,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1220,13 +1232,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1276,6 +1289,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1285,13 +1310,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1341,6 +1367,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1350,13 +1388,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1406,6 +1445,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1415,13 +1466,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1471,6 +1523,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1480,13 +1544,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_100k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_10k_SKPs.json b/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_10k_SKPs.json
index 9235c24..271bcfa 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_10k_SKPs.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_10k_SKPs.json
@@ -1211,6 +1211,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1220,13 +1232,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1276,6 +1289,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1285,13 +1310,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1341,6 +1367,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1350,13 +1388,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1406,6 +1445,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1415,13 +1466,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1471,6 +1523,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1480,13 +1544,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\", \"tasks\": {\"ct-get_images_from_skps-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs/-1\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_10k_SKPs_Trybot.json b/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_10k_SKPs_Trybot.json
index f8b4dac..c045923 100644
--- a/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_10k_SKPs_Trybot.json
+++ b/infra/bots/recipes/ct_skps.expected/CT_IMG_DECODE_10k_SKPs_Trybot.json
@@ -1245,6 +1245,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-1",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1254,13 +1266,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\", \"tasks\": {\"ct-get_images_from_skps-1/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-1"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-1",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1310,6 +1323,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-2",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1319,13 +1344,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\", \"tasks\": {\"ct-get_images_from_skps-2/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-2"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-2",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1375,6 +1401,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-3",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1384,13 +1422,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\", \"tasks\": {\"ct-get_images_from_skps-3/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-3"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-3",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1440,6 +1479,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-4",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1449,13 +1500,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\", \"tasks\": {\"ct-get_images_from_skps-4/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-4"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-4",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
@@ -1505,6 +1557,18 @@
     "cmd": [
       "python",
       "-u",
+      "RECIPE_MODULE[build::swarming]/resources/collect_task.py",
+      "-o",
+      "/path/to/tmp/json",
+      "--task-output-dir",
+      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-5",
+      "--merge-script",
+      "RECIPE_MODULE[build::swarming]/resources/noop_merge.py",
+      "--merge-additional-args",
+      "[]",
+      "--",
+      "python",
+      "-u",
       "[START_DIR]/swarming.client/swarming.py",
       "collect",
       "--swarming",
@@ -1514,13 +1578,14 @@
       "--json",
       "{\"base_task_name\": \"ct-get_images_from_skps-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\", \"tasks\": {\"ct-get_images_from_skps-5/Ubuntu-14.04/[dummy has/Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Debug-CT_IMG_DECODE_10k_SKPs_Trybot/571\": {\"shard_index\": 0, \"task_id\": \"10000\", \"view_url\": \"https://chromium-swarm.appspot.com/user/task/10000\"}}}",
       "--task-summary-json",
-      "/path/to/tmp/json",
-      "--task-output-dir",
-      "[START_DIR]/swarming_temp_dir/outputs/ct-get_images_from_skps-5"
+      "/path/to/tmp/json"
     ],
+    "cwd": "[START_DIR]",
     "name": "ct-get_images_from_skps-5",
     "~followup_annotations": [
       "@@@STEP_TEXT@Run on OS: 'Ubuntu-14.04'<br>swarming pending 71s@@@",
+      "@@@STEP_LOG_LINE@json.output@{}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
       "@@@STEP_LOG_LINE@swarming.summary@{@@@",
       "@@@STEP_LOG_LINE@swarming.summary@  \"shards\": [@@@",
       "@@@STEP_LOG_LINE@swarming.summary@    {@@@",
diff --git a/infra/config/recipes.cfg b/infra/config/recipes.cfg
index 97cba0a..6f851c1 100644
--- a/infra/config/recipes.cfg
+++ b/infra/config/recipes.cfg
@@ -15,7 +15,7 @@
     {
       "branch": "master",
       "project_id": "build",
-      "revision": "f7b41106d64b6517c67343f2cfb03f4a9d62afc2",
+      "revision": "06e6b3accc66f6c31053055c8e0efcd978f18b03",
       "url": "https://chromium.googlesource.com/chromium/tools/build.git"
     },
     {