Update to use -real-build in different calls to led.

This is to start using -real-build consistently in recipe_testing.

Change-Id: I2972fbd324b15222b5509d88351b0c063f84a95f
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/50365
Commit-Queue: Godofredo Contreras <godofredoc@google.com>
Reviewed-by: Yusuf Mohsinally <mohsinally@google.com>
diff --git a/recipe_modules/recipe_testing/api.py b/recipe_modules/recipe_testing/api.py
index 53ada32..c79d99c 100644
--- a/recipe_modules/recipe_testing/api.py
+++ b/recipe_modules/recipe_testing/api.py
@@ -17,7 +17,7 @@
 )
 from PB.recipe_modules.flutter.recipe_testing import properties as properties_pb2
 from recipe_engine import recipe_api
-from RECIPE_MODULES.fuchsia.swarming_retry import api as swarming_retry_api
+from RECIPE_MODULES.flutter.swarming_retry import api as swarming_retry_api
 
 # The maximum amount of builds to go back through in buildbucket to find
 # a run that matches the current branch
@@ -227,7 +227,9 @@
     builder = orig_build.builder
     # By default the priority is increased by 10 (resulting in a "lower"
     # priority), but we want it to stay the same.
-    led_data = self.m.led("get-build", "-adjust-priority", "0", orig_build.id)
+    led_data = self.m.led(
+        "get-build", "-real-build", "-adjust-priority", "0", orig_build.id
+    )
 
     build = Build(api=self.m, name=builder.builder, led_data=led_data)
 
diff --git a/recipe_modules/recipe_testing/test_api.py b/recipe_modules/recipe_testing/test_api.py
index be89083..6cba64f 100644
--- a/recipe_modules/recipe_testing/test_api.py
+++ b/recipe_modules/recipe_testing/test_api.py
@@ -19,7 +19,7 @@
 MAX_BUILD_AGE_SECONDS = int(datetime.timedelta(days=28).total_seconds())
 
 
-class RecipeTestingTestApi(recipe_test_api.RecipeTestApi):
+class FlutterRecipeTestingTestApi(recipe_test_api.RecipeTestApi):
 
   def project(
       self,
@@ -166,14 +166,6 @@
 
     return res
 
-  def task_result(self, task_id, name, failed=False):
-    return self.m.swarming.task_result(
-        id=task_id,
-        name="recipes-cq:%s" % name,
-        state=None if not name else self.m.swarming.TaskState.COMPLETED,
-        failure=failed,
-    )
-
   def existing_green_tryjobs(self, tryjobs):
     search_results = []
     for builder_name in tryjobs:
diff --git a/recipe_modules/recipe_testing/tests/full.expected/no_latest_cl.json b/recipe_modules/recipe_testing/tests/full.expected/no_latest_cl.json
index c924780..7b416d8 100644
--- a/recipe_modules/recipe_testing/tests/full.expected/no_latest_cl.json
+++ b/recipe_modules/recipe_testing/tests/full.expected/no_latest_cl.json
@@ -342,6 +342,7 @@
     "cmd": [
       "led",
       "get-build",
+      "-real-build",
       "-adjust-priority",
       "0",
       "200"
@@ -945,6 +946,7 @@
     "cmd": [
       "led",
       "get-build",
+      "-real-build",
       "-adjust-priority",
       "0",
       "100"
@@ -1337,14 +1339,14 @@
     "name": "launch/collect.0.launch.fuchsia/try/core.arm64-debug (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://luci-milo.appspot.com/swarming/task/200?server=example.swarmingserver.appspot.com@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/200@@@"
     ]
   },
   {
     "cmd": [
       "led",
       "launch",
-      "-modernize"
+      "-real-build"
     ],
     "infra_step": true,
     "luci_context": {
@@ -1364,13 +1366,13 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"example.swarmingserver.appspot.com\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"task_id\": \"200\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 200,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
       "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=200@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/200@@@"
     ]
   },
   {
@@ -1378,14 +1380,14 @@
     "name": "launch/collect.0.launch.fuchsia/try/core.x64-debug (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://luci-milo.appspot.com/swarming/task/100?server=example.swarmingserver.appspot.com@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
     "cmd": [
       "led",
       "launch",
-      "-modernize"
+      "-real-build"
     ],
     "infra_step": true,
     "luci_context": {
@@ -1405,33 +1407,32 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"example.swarmingserver.appspot.com\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"task_id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 100,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
       "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/100@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100",
+      "200"
     ],
     "infra_step": true,
     "luci_context": {
@@ -1446,23 +1447,18 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
     "luci_context": {
@@ -1477,112 +1473,46 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"200\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100",
-      "200"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "fuchsia:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"recipes-cq:fuchsia/try/core.x64-debug\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": 100@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"200\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"200\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"recipes-cq:fuchsia/try/core.arm64-debug\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": 200@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;core.arm64-debug@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;core.arm64-debug@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;core.x64-debug@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;core.x64-debug@@@",
-      "@@@STEP_LINK@task cas outputs: recipes-cq:fuchsia/try/core.arm64-debug@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: recipes-cq:fuchsia/try/core.x64-debug@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"200\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@",
+      "@@@STEP_LINK@200@https://cr-buildbucket.appspot.com/build/200@@@"
     ]
   },
   {
@@ -1594,14 +1524,14 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.recipes-cq:fuchsia/try/core.arm64-debug",
+    "name": "launch/collect.0.process results.",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.recipes-cq:fuchsia/try/core.x64-debug",
+    "name": "launch/collect.0.process results. (2)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -1611,8 +1541,8 @@
     "name": "launch/collect.0.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@fuchsia/try/core.arm64-debug (attempt 0)@https://luci-milo.appspot.com/swarming/task/200?server=example.swarmingserver.appspot.com@@@",
-      "@@@STEP_LINK@fuchsia/try/core.x64-debug (attempt 0)@https://luci-milo.appspot.com/swarming/task/100?server=example.swarmingserver.appspot.com@@@"
+      "@@@STEP_LINK@fuchsia/try/core.x64-debug (attempt 0)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@fuchsia/try/core.arm64-debug (attempt 0)@https://buildbucket@appspot.com/build/200@@@"
     ]
   },
   {
@@ -1627,8 +1557,7 @@
     "name": "passes.fuchsia/try/core.arm64-debug",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://luci-milo.appspot.com/swarming/task/200?server=example.swarmingserver.appspot.com@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/200@@@"
     ]
   },
   {
@@ -1636,8 +1565,7 @@
     "name": "passes.fuchsia/try/core.x64-debug",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://luci-milo.appspot.com/swarming/task/100?server=example.swarmingserver.appspot.com@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
diff --git a/recipe_modules/recipe_testing/tests/full.expected/recipes.json b/recipe_modules/recipe_testing/tests/full.expected/recipes.json
index 814519a..e02dd85 100644
--- a/recipe_modules/recipe_testing/tests/full.expected/recipes.json
+++ b/recipe_modules/recipe_testing/tests/full.expected/recipes.json
@@ -297,6 +297,7 @@
     "cmd": [
       "led",
       "get-build",
+      "-real-build",
       "-adjust-priority",
       "0",
       "100"
@@ -697,14 +698,14 @@
     "name": "launch/collect.0.launch.fuchsia/try/recipes (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://luci-milo.appspot.com/swarming/task/100?server=example.swarmingserver.appspot.com@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
     "cmd": [
       "led",
       "launch",
-      "-modernize"
+      "-real-build"
     ],
     "infra_step": true,
     "luci_context": {
@@ -724,33 +725,31 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"example.swarmingserver.appspot.com\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"task_id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 100,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
       "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/100@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100"
     ],
     "infra_step": true,
     "luci_context": {
@@ -765,23 +764,18 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
     "luci_context": {
@@ -796,86 +790,33 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "fuchsia:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"recipes-cq:fuchsia/try/recipes\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": 100@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;recipes@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;recipes@@@",
-      "@@@STEP_LINK@task cas outputs: recipes-cq:fuchsia/try/recipes@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -887,7 +828,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.recipes-cq:fuchsia/try/recipes",
+    "name": "launch/collect.0.process results.",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -897,7 +838,7 @@
     "name": "launch/collect.0.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@fuchsia/try/recipes (attempt 0)@https://luci-milo.appspot.com/swarming/task/100?server=example.swarmingserver.appspot.com@@@"
+      "@@@STEP_LINK@fuchsia/try/recipes (attempt 0)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
@@ -912,8 +853,7 @@
     "name": "passes.fuchsia/try/recipes",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://luci-milo.appspot.com/swarming/task/100?server=example.swarmingserver.appspot.com@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
diff --git a/recipe_modules/recipe_testing/tests/full.expected/two_pass_one_skip.json b/recipe_modules/recipe_testing/tests/full.expected/two_pass_one_skip.json
index ee423de..2c21af8 100644
--- a/recipe_modules/recipe_testing/tests/full.expected/two_pass_one_skip.json
+++ b/recipe_modules/recipe_testing/tests/full.expected/two_pass_one_skip.json
@@ -346,6 +346,7 @@
     "cmd": [
       "led",
       "get-build",
+      "-real-build",
       "-adjust-priority",
       "0",
       "200"
@@ -1160,6 +1161,7 @@
     "cmd": [
       "led",
       "get-build",
+      "-real-build",
       "-adjust-priority",
       "0",
       "100"
@@ -1560,14 +1562,14 @@
     "name": "launch/collect.0.launch.fuchsia/try/core.arm64-debug (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://luci-milo.appspot.com/swarming/task/200?server=example.swarmingserver.appspot.com@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/200@@@"
     ]
   },
   {
     "cmd": [
       "led",
       "launch",
-      "-modernize"
+      "-real-build"
     ],
     "infra_step": true,
     "luci_context": {
@@ -1587,13 +1589,13 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"example.swarmingserver.appspot.com\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"task_id\": \"200\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 200,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
       "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=200@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/200@@@"
     ]
   },
   {
@@ -1601,14 +1603,14 @@
     "name": "launch/collect.0.launch.fuchsia/try/core.x64-debug (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://luci-milo.appspot.com/swarming/task/100?server=example.swarmingserver.appspot.com@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
     "cmd": [
       "led",
       "launch",
-      "-modernize"
+      "-real-build"
     ],
     "infra_step": true,
     "luci_context": {
@@ -1628,33 +1630,32 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"example.swarmingserver.appspot.com\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"task_id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 100,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
       "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/100@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100",
+      "200"
     ],
     "infra_step": true,
     "luci_context": {
@@ -1669,23 +1670,18 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
     "luci_context": {
@@ -1700,112 +1696,46 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"200\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100",
-      "200"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "fuchsia:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"recipes-cq:fuchsia/try/core.x64-debug\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": 100@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"200\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"200\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"recipes-cq:fuchsia/try/core.arm64-debug\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": 200@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;core.arm64-debug@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;core.arm64-debug@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;core.x64-debug@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: recipes-cq:fuchsia&#x2f;try&#x2f;core.x64-debug@@@",
-      "@@@STEP_LINK@task cas outputs: recipes-cq:fuchsia/try/core.arm64-debug@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: recipes-cq:fuchsia/try/core.x64-debug@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"200\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@",
+      "@@@STEP_LINK@200@https://cr-buildbucket.appspot.com/build/200@@@"
     ]
   },
   {
@@ -1817,14 +1747,14 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.recipes-cq:fuchsia/try/core.arm64-debug",
+    "name": "launch/collect.0.process results.",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.recipes-cq:fuchsia/try/core.x64-debug",
+    "name": "launch/collect.0.process results. (2)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -1834,8 +1764,8 @@
     "name": "launch/collect.0.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@fuchsia/try/core.arm64-debug (attempt 0)@https://luci-milo.appspot.com/swarming/task/200?server=example.swarmingserver.appspot.com@@@",
-      "@@@STEP_LINK@fuchsia/try/core.x64-debug (attempt 0)@https://luci-milo.appspot.com/swarming/task/100?server=example.swarmingserver.appspot.com@@@"
+      "@@@STEP_LINK@fuchsia/try/core.x64-debug (attempt 0)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@fuchsia/try/core.arm64-debug (attempt 0)@https://buildbucket@appspot.com/build/200@@@"
     ]
   },
   {
@@ -1850,8 +1780,7 @@
     "name": "passes.fuchsia/try/core.arm64-debug",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://luci-milo.appspot.com/swarming/task/200?server=example.swarmingserver.appspot.com@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/200@@@"
     ]
   },
   {
@@ -1859,8 +1788,7 @@
     "name": "passes.fuchsia/try/core.x64-debug",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://luci-milo.appspot.com/swarming/task/100?server=example.swarmingserver.appspot.com@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
diff --git a/recipe_modules/recipe_testing/tests/full.py b/recipe_modules/recipe_testing/tests/full.py
index a45900a..99351c3 100644
--- a/recipe_modules/recipe_testing/tests/full.py
+++ b/recipe_modules/recipe_testing/tests/full.py
@@ -10,10 +10,9 @@
 from PB.recipe_modules.flutter.recipe_testing.tests.full import InputProperties
 
 DEPS = [
+    "flutter/recipe_testing",
     "fuchsia/buildbucket_util",
     "fuchsia/commit_queue",
-    "flutter/recipe_testing",
-    "fuchsia/swarming_retry",
     "recipe_engine/json",
     "recipe_engine/path",
     "recipe_engine/properties",
@@ -106,11 +105,7 @@
       test.build_data(
           "fuchsia/try/core.x64-debug", "fuchsia", cl_cached=True, fake_id=100
       ) +
-      test.build_data("fuchsia/try/core.arm64-debug", "fuchsia", fake_id=200) +
-      api.swarming_retry.collect_data([
-          test.task_result(100, "fuchsia/try/core.x64-debug"),
-          test.task_result(200, "fuchsia/try/core.arm64-debug"),
-      ])
+      test.build_data("fuchsia/try/core.arm64-debug", "fuchsia", fake_id=200)
   )
 
   yield (
@@ -126,10 +121,7 @@
       api.buildbucket_util.test("recipes") + api.recipe_testing.options() +
       api.commit_queue.test_data(project, "recipes-only") +
       test.affected_recipes_data(["recipes"]) +
-      test.build_data("fuchsia/try/recipes", "recipes") +
-      api.swarming_retry.collect_data([
-          test.task_result(100, "fuchsia/try/recipes")
-      ])
+      test.build_data("fuchsia/try/recipes", "recipes")
   )
 
   yield (
@@ -184,10 +176,7 @@
           "fuchsia",
           num_log_entries=0,
           fake_id=200,
-      ) + api.swarming_retry.collect_data([
-          test.task_result(100, "fuchsia/try/core.x64-debug"),
-          test.task_result(200, "fuchsia/try/core.arm64-debug"),
-      ])
+      )
   )
 
   yield (
diff --git a/recipe_modules/subbuild/__init__.py b/recipe_modules/subbuild/__init__.py
index de39588..e4685f7 100644
--- a/recipe_modules/subbuild/__init__.py
+++ b/recipe_modules/subbuild/__init__.py
@@ -3,12 +3,9 @@
 # found in the LICENSE file.
 
 DEPS = [
-    "fuchsia/utils",
     "recipe_engine/buildbucket",
-    "recipe_engine/file",
     "recipe_engine/json",
     "recipe_engine/led",
-    "recipe_engine/path",
     "recipe_engine/properties",
     "recipe_engine/step",
     "recipe_engine/swarming",
diff --git a/recipe_modules/subbuild/api.py b/recipe_modules/subbuild/api.py
index bbfdb01..76435d3 100644
--- a/recipe_modules/subbuild/api.py
+++ b/recipe_modules/subbuild/api.py
@@ -246,10 +246,7 @@
         """
     if launched_by_led is None:
       launched_by_led = self.m.led.launched_by_led
-    if launched_by_led:
-      builds = self._collect_from_led(build_ids)
-    else:
-      builds = self._collect_from_buildbucket(build_ids, extra_fields)
+    builds = self._collect_from_buildbucket(build_ids, extra_fields)
     return collections.OrderedDict(
         sorted(builds.items(), key=lambda item: (item[1].builder, item[0]))
     )
@@ -267,25 +264,6 @@
           f"Subbuild did not set the {property_name!r} output property"
       )
 
-  def _collect_from_led(self, task_ids):
-    swarming_results = self.m.swarming.collect(
-        "collect", task_ids, output_dir=self.m.path["cleanup"]
-    )
-    builds = {}
-    for result in swarming_results:
-      task_id = result.id
-      # Led launch ensures this file is present in the task root dir.
-      build_proto_path = result.output_dir.join("build.proto.json")
-      build_proto = self.m.file.read_proto(
-          "read build.proto.json", build_proto_path, build_pb2.Build, "JSONPB"
-      )
-      builds[task_id] = SubbuildResult(
-          builder=build_proto.builder.builder,
-          build_id=task_id,
-          build_proto=build_proto,
-      )
-    return builds
-
   def _collect_from_buildbucket(self, build_ids, extra_fields):
     bb_fields = self.m.buildbucket.DEFAULT_FIELDS.union({
         "infra.swarming.task_id", "summary_markdown"
diff --git a/recipe_modules/subbuild/test_api.py b/recipe_modules/subbuild/test_api.py
index 624afc7..8d9e998 100644
--- a/recipe_modules/subbuild/test_api.py
+++ b/recipe_modules/subbuild/test_api.py
@@ -88,28 +88,23 @@
       self,
       builds,
       collect_step="build",
+      launch_step="build",
+      collect_attempt=1
   ):
     """Generates step data to schedule and collect from child builds.
 
         Args:
           builds (list(build_pb2.Build)): The builds to schedule and collect from.
         """
+    del launch_step
+    responses = []
     step_data = []
-    task_results = []
-    i = 0
     for build in builds:
-      i += 1
-      suffix = ""
-      if i > 1:
-        suffix = f" ({int(i)})"
-
-      task_id = f"fake-task-id-{int(i)}"
-
-      # led launch mock will take ....infra.swarming.task_id as this
-      # build's launched swarming ID.
+      responses.append(
+          dict(schedule_build=dict(id=build.id, builder=build.builder))
+      )
       jd = job_pb2.Definition()
       jd.buildbucket.bbagent_args.build.CopyFrom(build)
-      jd.buildbucket.bbagent_args.build.infra.swarming.task_id = task_id
       step_data.append(
           self.m.led.mock_get_builder(
               jd,
@@ -118,17 +113,11 @@
               build.builder.builder,
           )
       )
-      task_results.append(
-          self.m.swarming.task_result(id=task_id, name=build.builder.builder)
-      )
-      step_data.append(
-          self.step_data(
-              f"{collect_step}.read build.proto.json{suffix}",
-              self.m.file.read_proto(build),
-          )
-      )
-    ret = self.step_data(
-        f"{collect_step}.collect", self.m.swarming.collect(task_results)
+
+    index = "" if collect_attempt <= 1 else (f" ({collect_attempt})")
+    ret = self.m.buildbucket.simulated_collect_output(
+        step_name=f"{collect_step}.collect{index}",
+        builds=builds,
     )
     for s in step_data:
       ret += s
diff --git a/recipe_modules/subbuild/tests/full.expected/launch_builds_with_led_ci.json b/recipe_modules/subbuild/tests/full.expected/launch_builds_with_led_ci.json
index 5b88203..dbcf011 100644
--- a/recipe_modules/subbuild/tests/full.expected/launch_builds_with_led_ci.json
+++ b/recipe_modules/subbuild/tests/full.expected/launch_builds_with_led_ci.json
@@ -48,7 +48,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-1\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -96,7 +96,7 @@
       }
     },
     "name": "launch builds.led edit",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"ci\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n        \"id\": \"8945511751514863184\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863184\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-1\"\n          }\n        },\n        \"input\": {\n          \"gitiles_commit\": {\n            \"host\": \"chromium.googlesource.com\",\n            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n            \"project\": \"fuchsia\",\n            \"ref\": \"refs/heads/main\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\"\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"ci\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n        \"id\": \"8945511751514863184\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863184\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gitiles_commit\": {\n            \"host\": \"chromium.googlesource.com\",\n            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n            \"project\": \"fuchsia\",\n            \"ref\": \"refs/heads/main\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\"\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -117,7 +117,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-1\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -194,7 +194,7 @@
       }
     },
     "name": "launch builds.led launch",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"ci\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n        \"id\": \"8945511751514863184\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863184\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-1\"\n          }\n        },\n        \"input\": {\n          \"gitiles_commit\": {\n            \"host\": \"chromium.googlesource.com\",\n            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n            \"project\": \"fuchsia\",\n            \"ref\": \"refs/heads/main\"\n          },\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"ci\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gitilesCommit\": {\n                    \"host\": \"fuchsia.googlesource.com\",\n                    \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n                    \"project\": \"fuchsia\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                }\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\"\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"ci\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n        \"id\": \"8945511751514863184\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863184\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gitiles_commit\": {\n            \"host\": \"chromium.googlesource.com\",\n            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n            \"project\": \"fuchsia\",\n            \"ref\": \"refs/heads/main\"\n          },\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"ci\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gitilesCommit\": {\n                    \"host\": \"fuchsia.googlesource.com\",\n                    \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n                    \"project\": \"fuchsia\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                }\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\"\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -248,7 +248,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-2\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -296,7 +296,7 @@
       }
     },
     "name": "launch builds.led edit (2)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"ci\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n        \"id\": \"8945511751514863185\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863185\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-2\"\n          }\n        },\n        \"input\": {\n          \"gitiles_commit\": {\n            \"host\": \"chromium.googlesource.com\",\n            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n            \"project\": \"fuchsia\",\n            \"ref\": \"refs/heads/main\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\"\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"ci\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n        \"id\": \"8945511751514863185\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863185\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gitiles_commit\": {\n            \"host\": \"chromium.googlesource.com\",\n            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n            \"project\": \"fuchsia\",\n            \"ref\": \"refs/heads/main\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\"\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -317,7 +317,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-2\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -394,7 +394,7 @@
       }
     },
     "name": "launch builds.led launch (2)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"ci\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n        \"id\": \"8945511751514863185\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863185\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-2\"\n          }\n        },\n        \"input\": {\n          \"gitiles_commit\": {\n            \"host\": \"chromium.googlesource.com\",\n            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n            \"project\": \"fuchsia\",\n            \"ref\": \"refs/heads/main\"\n          },\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"ci\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gitilesCommit\": {\n                    \"host\": \"fuchsia.googlesource.com\",\n                    \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n                    \"project\": \"fuchsia\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                }\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\"\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"ci\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n        \"id\": \"8945511751514863185\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863185\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gitiles_commit\": {\n            \"host\": \"chromium.googlesource.com\",\n            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n            \"project\": \"fuchsia\",\n            \"ref\": \"refs/heads/main\"\n          },\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"ci\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"user:luci-scheduler@appspot.gserviceaccount.com\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gitilesCommit\": {\n                    \"host\": \"fuchsia.googlesource.com\",\n                    \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",\n                    \"project\": \"fuchsia\",\n                    \"ref\": \"refs/heads/main\"\n                  }\n                }\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\"\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -413,22 +413,21 @@
   },
   {
     "cmd": [],
-    "name": "collect builds.install infra/tools/luci/swarming",
+    "name": "collect builds.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "20s",
+      "8945511751514863184",
+      "8945511751514863185"
     ],
     "infra_step": true,
     "luci_context": {
@@ -443,23 +442,18 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "collect builds.install infra/tools/luci/swarming.ensure package directory",
+    "name": "collect builds.collect.wait",
+    "timeout": 86400.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
     "luci_context": {
@@ -474,238 +468,104 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "collect builds.install infra/tools/luci/swarming.ensure_installed",
+    "name": "collect builds.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8945511751514863184\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8945511751514863185\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"ci\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder-subbuild1\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"fuchsia\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"user:luci-scheduler@appspot.gserviceaccount.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8945511751514863184\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30,@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"taskId\": \"abc123\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"host\": \"chromium.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"project\": \"fuchsia\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"output\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"test_orchestration_inputs_hash\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-output-dir",
-      "[CLEANUP]",
-      "8945511751514863184",
-      "8945511751514863185"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "fuchsia:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "collect builds.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"fake-task-id-1\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"builder-subbuild1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"fake-task-id-1\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"ci\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder-subbuild2\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"fuchsia\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"user:luci-scheduler@appspot.gserviceaccount.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8945511751514863185\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:8945511751514863185\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30,@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"taskId\": \"abc123\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gitilesCommit\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"host\": \"chromium.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"project\": \"fuchsia\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"ref\": \"refs/heads/main\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"output\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"test_orchestration_inputs_hash\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\"@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"fake-task-id-2\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"builder-subbuild2\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"fake-task-id-2\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: builder-subbuild1@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: builder-subbuild1@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: builder-subbuild2@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: builder-subbuild2@@@",
-      "@@@STEP_LINK@task cas outputs: builder-subbuild1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: builder-subbuild2@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CLEANUP]/fake-task-id-1/build.proto.json",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "fuchsia:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "collect builds.read build.proto.json",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@{@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"bucket\": \"ci\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"builder\": \"builder-subbuild1\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"project\": \"fuchsia\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"create_time\": \"2018-05-25T23:50:17Z\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"id\": \"8945511751514863184\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"infra\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"resultdb\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"invocation\": \"invocations/build:8945511751514863184\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"task_id\": \"abc123\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"input\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"gitiles_commit\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"host\": \"chromium.googlesource.com\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"project\": \"fuchsia\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"ref\": \"refs/heads/main\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"output\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"test_orchestration_inputs_hash\": \"abc\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"status\": \"SUCCESS\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@}@@@",
-      "@@@STEP_LOG_END@build.proto.json@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CLEANUP]/fake-task-id-2/build.proto.json",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "fuchsia:ci"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "collect builds.read build.proto.json (2)",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@{@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"bucket\": \"ci\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"builder\": \"builder-subbuild2\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"project\": \"fuchsia\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"create_time\": \"2018-05-25T23:50:17Z\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"created_by\": \"user:luci-scheduler@appspot.gserviceaccount.com\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"id\": \"8945511751514863185\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"infra\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"resultdb\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"invocation\": \"invocations/build:8945511751514863185\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"task_id\": \"abc123\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"input\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"gitiles_commit\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"host\": \"chromium.googlesource.com\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"id\": \"2d72510e447ab60a9728aeea2362d8be2cbd7789\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"project\": \"fuchsia\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"ref\": \"refs/heads/main\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"output\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"test_orchestration_inputs_hash\": \"abc\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"status\": \"SUCCESS\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@}@@@",
-      "@@@STEP_LOG_END@build.proto.json@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"8945511751514863184\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"8945511751514863185\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@8945511751514863184@https://cr-buildbucket.appspot.com/build/8945511751514863184@@@",
+      "@@@STEP_LINK@8945511751514863185@https://cr-buildbucket.appspot.com/build/8945511751514863185@@@"
     ]
   },
   {
diff --git a/recipe_modules/subbuild/tests/full.expected/launch_builds_with_led_cq.json b/recipe_modules/subbuild/tests/full.expected/launch_builds_with_led_cq.json
index 786a406..d42526a 100644
--- a/recipe_modules/subbuild/tests/full.expected/launch_builds_with_led_cq.json
+++ b/recipe_modules/subbuild/tests/full.expected/launch_builds_with_led_cq.json
@@ -48,7 +48,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-1\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -104,7 +104,7 @@
       }
     },
     "name": "launch builds.led edit",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863186\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863186\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-1\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"chromium-review.googlesource.com\",\n              \"patchset\": \"7\",\n              \"project\": \"fuchsia\"\n            }\n          ]\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863186\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863186\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"chromium-review.googlesource.com\",\n              \"patchset\": \"7\",\n              \"project\": \"fuchsia\"\n            }\n          ]\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -125,7 +125,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-1\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -217,7 +217,7 @@
       }
     },
     "name": "launch builds.led edit-cr-cl",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863186\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863186\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-1\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"chromium-review.googlesource.com\",\n              \"patchset\": \"7\",\n              \"project\": \"fuchsia\"\n            }\n          ],\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:fuchsia\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gerritChanges\": [\n                    {\n                      \"change\": \"123456\",\n                      \"host\": \"fuchsia-review.googlesource.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"fuchsia\"\n                    }\n                  ]\n                },\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863186\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863186\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"chromium-review.googlesource.com\",\n              \"patchset\": \"7\",\n              \"project\": \"fuchsia\"\n            }\n          ],\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:fuchsia\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gerritChanges\": [\n                    {\n                      \"change\": \"123456\",\n                      \"host\": \"fuchsia-review.googlesource.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"fuchsia\"\n                    }\n                  ]\n                },\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -238,7 +238,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-1\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -331,7 +331,7 @@
       }
     },
     "name": "launch builds.led launch",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863186\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863186\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-1\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"fuchsia-review.googlesource.com\",\n              \"patchset\": \"1337\",\n              \"project\": \"fuchsia\"\n            }\n          ],\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:fuchsia\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gerritChanges\": [\n                    {\n                      \"change\": \"123456\",\n                      \"host\": \"fuchsia-review.googlesource.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"fuchsia\"\n                    }\n                  ]\n                },\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild1\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863186\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863186\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"fuchsia-review.googlesource.com\",\n              \"patchset\": \"1337\",\n              \"project\": \"fuchsia\"\n            }\n          ],\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:fuchsia\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gerritChanges\": [\n                    {\n                      \"change\": \"123456\",\n                      \"host\": \"fuchsia-review.googlesource.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"fuchsia\"\n                    }\n                  ]\n                },\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -385,7 +385,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-2\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -441,7 +441,7 @@
       }
     },
     "name": "launch builds.led edit (2)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863187\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863187\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-2\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"chromium-review.googlesource.com\",\n              \"patchset\": \"7\",\n              \"project\": \"fuchsia\"\n            }\n          ]\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863187\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863187\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"chromium-review.googlesource.com\",\n              \"patchset\": \"7\",\n              \"project\": \"fuchsia\"\n            }\n          ]\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -462,7 +462,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-2\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -554,7 +554,7 @@
       }
     },
     "name": "launch builds.led edit-cr-cl (2)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863187\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863187\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-2\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"chromium-review.googlesource.com\",\n              \"patchset\": \"7\",\n              \"project\": \"fuchsia\"\n            }\n          ],\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:fuchsia\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gerritChanges\": [\n                    {\n                      \"change\": \"123456\",\n                      \"host\": \"fuchsia-review.googlesource.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"fuchsia\"\n                    }\n                  ]\n                },\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863187\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863187\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"chromium-review.googlesource.com\",\n              \"patchset\": \"7\",\n              \"project\": \"fuchsia\"\n            }\n          ],\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:fuchsia\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gerritChanges\": [\n                    {\n                      \"change\": \"123456\",\n                      \"host\": \"fuchsia-review.googlesource.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"fuchsia\"\n                    }\n                  ]\n                },\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@proto.output@{@@@",
@@ -575,7 +575,7 @@
       "@@@STEP_LOG_LINE@proto.output@          },@@@",
       "@@@STEP_LOG_LINE@proto.output@          \"swarming\": {@@@",
       "@@@STEP_LOG_LINE@proto.output@            \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"fake-task-id-2\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@            \"task_id\": \"abc123\"@@@",
       "@@@STEP_LOG_LINE@proto.output@          }@@@",
       "@@@STEP_LOG_LINE@proto.output@        },@@@",
       "@@@STEP_LOG_LINE@proto.output@        \"input\": {@@@",
@@ -668,7 +668,7 @@
       }
     },
     "name": "launch builds.led launch (2)",
-    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863187\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863187\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"fake-task-id-2\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"fuchsia-review.googlesource.com\",\n              \"patchset\": \"1337\",\n              \"project\": \"fuchsia\"\n            }\n          ],\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:fuchsia\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gerritChanges\": [\n                    {\n                      \"change\": \"123456\",\n                      \"host\": \"fuchsia-review.googlesource.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"fuchsia\"\n                    }\n                  ]\n                },\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"try\",\n          \"builder\": \"builder-subbuild2\",\n          \"project\": \"fuchsia\"\n        },\n        \"create_time\": \"2018-05-25T23:50:17Z\",\n        \"created_by\": \"project:fuchsia\",\n        \"id\": \"8945511751514863187\",\n        \"infra\": {\n          \"resultdb\": {\n            \"invocation\": \"invocations/build:8945511751514863187\"\n          },\n          \"swarming\": {\n            \"priority\": 30,\n            \"task_id\": \"abc123\"\n          }\n        },\n        \"input\": {\n          \"gerrit_changes\": [\n            {\n              \"change\": \"123456\",\n              \"host\": \"fuchsia-review.googlesource.com\",\n              \"patchset\": \"1337\",\n              \"project\": \"fuchsia\"\n            }\n          ],\n          \"properties\": {\n            \"$recipe_engine/buildbucket\": {\n              \"build\": {\n                \"builder\": {\n                  \"bucket\": \"try\",\n                  \"builder\": \"builder\",\n                  \"project\": \"fuchsia\"\n                },\n                \"createTime\": \"2018-05-25T23:50:17Z\",\n                \"createdBy\": \"project:fuchsia\",\n                \"executionTimeout\": \"36000s\",\n                \"id\": \"8945511751514863184\",\n                \"infra\": {\n                  \"resultdb\": {\n                    \"invocation\": \"invocations/build:8945511751514863184\"\n                  },\n                  \"swarming\": {\n                    \"priority\": 30.0\n                  }\n                },\n                \"input\": {\n                  \"gerritChanges\": [\n                    {\n                      \"change\": \"123456\",\n                      \"host\": \"fuchsia-review.googlesource.com\",\n                      \"patchset\": \"7\",\n                      \"project\": \"fuchsia\"\n                    }\n                  ]\n                },\n                \"tags\": [\n                  {\n                    \"key\": \"cq_experimental\",\n                    \"value\": \"false\"\n                  }\n                ]\n              }\n            },\n            \"integration_base_revision\": \"abc123\",\n            \"parent_id\": \"parentid\"\n          }\n        },\n        \"output\": {\n          \"properties\": {\n            \"test_orchestration_inputs_hash\": \"abc\"\n          }\n        },\n        \"status\": \"SUCCESS\",\n        \"tags\": [\n          {\n            \"key\": \"cq_experimental\",\n            \"value\": \"false\"\n          }\n        ]\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
@@ -687,22 +687,21 @@
   },
   {
     "cmd": [],
-    "name": "collect builds.install infra/tools/luci/swarming",
+    "name": "collect builds.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "20s",
+      "8945511751514863186",
+      "8945511751514863187"
     ],
     "infra_step": true,
     "luci_context": {
@@ -717,23 +716,18 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "collect builds.install infra/tools/luci/swarming.ensure package directory",
+    "name": "collect builds.collect.wait",
+    "timeout": 86400.0,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
     "luci_context": {
@@ -748,254 +742,120 @@
         "hostname": "rdbhost"
       }
     },
-    "name": "collect builds.install infra/tools/luci/swarming.ensure_installed",
+    "name": "collect builds.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8945511751514863186\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\", \"id\": \"8945511751514863187\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder-subbuild1\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"fuchsia\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:fuchsia\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8945511751514863186\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:8945511751514863186\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30,@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"taskId\": \"abc123\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"fuchsia\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"output\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"test_orchestration_inputs_hash\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-output-dir",
-      "[CLEANUP]",
-      "8945511751514863186",
-      "8945511751514863187"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "fuchsia:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "collect builds.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"fake-task-id-1\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"builder-subbuild1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"fake-task-id-1\"@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder-subbuild2\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"fuchsia\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:fuchsia\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"8945511751514863187\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:8945511751514863187\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30,@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"taskId\": \"abc123\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"fuchsia\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"output\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"properties\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"test_orchestration_inputs_hash\": \"abc\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"fake-task-id-2\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"builder-subbuild2\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"fake-task-id-2\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: builder-subbuild1@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: builder-subbuild1@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: builder-subbuild2@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: builder-subbuild2@@@",
-      "@@@STEP_LINK@task cas outputs: builder-subbuild1@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: builder-subbuild2@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CLEANUP]/fake-task-id-1/build.proto.json",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "fuchsia:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "collect builds.read build.proto.json",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@{@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"bucket\": \"try\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"builder\": \"builder-subbuild1\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"project\": \"fuchsia\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"create_time\": \"2018-05-25T23:50:17Z\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"created_by\": \"project:fuchsia\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"id\": \"8945511751514863186\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"infra\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"resultdb\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"invocation\": \"invocations/build:8945511751514863186\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"task_id\": \"abc123\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"input\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"gerrit_changes\": [@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@        \"change\": \"123456\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@        \"host\": \"chromium-review.googlesource.com\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@        \"patchset\": \"7\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@        \"project\": \"fuchsia\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    ]@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"output\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"test_orchestration_inputs_hash\": \"abc\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"status\": \"SUCCESS\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"tags\": [@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"key\": \"cq_experimental\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"value\": \"false\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  ]@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@}@@@",
-      "@@@STEP_LOG_END@build.proto.json@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "copy",
-      "[CLEANUP]/fake-task-id-2/build.proto.json",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "luci_context": {
-      "realm": {
-        "name": "fuchsia:try"
-      },
-      "resultdb": {
-        "current_invocation": {
-          "name": "invocations/build:8945511751514863184",
-          "update_token": "token"
-        },
-        "hostname": "rdbhost"
-      }
-    },
-    "name": "collect builds.read build.proto.json (2)",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@{@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"builder\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"bucket\": \"try\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"builder\": \"builder-subbuild2\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"project\": \"fuchsia\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"create_time\": \"2018-05-25T23:50:17Z\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"created_by\": \"project:fuchsia\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"id\": \"8945511751514863187\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"infra\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"resultdb\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"invocation\": \"invocations/build:8945511751514863187\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"swarming\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"priority\": 30,@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"task_id\": \"abc123\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"input\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"gerrit_changes\": [@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@        \"change\": \"123456\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@        \"host\": \"chromium-review.googlesource.com\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@        \"patchset\": \"7\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@        \"project\": \"fuchsia\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    ]@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"output\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"test_orchestration_inputs_hash\": \"abc\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  },@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"status\": \"SUCCESS\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  \"tags\": [@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    {@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"key\": \"cq_experimental\",@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@      \"value\": \"false\"@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@    }@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@  ]@@@",
-      "@@@STEP_LOG_LINE@build.proto.json@}@@@",
-      "@@@STEP_LOG_END@build.proto.json@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"8945511751514863186\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,infra.swarming.taskId,input,number,output,startTime,status,summaryMarkdown,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"8945511751514863187\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@8945511751514863186@https://cr-buildbucket.appspot.com/build/8945511751514863186@@@",
+      "@@@STEP_LINK@8945511751514863187@https://cr-buildbucket.appspot.com/build/8945511751514863187@@@"
     ]
   },
   {
diff --git a/recipe_modules/swarming_retry/__init__.py b/recipe_modules/swarming_retry/__init__.py
index 59adfb8..aca9138 100644
--- a/recipe_modules/swarming_retry/__init__.py
+++ b/recipe_modules/swarming_retry/__init__.py
@@ -4,7 +4,7 @@
 
 DEPS = [
     "fuchsia/utils",
+    "recipe_engine/buildbucket",
     "recipe_engine/context",
     "recipe_engine/step",
-    "recipe_engine/swarming",
 ]
diff --git a/recipe_modules/swarming_retry/api.py b/recipe_modules/swarming_retry/api.py
index 7c706a1..9f2f0fe 100644
--- a/recipe_modules/swarming_retry/api.py
+++ b/recipe_modules/swarming_retry/api.py
@@ -9,6 +9,7 @@
 
 import attr
 from recipe_engine import recipe_api
+from PB.go.chromium.org.luci.buildbucket.proto import common as common_pb2
 
 from RECIPE_MODULES.fuchsia.utils import pluralize
 
@@ -23,7 +24,6 @@
   index = attr.ib(type=int, default=None)  # Number of prior attempts.
   host = attr.ib(type=str, default=None)
   task_ui_link = attr.ib(type=str, default=None)
-  # api.swarming.TaskResult from api.swarming.collect() call.
   result = attr.ib(default=None)
   # This attribute should be set by overrides of Task.process_result(). It
   # indicates that even though at the swarming level the task may have
@@ -38,25 +38,11 @@
     # gives the link and the id. Require the id (since it has no default
     # above) and require either the host or task_ui_link attributes.
     assert self.host or self.task_ui_link
-    if not self.task_ui_link:
-      self.task_ui_link = f"https://{self.host}/task?id={self.task_id}"
-    elif not self.host:
-      self.host = urlparse(self.task_ui_link).netloc
-
-  @property
-  def bot_id(self):
-    return self.result.bot_id if self.result else None
-
-  @property
-  def bot_ui_link(self):
-    return f"https://{self.host}/bot?id={self.bot_id}" if self.bot_id else None
 
   @property
   def name(self):
     return f"attempt {int(self.index)}"
 
-  # TODO(mohrr) add hook for pass/fail beyond swarming task level.
-  # In some cases may need to examine task outputs to determine pass/fail.
   @property
   def success(self):
     if self.failure_reason:
@@ -65,11 +51,7 @@
     if not self.result:  # pragma: nocover
       return False
 
-    try:
-      self.result.analyze()
-      return True
-    except recipe_api.StepFailure:
-      return False
+    return self.result.status == common_pb2.Status.SUCCESS
 
 
 class TaskTracker:
@@ -203,7 +185,7 @@
     )
 
   def process_result(self, attempt, result):
-    with self._api.step.nest(result.name):
+    with self._api.step.nest(result.builder.builder):
       self._in_progress_attempts.remove(attempt)
       attempt.result = result
       try:
@@ -314,7 +296,6 @@
     del kwargs  # Unused.
     name = f"{attempt.name} ({'pass' if attempt.success else 'fail'})"
     task_step_presentation.links[name] = attempt.task_ui_link
-    task_step_presentation.links[attempt.bot_id] = attempt.bot_ui_link
 
   def launch(self, priority_boost_amount):
     """Launch the task (using Swarming, led, or something else).
@@ -330,36 +311,6 @@
     assert False, "Subclasses must define launch() method."  # pragma: no cover
 
 
-class TriggeredTask(Task):
-
-  def __init__(self, request, api, **kwargs):
-    super().__init__(api, request.name, **kwargs)
-    self._request = request
-
-  def launch(self, priority_boost_amount):
-    assert self._request
-
-    request = self._request
-    if priority_boost_amount != 0:
-      old_priority = request.priority
-      # For Swarming tasks, numerically lower priority values are logically
-      # higher priorities, so use subtraction here.
-      request = request.with_priority(old_priority - priority_boost_amount)
-      with self._api.step.nest("increase priority") as pres:
-        pres.step_summary_text = (
-            f"from {int(old_priority)} to {int(request.priority)}"
-        )
-
-    metadata = self._api.swarming.trigger("trigger", [request])
-    assert len(metadata) == 1
-    metadata = metadata[0]
-
-    return self._api.swarming_retry.Attempt(
-        task_ui_link=metadata.task_ui_link,
-        task_id=metadata.id,
-    )
-
-
 class LedTask(Task):
 
   def __init__(self, led_data, *args, **kwargs):
@@ -386,7 +337,7 @@
             f"from {int(self._original_priority)} to {int(new_priority)}"
         )
 
-    res = self._led_data.then("launch", "-modernize", "-real-build")
+    res = self._led_data.then("launch", "-real-build")
     host = res.launch_result.swarming_hostname
     task_id = res.launch_result.task_id or str(res.launch_result.build_id)
     build_url_swarming = 'https://ci.chromium.org/swarming/task/%s?server=%s' % (
@@ -410,8 +361,6 @@
 
   Task = Task  # pylint: disable=invalid-name
   LedTask = LedTask  # pylint: disable=invalid-name
-  TriggeredTask = TriggeredTask  # pylint: disable=invalid-name
-
   Attempt = Attempt  # pylint: disable=invalid-name
 
   DEFAULT_MAX_ATTEMPTS = DEFAULT_MAX_ATTEMPTS
@@ -426,15 +375,10 @@
     self.raise_failures(tasks)
 
   def _is_complete(self, result):
-    # At the moment results have a bunch of fields set to None if incomplete.
-    # On the assumption this will be changed at some point I'm also checking
-    # the state explicitly.
-    if result.name is None:
-      return False
-
-    return result.state not in {
-        self.m.swarming.TaskState.RUNNING,
-        self.m.swarming.TaskState.PENDING,
+    return result.status not in {
+        common_pb2.Status.STATUS_UNSPECIFIED,
+        common_pb2.Status.SCHEDULED,
+        common_pb2.Status.STARTED,
     }
 
   def _get_tasks_to_launch(self, tasks):
@@ -506,31 +450,24 @@
       for attempt in task._in_progress_attempts:
         assert attempt.task_id not in tasks_by_id
         tasks_by_id[attempt.task_id] = (task, attempt)
-    results = []
+    results = {}
     if tasks_by_id:
-      results = self.m.swarming.collect(
-          "collect",
-          sorted(tasks_by_id.keys()),
-          output_dir=collect_output_dir,
-          eager=True,
-          verbose=True,
+      results = self.m.buildbucket.collect_builds(
+          sorted([int(build_id) for build_id in tasks_by_id]),
+          mirror_status=False
       )
-
-    # 'collect' takes a list of task IDs and returns a list specifying
+    # 'collect' takes a list of build IDs and returns a list specifying
     # whether each task has completed or is still running.  However,
     # sometimes the list it returns misses tasks that haven't
     # completed.  That makes no difference here because we only look at
     # the completed tasks.
-    completed_results = [
-        result for result in results if self._is_complete(result)
-    ]
-
+    completed_results = list(filter(self._is_complete, results.values()))
     passed_tasks = []
     failed_tasks = []
     if completed_results:
       with self.m.step.nest("process results") as process_results_presentation:
         for result in completed_results:
-          task, attempt = tasks_by_id[result.id]
+          task, attempt = tasks_by_id[str(result.id)]
           task.process_result(attempt, result)
           if attempt.success:
             passed_tasks.append((task, attempt))
diff --git a/recipe_modules/swarming_retry/test_api.py b/recipe_modules/swarming_retry/test_api.py
index 654d14e..f5eeb9d 100644
--- a/recipe_modules/swarming_retry/test_api.py
+++ b/recipe_modules/swarming_retry/test_api.py
@@ -3,40 +3,10 @@
 # found in the LICENSE file.
 
 from recipe_engine import recipe_test_api
+from PB.go.chromium.org.luci.buildbucket.proto import common as common_pb2
 
 
-class FuchsiaSwarmingRetryTestApi(recipe_test_api.RecipeTestApi):
-
-  def _attempt(self, attempt, iteration):
-    """If not given guess the attempt number from context."""
-
-    # First, if the attempt number is given use it. The next couple
-    # statements make some assumptions but this is the way to ignore
-    # those assumptions.
-    if attempt is not None:  # pragma: no cover
-      return attempt
-
-    # If no attempt number is given assume attempts starting at iteration
-    # 0 have attempt number 0.
-    if iteration == 0:
-      return 0
-
-    # If not at iteration 0 assume we're relaunching and since the max
-    # attempts is currently 2 this has to be attempt 1.
-    return 1
-
-  def trigger_data(self, name, task_id, iteration=0, attempt=None):
-    """Like led_data() above, but for mocking api.swarming.trigger."""
-
-    attempt = self._attempt(attempt=attempt, iteration=iteration)
-
-    step_name = (
-        f"launch/collect.{iteration}.launch.{name} (attempt {attempt}).trigger"
-    )
-    launch_data = self.m.swarming.trigger(
-        task_names=[name], initial_id=int(task_id)
-    )
-    return self.step_data(step_name, launch_data)
+class FlutterSwarmingRetryTestApi(recipe_test_api.RecipeTestApi):
 
   def task_result(
       self,
@@ -47,7 +17,7 @@
       timed_out=False,
       **kwargs
   ):
-    """Mock data for call to api.swarming.collect().
+    """Mock data for call to api.buildbucket.collect().
 
         Args:
           name (str): name of task
@@ -62,16 +32,20 @@
 
     failed = failed or timed_out
 
-    state = self.m.swarming.TaskState.COMPLETED
-    if incomplete:
-      state = None
-      name = None
-    elif timed_out:
-      state = self.m.swarming.TaskState.TIMED_OUT
-
-    return self.m.swarming.task_result(
-        id=str(task_id), name=name, state=state, failure=failed, **kwargs
+    msg = self.m.buildbucket.try_build_message(
+        builder='builder', project='project', build_id=task_id
     )
+    state = common_pb2.Status.SUCCESS
+    if incomplete:
+      state = common_pb2.Status.STARTED
+    #  name = None
+    elif timed_out:
+      state = common_pb2.Status.CANCELED
+    elif failed:
+      state = common_pb2.Status.FAILURE
+
+    msg.status = state
+    return msg
 
   # These methods are just for convenience to make tests more readable.
   def incomplete_task(self, name, task_id, **kwargs):
@@ -87,7 +61,7 @@
     return self.task_result(name, task_id, **kwargs)
 
   def collect_data(self, results, iteration=0):
-    return self.override_step_data(
-        f"launch/collect.{int(iteration)}.collect",
-        self.m.swarming.collect(results)
+    return self.m.buildbucket.simulated_collect_output(
+        results,
+        step_name=f"launch/collect.{int(iteration)}.buildbucket.collect"
     )
diff --git a/recipe_modules/swarming_retry/tests/full.expected/full_test.json b/recipe_modules/swarming_retry/tests/full.expected/full_test.json
index 1b5cce3..3380739 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/full_test.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/full_test.json
@@ -116,71 +116,19 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "100",
       "200",
       "300",
@@ -188,94 +136,185 @@
       "500",
       "600"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.0.collect",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"200\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"300\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"400\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"500\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"600\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"pass\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"200\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:200\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"300\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:300\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"200\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"flake\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"200\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"300\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"fail\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"300\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: fail@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: fail@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: flake@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: flake@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: pass@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: pass@@@",
-      "@@@STEP_LINK@task cas outputs: fail@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: flake@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: pass@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"200\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"300\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"400\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"500\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@",
+      "@@@STEP_LINK@200@https://cr-buildbucket.appspot.com/build/200@@@",
+      "@@@STEP_LINK@300@https://cr-buildbucket.appspot.com/build/300@@@"
     ]
   },
   {
@@ -287,21 +326,21 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.fail",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.flake",
+    "name": "launch/collect.0.process results.builder (2)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.pass",
+    "name": "launch/collect.0.process results.builder (3)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -319,8 +358,8 @@
     "name": "launch/collect.0.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@fail (attempt 0)@https://testhost/task?id=300@@@",
-      "@@@STEP_LINK@flake (attempt 0)@https://testhost/task?id=200@@@"
+      "@@@STEP_LINK@flake (attempt 0)@https://testhost/task?id=200@@@",
+      "@@@STEP_LINK@fail (attempt 0)@https://testhost/task?id=300@@@"
     ]
   },
   {
@@ -353,7 +392,7 @@
     "name": "launch/collect.1.launch.flake (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=201@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -369,7 +408,7 @@
     "name": "launch/collect.1.launch.fail (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=301@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -381,86 +420,161 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "201",
       "301",
       "400",
       "500",
       "600"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"201\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"301\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"400\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"500\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"600\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"201\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"flake\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"201\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"201\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:201\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"301\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:301\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"301\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"fail\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"301\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: fail@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: fail@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: flake@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: flake@@@",
-      "@@@STEP_LINK@task cas outputs: fail@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: flake@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"201\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"301\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"400\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"500\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@201@https://cr-buildbucket.appspot.com/build/201@@@",
+      "@@@STEP_LINK@301@https://cr-buildbucket.appspot.com/build/301@@@"
     ]
   },
   {
@@ -472,14 +586,14 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.fail",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.flake",
+    "name": "launch/collect.1.process results.builder (2)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -489,7 +603,7 @@
     "name": "launch/collect.1.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@flake (attempt 1)@https://testhost/task?id=201@@@"
+      "@@@STEP_LINK@flake (attempt 1)@None@@@"
     ]
   },
   {
@@ -497,7 +611,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@fail (attempt 1)@https://testhost/task?id=301@@@"
+      "@@@STEP_LINK@fail (attempt 1)@None@@@"
     ]
   },
   {
@@ -519,54 +633,185 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.2.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "400",
       "500",
       "600"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.2.collect",
+    "name": "launch/collect.2.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.2.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"400\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"500\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"600\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"400\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"error\": \"Bot could not be contacted\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"400\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"400\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:400\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"STARTED\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"500\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:500\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"STARTED\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"600\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:600\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"STARTED\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"500\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"error\": \"Bot could not be contacted\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"500\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"600\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"error\": \"Bot could not be contacted\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"600\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: None@Bot could not be contacted@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: None@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"400\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"500\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@400@https://cr-buildbucket.appspot.com/build/400@@@",
+      "@@@STEP_LINK@500@https://cr-buildbucket.appspot.com/build/500@@@",
+      "@@@STEP_LINK@600@https://cr-buildbucket.appspot.com/build/600@@@"
     ]
   },
   {
@@ -588,33 +833,68 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.3.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "400",
       "500",
       "600"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.3.collect",
+    "name": "launch/collect.3.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.3.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"400\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"500\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"600\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"400\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"500\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@"
     ]
   },
   {
@@ -636,59 +916,109 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.4.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "400",
       "500",
       "600"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.4.collect",
+    "name": "launch/collect.4.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.4.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"400\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"500\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"600\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"400\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"pass_long\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"400\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"400\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:400\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: pass_long@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: pass_long@@@",
-      "@@@STEP_LINK@task cas outputs: pass_long@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"400\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"500\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@400@https://cr-buildbucket.appspot.com/build/400@@@"
     ]
   },
   {
@@ -700,7 +1030,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.4.process results.pass_long",
+    "name": "launch/collect.4.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -731,58 +1061,102 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.5.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "500",
       "600"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.5.collect",
+    "name": "launch/collect.5.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.5.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"500\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"600\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"500\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"flake_long\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"500\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"500\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:500\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: flake_long@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: flake_long@@@",
-      "@@@STEP_LINK@task cas outputs: flake_long@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"500\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@500@https://cr-buildbucket.appspot.com/build/500@@@"
     ]
   },
   {
@@ -794,7 +1168,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.5.process results.flake_long",
+    "name": "launch/collect.5.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -824,57 +1198,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.6.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "600"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.6.collect",
+    "name": "launch/collect.6.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.6.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"600\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"600\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"fail_long\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"600\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:600\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: fail_long@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: fail_long@@@",
-      "@@@STEP_LINK@task cas outputs: fail_long@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@600@https://cr-buildbucket.appspot.com/build/600@@@"
     ]
   },
   {
@@ -886,7 +1298,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.6.process results.fail_long",
+    "name": "launch/collect.6.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -911,8 +1323,7 @@
     "name": "passes.pass",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://testhost/task?id=100@@@"
     ]
   },
   {
@@ -921,8 +1332,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=200@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (pass)@https://testhost/task?id=201@@@"
+      "@@@STEP_LINK@attempt 1 (pass)@None@@@"
     ]
   },
   {
@@ -930,8 +1340,7 @@
     "name": "passes.pass_long",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://testhost/task?id=400@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://testhost/task?id=400@@@"
     ]
   },
   {
@@ -947,8 +1356,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=200@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (pass)@https://testhost/task?id=201@@@"
+      "@@@STEP_LINK@attempt 1 (pass)@None@@@"
     ]
   },
   {
@@ -965,8 +1373,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=300@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://testhost/task?id=301@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@None@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
@@ -976,7 +1383,6 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=500@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
@@ -986,7 +1392,6 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=600@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
diff --git a/recipe_modules/swarming_retry/tests/full.expected/internal_failure.json b/recipe_modules/swarming_retry/tests/full.expected/internal_failure.json
index 14c38f8..a2ff369 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/internal_failure.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/internal_failure.json
@@ -36,111 +36,94 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -152,7 +135,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -185,7 +168,7 @@
     "name": "launch/collect.1.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -197,57 +180,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -259,7 +280,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -269,7 +290,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@None@@@"
     ]
   },
   {
@@ -300,8 +321,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://testhost/task?id=101@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@None@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
diff --git a/recipe_modules/swarming_retry/tests/full.expected/last_task_max_attempts_high.json b/recipe_modules/swarming_retry/tests/full.expected/last_task_max_attempts_high.json
index 09ccd4d..f9e0579 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/last_task_max_attempts_high.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/last_task_max_attempts_high.json
@@ -36,111 +36,94 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -152,7 +135,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -160,7 +143,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task.failing step",
+    "name": "launch/collect.0.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -168,13 +151,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task.exception",
+    "name": "launch/collect.0.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.0.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.0.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.0.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.0.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -206,7 +189,7 @@
     "name": "launch/collect.1.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -218,57 +201,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -280,7 +301,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -288,7 +309,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task.failing step",
+    "name": "launch/collect.1.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -296,13 +317,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task.exception",
+    "name": "launch/collect.1.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.1.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.1.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.1.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.1.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -311,7 +332,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@None@@@"
     ]
   },
   {
@@ -346,57 +367,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.2.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "102"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.2.collect",
+    "name": "launch/collect.2.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.2.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"102\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"102\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"102\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"102\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:102\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"102\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@102@https://cr-buildbucket.appspot.com/build/102@@@"
     ]
   },
   {
@@ -408,7 +467,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.2.process results.task",
+    "name": "launch/collect.2.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -416,7 +475,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.2.process results.task.failing step",
+    "name": "launch/collect.2.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -424,13 +483,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.2.process results.task.exception",
+    "name": "launch/collect.2.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.2.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.2.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.2.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.2.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -462,7 +521,7 @@
     "name": "launch/collect.3.launch.task (attempt 3)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=103@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -474,57 +533,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.3.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "103"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.3.collect",
+    "name": "launch/collect.3.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.3.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"103\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"103\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"103\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"103\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:103\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"103\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@103@https://cr-buildbucket.appspot.com/build/103@@@"
     ]
   },
   {
@@ -536,7 +633,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.3.process results.task",
+    "name": "launch/collect.3.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -544,7 +641,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.3.process results.task.failing step",
+    "name": "launch/collect.3.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -552,13 +649,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.3.process results.task.exception",
+    "name": "launch/collect.3.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.3.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.3.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.3.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.3.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -567,7 +664,7 @@
     "name": "launch/collect.3.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 3)@https://testhost/task?id=103@@@"
+      "@@@STEP_LINK@task (attempt 3)@None@@@"
     ]
   },
   {
@@ -602,57 +699,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.4.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "104"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.4.collect",
+    "name": "launch/collect.4.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.4.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"104\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"104\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"104\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"104\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:104\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"104\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@104@https://cr-buildbucket.appspot.com/build/104@@@"
     ]
   },
   {
@@ -664,7 +799,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.4.process results.task",
+    "name": "launch/collect.4.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -672,7 +807,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.4.process results.task.failing step",
+    "name": "launch/collect.4.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -680,13 +815,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.4.process results.task.exception",
+    "name": "launch/collect.4.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.4.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.4.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.4.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.4.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -726,10 +861,9 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://testhost/task?id=101@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@None@@@",
       "@@@STEP_LINK@attempt 2 (fail)@https://testhost/task?id=102@@@",
-      "@@@STEP_LINK@attempt 3 (fail)@https://testhost/task?id=103@@@",
+      "@@@STEP_LINK@attempt 3 (fail)@None@@@",
       "@@@STEP_LINK@attempt 4 (fail)@https://testhost/task?id=104@@@",
       "@@@STEP_FAILURE@@@"
     ]
diff --git a/recipe_modules/swarming_retry/tests/full.expected/last_task_max_attempts_low.json b/recipe_modules/swarming_retry/tests/full.expected/last_task_max_attempts_low.json
index 16812ea..458aaed 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/last_task_max_attempts_low.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/last_task_max_attempts_low.json
@@ -36,111 +36,94 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -152,7 +135,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -160,7 +143,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task.failing step",
+    "name": "launch/collect.0.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -168,13 +151,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task.exception",
+    "name": "launch/collect.0.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.0.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.0.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.0.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.0.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -214,7 +197,6 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
diff --git a/recipe_modules/swarming_retry/tests/full.expected/led_task.json b/recipe_modules/swarming_retry/tests/full.expected/led_task.json
index cba6e79..94dc6f9 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/led_task.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/led_task.json
@@ -73,7 +73,6 @@
     "cmd": [
       "led",
       "launch",
-      "-modernize",
       "-real-build"
     ],
     "infra_step": true,
@@ -93,111 +92,94 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -209,7 +191,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -257,7 +239,6 @@
     "cmd": [
       "led",
       "launch",
-      "-modernize",
       "-real-build"
     ],
     "infra_step": true,
@@ -276,57 +257,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -338,7 +357,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -364,7 +383,6 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://buildbucket@appspot.com/build/100@@@",
-      "@@@STEP_LINK@vm-123@https://buildbucket@appspot.com/bot?id=vm-123@@@",
       "@@@STEP_LINK@attempt 1 (pass)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
@@ -381,7 +399,6 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://buildbucket@appspot.com/build/100@@@",
-      "@@@STEP_LINK@vm-123@https://buildbucket@appspot.com/bot?id=vm-123@@@",
       "@@@STEP_LINK@attempt 1 (pass)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
diff --git a/recipe_modules/swarming_retry/tests/full.expected/led_task_hardcoded_attempt.json b/recipe_modules/swarming_retry/tests/full.expected/led_task_hardcoded_attempt.json
index 657c8cb..25dcb9c 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/led_task_hardcoded_attempt.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/led_task_hardcoded_attempt.json
@@ -73,7 +73,6 @@
     "cmd": [
       "led",
       "launch",
-      "-modernize",
       "-real-build"
     ],
     "infra_step": true,
@@ -93,111 +92,63 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\"@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"my_task_0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: my_task_0@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: my_task_0@@@",
-      "@@@STEP_LINK@task cas outputs: my_task_0@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -209,7 +160,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.my_task_0",
+    "name": "launch/collect.0.process results.",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -234,8 +185,7 @@
     "name": "passes.task",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@",
-      "@@@STEP_LINK@vm-123@https://buildbucket@appspot.com/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
diff --git a/recipe_modules/swarming_retry/tests/full.expected/max_attempts_three.json b/recipe_modules/swarming_retry/tests/full.expected/max_attempts_three.json
index a083fe6..5b0a28f 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/max_attempts_three.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/max_attempts_three.json
@@ -36,111 +36,94 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -152,7 +135,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -160,7 +143,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task.failing step",
+    "name": "launch/collect.0.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -168,13 +151,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task.exception",
+    "name": "launch/collect.0.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.0.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.0.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.0.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.0.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -206,7 +189,7 @@
     "name": "launch/collect.1.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -218,57 +201,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -280,7 +301,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -288,7 +309,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task.failing step",
+    "name": "launch/collect.1.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -296,13 +317,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task.exception",
+    "name": "launch/collect.1.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.1.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.1.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.1.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.1.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -311,7 +332,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@None@@@"
     ]
   },
   {
@@ -346,57 +367,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.2.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "102"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.2.collect",
+    "name": "launch/collect.2.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.2.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"102\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"102\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"102\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"102\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:102\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"102\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@102@https://cr-buildbucket.appspot.com/build/102@@@"
     ]
   },
   {
@@ -408,7 +467,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.2.process results.task",
+    "name": "launch/collect.2.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -416,7 +475,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.2.process results.task.failing step",
+    "name": "launch/collect.2.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -424,13 +483,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.2.process results.task.exception",
+    "name": "launch/collect.2.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.2.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.2.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.2.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.2.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -470,8 +529,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://testhost/task?id=101@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@None@@@",
       "@@@STEP_LINK@attempt 2 (fail)@https://testhost/task?id=102@@@",
       "@@@STEP_FAILURE@@@"
     ]
diff --git a/recipe_modules/swarming_retry/tests/full.expected/multirun_fail_pass.json b/recipe_modules/swarming_retry/tests/full.expected/multirun_fail_pass.json
index e55ef16..c8f0574 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/multirun_fail_pass.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/multirun_fail_pass.json
@@ -1,5 +1,29 @@
 [
   {
+    "cmd": [
+      "led",
+      "get-builder",
+      "project/bucket:builder"
+    ],
+    "name": "led get-builder",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"bucket\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
     "cmd": [],
     "name": "launch/collect"
   },
@@ -23,136 +47,28 @@
     "name": "launch/collect.0.launch.task (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=100@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@4@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure package directory",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure_installed",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).trigger",
+    "name": "launch/collect.0.launch.task (attempt 0).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"100\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"100\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/100\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 100,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/100@@@"
     ]
   },
   {
@@ -160,136 +76,127 @@
     "name": "launch/collect.0.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 1).trigger",
+    "name": "launch/collect.0.launch.task (attempt 1).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"101\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"101\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 101,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/101@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch/collect.0.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100",
+      "101"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
       "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/101\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=101@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100",
-      "101"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -301,7 +208,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -311,7 +218,7 @@
     "name": "launch/collect.0.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
@@ -319,7 +226,7 @@
     "name": "launch/collect.0.incomplete tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 0)@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@task (attempt 0)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
@@ -331,57 +238,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "100"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -393,7 +338,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -403,7 +348,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 0)@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@task (attempt 0)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
@@ -426,9 +371,8 @@
     "name": "flakes.task",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (fail)@https://example.swarmingserver.appspot.com/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (pass)@https://example.swarmingserver.appspot.com/task?id=101@@@",
+      "@@@STEP_LINK@attempt 0 (fail)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@attempt 1 (pass)@https://buildbucket@appspot.com/build/101@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
@@ -445,9 +389,8 @@
     "name": "failures.task",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (fail)@https://example.swarmingserver.appspot.com/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (pass)@https://example.swarmingserver.appspot.com/task?id=101@@@",
+      "@@@STEP_LINK@attempt 0 (fail)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@attempt 1 (pass)@https://buildbucket@appspot.com/build/101@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
diff --git a/recipe_modules/swarming_retry/tests/full.expected/multirun_no_futile_retries.json b/recipe_modules/swarming_retry/tests/full.expected/multirun_no_futile_retries.json
index 2d804f3..b4a2f2c 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/multirun_no_futile_retries.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/multirun_no_futile_retries.json
@@ -1,5 +1,29 @@
 [
   {
+    "cmd": [
+      "led",
+      "get-builder",
+      "project/bucket:builder"
+    ],
+    "name": "led get-builder",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"bucket\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
     "cmd": [],
     "name": "launch/collect"
   },
@@ -23,136 +47,28 @@
     "name": "launch/collect.0.launch.task (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=100@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@4@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure package directory",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure_installed",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).trigger",
+    "name": "launch/collect.0.launch.task (attempt 0).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"100\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"100\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/100\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 100,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/100@@@"
     ]
   },
   {
@@ -160,136 +76,127 @@
     "name": "launch/collect.0.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 1).trigger",
+    "name": "launch/collect.0.launch.task (attempt 1).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"101\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"101\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 101,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/101@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch/collect.0.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100",
+      "101"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
       "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/101\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=101@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100",
-      "101"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -301,7 +208,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -311,7 +218,7 @@
     "name": "launch/collect.0.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 0)@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@task (attempt 0)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
@@ -319,7 +226,7 @@
     "name": "launch/collect.0.incomplete tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
@@ -331,57 +238,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -393,7 +338,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -403,7 +348,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
@@ -433,9 +378,8 @@
     "name": "failures.task",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (fail)@https://example.swarmingserver.appspot.com/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://example.swarmingserver.appspot.com/task?id=101@@@",
+      "@@@STEP_LINK@attempt 0 (fail)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@https://buildbucket@appspot.com/build/101@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
diff --git a/recipe_modules/swarming_retry/tests/full.expected/multirun_retry_overall_fail.json b/recipe_modules/swarming_retry/tests/full.expected/multirun_retry_overall_fail.json
index 0bd9b47..ff0f8f0 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/multirun_retry_overall_fail.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/multirun_retry_overall_fail.json
@@ -1,5 +1,29 @@
 [
   {
+    "cmd": [
+      "led",
+      "get-builder",
+      "project/bucket:builder"
+    ],
+    "name": "led get-builder",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"bucket\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
     "cmd": [],
     "name": "launch/collect"
   },
@@ -23,136 +47,28 @@
     "name": "launch/collect.0.launch.task (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=100@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@4@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure package directory",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure_installed",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).trigger",
+    "name": "launch/collect.0.launch.task (attempt 0).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"100\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"100\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/100\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 100,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/100@@@"
     ]
   },
   {
@@ -160,136 +76,127 @@
     "name": "launch/collect.0.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 1).trigger",
+    "name": "launch/collect.0.launch.task (attempt 1).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"101\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"101\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 101,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/101@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch/collect.0.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100",
+      "101"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
       "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/101\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=101@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100",
-      "101"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -301,7 +208,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -311,7 +218,7 @@
     "name": "launch/collect.0.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 0)@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@task (attempt 0)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
@@ -319,7 +226,7 @@
     "name": "launch/collect.0.incomplete tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
@@ -331,57 +238,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -393,7 +338,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -403,7 +348,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
@@ -426,135 +371,120 @@
     "name": "launch/collect.2.launch.task (attempt 2)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=102@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/102@@@"
     ]
   },
   {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.2.launch.task (attempt 2).trigger",
+    "name": "launch/collect.2.launch.task (attempt 2).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"102\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"102\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 102,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/102@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch/collect.2.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "102"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.2.buildbucket.collect.wait",
+    "timeout": 3600,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.2.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"102\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
       "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"102\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/102\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"102\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:102\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=102@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "102"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.2.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"102\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"102\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"102\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@102@https://cr-buildbucket.appspot.com/build/102@@@"
     ]
   },
   {
@@ -566,7 +496,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.2.process results.task",
+    "name": "launch/collect.2.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -576,7 +506,7 @@
     "name": "launch/collect.2.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 2)@https://example.swarmingserver.appspot.com/task?id=102@@@"
+      "@@@STEP_LINK@task (attempt 2)@https://buildbucket@appspot.com/build/102@@@"
     ]
   },
   {
@@ -599,135 +529,120 @@
     "name": "launch/collect.3.launch.task (attempt 3)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=103@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/103@@@"
     ]
   },
   {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.3.launch.task (attempt 3).trigger",
+    "name": "launch/collect.3.launch.task (attempt 3).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"103\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"103\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 103,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/103@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch/collect.3.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "103"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.3.buildbucket.collect.wait",
+    "timeout": 3600,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.3.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"103\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
       "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"103\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/103\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"103\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:103\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=103@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "103"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.3.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"103\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"103\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"103\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@103@https://cr-buildbucket.appspot.com/build/103@@@"
     ]
   },
   {
@@ -739,7 +654,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.3.process results.task",
+    "name": "launch/collect.3.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -749,7 +664,7 @@
     "name": "launch/collect.3.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 3)@https://example.swarmingserver.appspot.com/task?id=103@@@"
+      "@@@STEP_LINK@task (attempt 3)@https://buildbucket@appspot.com/build/103@@@"
     ]
   },
   {
@@ -772,11 +687,10 @@
     "name": "flakes.task",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://example.swarmingserver.appspot.com/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://example.swarmingserver.appspot.com/task?id=101@@@",
-      "@@@STEP_LINK@attempt 2 (fail)@https://example.swarmingserver.appspot.com/task?id=102@@@",
-      "@@@STEP_LINK@attempt 3 (fail)@https://example.swarmingserver.appspot.com/task?id=103@@@",
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@https://buildbucket@appspot.com/build/101@@@",
+      "@@@STEP_LINK@attempt 2 (fail)@https://buildbucket@appspot.com/build/102@@@",
+      "@@@STEP_LINK@attempt 3 (fail)@https://buildbucket@appspot.com/build/103@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
@@ -793,11 +707,10 @@
     "name": "failures.task",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://example.swarmingserver.appspot.com/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://example.swarmingserver.appspot.com/task?id=101@@@",
-      "@@@STEP_LINK@attempt 2 (fail)@https://example.swarmingserver.appspot.com/task?id=102@@@",
-      "@@@STEP_LINK@attempt 3 (fail)@https://example.swarmingserver.appspot.com/task?id=103@@@",
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@https://buildbucket@appspot.com/build/101@@@",
+      "@@@STEP_LINK@attempt 2 (fail)@https://buildbucket@appspot.com/build/102@@@",
+      "@@@STEP_LINK@attempt 3 (fail)@https://buildbucket@appspot.com/build/103@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
diff --git a/recipe_modules/swarming_retry/tests/full.expected/multirun_retry_overall_pass.json b/recipe_modules/swarming_retry/tests/full.expected/multirun_retry_overall_pass.json
index d1ddd29..4896109 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/multirun_retry_overall_pass.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/multirun_retry_overall_pass.json
@@ -1,5 +1,29 @@
 [
   {
+    "cmd": [
+      "led",
+      "get-builder",
+      "project/bucket:builder"
+    ],
+    "name": "led get-builder",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"bucket\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
     "cmd": [],
     "name": "launch/collect"
   },
@@ -23,136 +47,28 @@
     "name": "launch/collect.0.launch.task (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=100@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@4@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure package directory",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure_installed",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).trigger",
+    "name": "launch/collect.0.launch.task (attempt 0).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"100\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"100\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/100\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 100,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/100@@@"
     ]
   },
   {
@@ -160,136 +76,127 @@
     "name": "launch/collect.0.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 1).trigger",
+    "name": "launch/collect.0.launch.task (attempt 1).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"101\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"101\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 101,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/101@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch/collect.0.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100",
+      "101"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
       "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/101\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=101@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100",
-      "101"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -301,7 +208,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -311,7 +218,7 @@
     "name": "launch/collect.0.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 0)@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@task (attempt 0)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
@@ -319,7 +226,7 @@
     "name": "launch/collect.0.incomplete tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
@@ -331,57 +238,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -393,7 +338,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -403,7 +348,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
@@ -426,135 +371,120 @@
     "name": "launch/collect.2.launch.task (attempt 2)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=102@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/102@@@"
     ]
   },
   {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.2.launch.task (attempt 2).trigger",
+    "name": "launch/collect.2.launch.task (attempt 2).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"102\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"102\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 102,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/102@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch/collect.2.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "102"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.2.buildbucket.collect.wait",
+    "timeout": 3600,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.2.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"102\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
       "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"102\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/102\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"102\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:102\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=102@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "102"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.2.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"102\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"102\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"102\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@102@https://cr-buildbucket.appspot.com/build/102@@@"
     ]
   },
   {
@@ -566,7 +496,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.2.process results.task",
+    "name": "launch/collect.2.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -576,7 +506,7 @@
     "name": "launch/collect.2.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 2)@https://example.swarmingserver.appspot.com/task?id=102@@@"
+      "@@@STEP_LINK@task (attempt 2)@https://buildbucket@appspot.com/build/102@@@"
     ]
   },
   {
@@ -599,135 +529,120 @@
     "name": "launch/collect.3.launch.task (attempt 3)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=103@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/103@@@"
     ]
   },
   {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.3.launch.task (attempt 3).trigger",
+    "name": "launch/collect.3.launch.task (attempt 3).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"103\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"103\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 103,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/103@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch/collect.3.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "103"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.3.buildbucket.collect.wait",
+    "timeout": 3600,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.3.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"103\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
       "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"103\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/103\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"103\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:103\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=103@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "103"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.3.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"103\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"103\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"103\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@103@https://cr-buildbucket.appspot.com/build/103@@@"
     ]
   },
   {
@@ -739,7 +654,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.3.process results.task",
+    "name": "launch/collect.3.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -749,7 +664,7 @@
     "name": "launch/collect.3.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 3)@https://example.swarmingserver.appspot.com/task?id=103@@@"
+      "@@@STEP_LINK@task (attempt 3)@https://buildbucket@appspot.com/build/103@@@"
     ]
   },
   {
@@ -764,11 +679,10 @@
     "name": "passes.task",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://example.swarmingserver.appspot.com/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://example.swarmingserver.appspot.com/task?id=101@@@",
-      "@@@STEP_LINK@attempt 2 (fail)@https://example.swarmingserver.appspot.com/task?id=102@@@",
-      "@@@STEP_LINK@attempt 3 (pass)@https://example.swarmingserver.appspot.com/task?id=103@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@https://buildbucket@appspot.com/build/101@@@",
+      "@@@STEP_LINK@attempt 2 (fail)@https://buildbucket@appspot.com/build/102@@@",
+      "@@@STEP_LINK@attempt 3 (pass)@https://buildbucket@appspot.com/build/103@@@"
     ]
   },
   {
@@ -783,11 +697,10 @@
     "name": "flakes.task",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://example.swarmingserver.appspot.com/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://example.swarmingserver.appspot.com/task?id=101@@@",
-      "@@@STEP_LINK@attempt 2 (fail)@https://example.swarmingserver.appspot.com/task?id=102@@@",
-      "@@@STEP_LINK@attempt 3 (pass)@https://example.swarmingserver.appspot.com/task?id=103@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@https://buildbucket@appspot.com/build/101@@@",
+      "@@@STEP_LINK@attempt 2 (fail)@https://buildbucket@appspot.com/build/102@@@",
+      "@@@STEP_LINK@attempt 3 (pass)@https://buildbucket@appspot.com/build/103@@@"
     ]
   },
   {
diff --git a/recipe_modules/swarming_retry/tests/full.expected/multirun_without_failures.json b/recipe_modules/swarming_retry/tests/full.expected/multirun_without_failures.json
index 8fec7c7..455e9d0 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/multirun_without_failures.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/multirun_without_failures.json
@@ -1,5 +1,29 @@
 [
   {
+    "cmd": [
+      "led",
+      "get-builder",
+      "project/bucket:builder"
+    ],
+    "name": "led get-builder",
+    "~followup_annotations": [
+      "@@@STEP_LOG_LINE@proto.output@{@@@",
+      "@@@STEP_LOG_LINE@proto.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@    \"bbagent_args\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@      \"build\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"bucket\": \"bucket\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@proto.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@proto.output@        }@@@",
+      "@@@STEP_LOG_LINE@proto.output@      }@@@",
+      "@@@STEP_LOG_LINE@proto.output@    }@@@",
+      "@@@STEP_LOG_LINE@proto.output@  }@@@",
+      "@@@STEP_LOG_LINE@proto.output@}@@@",
+      "@@@STEP_LOG_END@proto.output@@@"
+    ]
+  },
+  {
     "cmd": [],
     "name": "launch/collect"
   },
@@ -23,136 +47,28 @@
     "name": "launch/collect.0.launch.task (attempt 0)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=100@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@4@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure package directory",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure_installed",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).trigger",
+    "name": "launch/collect.0.launch.task (attempt 0).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"100\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"100\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/100\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  ]@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 100,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/100@@@"
     ]
   },
   {
@@ -160,136 +76,127 @@
     "name": "launch/collect.0.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
+      "led",
+      "launch",
+      "-real-build"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 1).trigger",
+    "name": "launch/collect.0.launch.task (attempt 1).led launch",
+    "stdin": "{\n  \"buildbucket\": {\n    \"bbagent_args\": {\n      \"build\": {\n        \"builder\": {\n          \"bucket\": \"bucket\",\n          \"builder\": \"builder\",\n          \"project\": \"project\"\n        },\n        \"id\": \"101\",\n        \"infra\": {\n          \"swarming\": {\n            \"task_id\": \"101\"\n          }\n        }\n      }\n    }\n  }\n}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"buildbucket\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"build_id\": 101,@@@",
+      "@@@STEP_LOG_LINE@json.output@    \"host_name\": \"buildbucket@appspot.com\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@}@@@",
+      "@@@STEP_LOG_END@json.output@@@",
+      "@@@STEP_LINK@Build@https://ci.chromium.org/b/101@@@"
+    ]
+  },
+  {
+    "cmd": [],
+    "name": "launch/collect.0.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100",
+      "101"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
+      "@@@STEP_LOG_LINE@json.output@{@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
       "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/101\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
       "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=101@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100",
-      "101"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -301,7 +208,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -311,7 +218,7 @@
     "name": "launch/collect.0.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 0)@https://example.swarmingserver.appspot.com/task?id=100@@@"
+      "@@@STEP_LINK@task (attempt 0)@https://buildbucket@appspot.com/build/100@@@"
     ]
   },
   {
@@ -319,7 +226,7 @@
     "name": "launch/collect.0.incomplete tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
@@ -331,57 +238,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -393,7 +338,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -403,7 +348,7 @@
     "name": "launch/collect.1.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
@@ -418,9 +363,8 @@
     "name": "passes.task",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://example.swarmingserver.appspot.com/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (pass)@https://example.swarmingserver.appspot.com/task?id=101@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://buildbucket@appspot.com/build/100@@@",
+      "@@@STEP_LINK@attempt 1 (pass)@https://buildbucket@appspot.com/build/101@@@"
     ]
   },
   {
diff --git a/recipe_modules/swarming_retry/tests/full.expected/no_collect_after_failed_abort_early_task.json b/recipe_modules/swarming_retry/tests/full.expected/no_collect_after_failed_abort_early_task.json
index 5b811b4..25208ee 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/no_collect_after_failed_abort_early_task.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/no_collect_after_failed_abort_early_task.json
@@ -132,71 +132,19 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "100",
       "200",
       "300",
@@ -205,119 +153,229 @@
       "600",
       "700"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.0.collect",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"200\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"300\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"400\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"500\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"600\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"700\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"pass\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"700\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:700\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"200\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:200\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
+      "@@@STEP_LOG_LINE@json.output@    },@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"300\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:300\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"200\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"flake\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"200\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"300\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"fail\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"300\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  },@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"700\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"abort_early_task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"700\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: abort_early_task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: abort_early_task@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: fail@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: fail@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: flake@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: flake@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: pass@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: pass@@@",
-      "@@@STEP_LINK@task cas outputs: abort_early_task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: fail@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: flake@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@",
-      "@@@STEP_LINK@task cas outputs: pass@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"200\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"300\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"400\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"500\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"700\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@700@https://cr-buildbucket.appspot.com/build/700@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@",
+      "@@@STEP_LINK@200@https://cr-buildbucket.appspot.com/build/200@@@",
+      "@@@STEP_LINK@300@https://cr-buildbucket.appspot.com/build/300@@@"
     ]
   },
   {
@@ -329,28 +387,28 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.abort_early_task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.fail",
+    "name": "launch/collect.0.process results.builder (2)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.flake",
+    "name": "launch/collect.0.process results.builder (3)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.pass",
+    "name": "launch/collect.0.process results.builder (4)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -369,8 +427,8 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
       "@@@STEP_LINK@abort_early_task (attempt 0)@https://testhost/task?id=700@@@",
-      "@@@STEP_LINK@fail (attempt 0)@https://testhost/task?id=300@@@",
-      "@@@STEP_LINK@flake (attempt 0)@https://testhost/task?id=200@@@"
+      "@@@STEP_LINK@flake (attempt 0)@https://testhost/task?id=200@@@",
+      "@@@STEP_LINK@fail (attempt 0)@https://testhost/task?id=300@@@"
     ]
   },
   {
@@ -403,7 +461,7 @@
     "name": "launch/collect.1.launch.flake (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=201@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -419,7 +477,7 @@
     "name": "launch/collect.1.launch.fail (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=301@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -435,7 +493,7 @@
     "name": "launch/collect.1.launch.abort_early_task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=701@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -447,17 +505,20 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "201",
       "301",
       "400",
@@ -465,44 +526,109 @@
       "600",
       "701"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"201\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"301\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"400\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"500\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"600\"}}, {\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"701\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"701\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"abort_early_task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"701\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"701\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:701\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"FAILURE\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: abort_early_task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: abort_early_task@@@",
-      "@@@STEP_LINK@task cas outputs: abort_early_task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"201\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"301\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"400\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"500\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"600\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    },@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"701\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@701@https://cr-buildbucket.appspot.com/build/701@@@"
     ]
   },
   {
@@ -514,7 +640,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.abort_early_task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -524,7 +650,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@abort_early_task (attempt 1)@https://testhost/task?id=701@@@"
+      "@@@STEP_LINK@abort_early_task (attempt 1)@None@@@"
     ]
   },
   {
@@ -532,8 +658,8 @@
     "name": "launch/collect.1.incomplete tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@flake (attempt 1)@https://testhost/task?id=201@@@",
-      "@@@STEP_LINK@fail (attempt 1)@https://testhost/task?id=301@@@",
+      "@@@STEP_LINK@flake (attempt 1)@None@@@",
+      "@@@STEP_LINK@fail (attempt 1)@None@@@",
       "@@@STEP_LINK@pass_long (attempt 0)@https://testhost/task?id=400@@@",
       "@@@STEP_LINK@flake_long (attempt 0)@https://testhost/task?id=500@@@",
       "@@@STEP_LINK@fail_long (attempt 0)@https://testhost/task?id=600@@@"
@@ -551,8 +677,7 @@
     "name": "passes.pass",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://testhost/task?id=100@@@"
     ]
   },
   {
@@ -567,8 +692,7 @@
     "name": "flakes.pass",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (pass)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@"
+      "@@@STEP_LINK@attempt 0 (pass)@https://testhost/task?id=100@@@"
     ]
   },
   {
@@ -585,8 +709,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=700@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://testhost/task?id=701@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@None@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
@@ -603,9 +726,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=200@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://testhost/task?id=201@@@",
-      "@@@STEP_LINK@None@None@@@"
+      "@@@STEP_LINK@attempt 1 (fail)@None@@@"
     ]
   },
   {
@@ -614,9 +735,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=300@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://testhost/task?id=301@@@",
-      "@@@STEP_LINK@None@None@@@"
+      "@@@STEP_LINK@attempt 1 (fail)@None@@@"
     ]
   },
   {
@@ -624,8 +743,7 @@
     "name": "incomplete.pass_long",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=400@@@",
-      "@@@STEP_LINK@None@None@@@"
+      "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=400@@@"
     ]
   },
   {
@@ -633,8 +751,7 @@
     "name": "incomplete.flake_long",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=500@@@",
-      "@@@STEP_LINK@None@None@@@"
+      "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=500@@@"
     ]
   },
   {
@@ -642,8 +759,7 @@
     "name": "incomplete.fail_long",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=600@@@",
-      "@@@STEP_LINK@None@None@@@"
+      "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=600@@@"
     ]
   },
   {
diff --git a/recipe_modules/swarming_retry/tests/full.expected/raising_process_results.json b/recipe_modules/swarming_retry/tests/full.expected/raising_process_results.json
index 54785ad..88920ee 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/raising_process_results.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/raising_process_results.json
@@ -36,111 +36,94 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -152,7 +135,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -160,7 +143,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task.failing step",
+    "name": "launch/collect.0.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -168,13 +151,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task.exception",
+    "name": "launch/collect.0.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.0.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.0.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.0.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.0.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -206,7 +189,7 @@
     "name": "launch/collect.1.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -218,57 +201,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -280,7 +301,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_FAILURE@@@"
@@ -288,7 +309,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task.failing step",
+    "name": "launch/collect.1.process results.builder.failing step",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
       "@@@STEP_FAILURE@@@"
@@ -296,13 +317,13 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task.exception",
+    "name": "launch/collect.1.process results.builder.exception",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.1.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_SUMMARY_TEXT@Step('launch/collect.1.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_LINE@exception@Traceback (most recent call last):@@@",
       "@@@STEP_LOG_LINE@exception@... <traceback text omitted to simplify test expectations>@@@",
-      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.1.process results.task.failing step') (retcode: 0)@@@",
+      "@@@STEP_LOG_LINE@exception@recipe_engine.recipe_api.StepFailure: Step('launch/collect.1.process results.builder.failing step') (retcode: 0)@@@",
       "@@@STEP_LOG_END@exception@@@"
     ]
   },
@@ -311,7 +332,7 @@
     "name": "launch/collect.1.failed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@None@@@"
     ]
   },
   {
@@ -342,8 +363,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (fail)@https://testhost/task?id=101@@@",
+      "@@@STEP_LINK@attempt 1 (fail)@None@@@",
       "@@@STEP_FAILURE@@@"
     ]
   },
diff --git a/recipe_modules/swarming_retry/tests/full.expected/timeout_then_pass.json b/recipe_modules/swarming_retry/tests/full.expected/timeout_then_pass.json
index 1d43c6f..b9cd2d1 100644
--- a/recipe_modules/swarming_retry/tests/full.expected/timeout_then_pass.json
+++ b/recipe_modules/swarming_retry/tests/full.expected/timeout_then_pass.json
@@ -36,110 +36,94 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.install infra/tools/luci/swarming",
+    "name": "launch/collect.0.buildbucket.collect",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@"
     ]
   },
   {
     "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
+      "bb",
+      "collect",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
+      "100"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure package directory",
+    "name": "launch/collect.0.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
   },
   {
     "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
     ],
     "infra_step": true,
-    "name": "launch/collect.0.install infra/tools/luci/swarming.ensure_installed",
+    "name": "launch/collect.0.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"100\"}}]}",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"100\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:100\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"CANCELED\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
       "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "100"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"100\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"TIMED_OUT\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"100\"@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"100\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@100@https://cr-buildbucket.appspot.com/build/100@@@"
     ]
   },
   {
@@ -151,7 +135,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.0.process results.task",
+    "name": "launch/collect.0.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -184,7 +168,7 @@
     "name": "launch/collect.1.launch.task (attempt 1)",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@Swarming task@None@@@"
     ]
   },
   {
@@ -196,57 +180,95 @@
     ]
   },
   {
+    "cmd": [],
+    "name": "launch/collect.1.buildbucket.collect",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@2@@@"
+    ]
+  },
+  {
     "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
+      "bb",
       "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
+      "-host",
+      "cr-buildbucket.appspot.com",
+      "-interval",
+      "60s",
       "101"
     ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
     "infra_step": true,
-    "name": "launch/collect.1.collect",
+    "name": "launch/collect.1.buildbucket.collect.wait",
+    "timeout": 3600,
     "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
+      "@@@STEP_NEST_LEVEL@3@@@"
+    ]
+  },
+  {
+    "cmd": [
+      "bb",
+      "batch",
+      "-host",
+      "cr-buildbucket.appspot.com"
+    ],
+    "infra_step": true,
+    "name": "launch/collect.1.buildbucket.collect.get",
+    "stdin": "{\"requests\": [{\"getBuild\": {\"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\", \"id\": \"101\"}}]}",
+    "~followup_annotations": [
+      "@@@STEP_NEST_LEVEL@3@@@",
       "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"101\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@  \"responses\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@    {@@@",
+      "@@@STEP_LOG_LINE@json.output@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"builder\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"bucket\": \"try\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"builder\": \"builder\",@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createTime\": \"2018-05-25T23:50:17Z\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"createdBy\": \"project:project\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"id\": \"101\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"infra\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"resultdb\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"invocation\": \"invocations/build:101\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          },@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"swarming\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"priority\": 30@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"input\": {@@@",
+      "@@@STEP_LOG_LINE@json.output@          \"gerritChanges\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@            {@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"change\": \"123456\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"host\": \"chromium-review.googlesource.com\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"patchset\": \"7\",@@@",
+      "@@@STEP_LOG_LINE@json.output@              \"project\": \"project\"@@@",
+      "@@@STEP_LOG_LINE@json.output@            }@@@",
+      "@@@STEP_LOG_LINE@json.output@          ]@@@",
+      "@@@STEP_LOG_LINE@json.output@        },@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"status\": \"SUCCESS\",@@@",
+      "@@@STEP_LOG_LINE@json.output@        \"tags\": [@@@",
+      "@@@STEP_LOG_LINE@json.output@          {@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"key\": \"cq_experimental\",@@@",
+      "@@@STEP_LOG_LINE@json.output@            \"value\": \"false\"@@@",
+      "@@@STEP_LOG_LINE@json.output@          }@@@",
+      "@@@STEP_LOG_LINE@json.output@        ]@@@",
+      "@@@STEP_LOG_LINE@json.output@      }@@@",
       "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
+      "@@@STEP_LOG_LINE@json.output@  ]@@@",
       "@@@STEP_LOG_LINE@json.output@}@@@",
       "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
+      "@@@STEP_LOG_LINE@request@{@@@",
+      "@@@STEP_LOG_LINE@request@  \"requests\": [@@@",
+      "@@@STEP_LOG_LINE@request@    {@@@",
+      "@@@STEP_LOG_LINE@request@      \"getBuild\": {@@@",
+      "@@@STEP_LOG_LINE@request@        \"fields\": \"builder,createTime,createdBy,critical,endTime,id,infra,input,number,output,startTime,status,updateTime\",@@@",
+      "@@@STEP_LOG_LINE@request@        \"id\": \"101\"@@@",
+      "@@@STEP_LOG_LINE@request@      }@@@",
+      "@@@STEP_LOG_LINE@request@    }@@@",
+      "@@@STEP_LOG_LINE@request@  ]@@@",
+      "@@@STEP_LOG_LINE@request@}@@@",
+      "@@@STEP_LOG_END@request@@@",
+      "@@@STEP_LINK@101@https://cr-buildbucket.appspot.com/build/101@@@"
     ]
   },
   {
@@ -258,7 +280,7 @@
   },
   {
     "cmd": [],
-    "name": "launch/collect.1.process results.task",
+    "name": "launch/collect.1.process results.builder",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@3@@@"
     ]
@@ -268,7 +290,7 @@
     "name": "launch/collect.1.passed tasks",
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@task (attempt 1)@None@@@"
     ]
   },
   {
@@ -284,8 +306,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (pass)@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@attempt 1 (pass)@None@@@"
     ]
   },
   {
@@ -301,8 +322,7 @@
     "~followup_annotations": [
       "@@@STEP_NEST_LEVEL@1@@@",
       "@@@STEP_LINK@attempt 0 (fail)@https://testhost/task?id=100@@@",
-      "@@@STEP_LINK@vm-123@https://testhost/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (pass)@https://testhost/task?id=101@@@"
+      "@@@STEP_LINK@attempt 1 (pass)@None@@@"
     ]
   },
   {
diff --git a/recipe_modules/swarming_retry/tests/full.expected/triggered_task.json b/recipe_modules/swarming_retry/tests/full.expected/triggered_task.json
deleted file mode 100644
index 0af828d..0000000
--- a/recipe_modules/swarming_retry/tests/full.expected/triggered_task.json
+++ /dev/null
@@ -1,463 +0,0 @@
-[
-  {
-    "cmd": [],
-    "name": "launch/collect"
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_SUMMARY_TEXT@task failed@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.launch",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.launch.task (attempt 0)",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=1@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@4@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "vpython3",
-      "-u",
-      "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
-      "--json-output",
-      "/path/to/tmp/json",
-      "ensure-directory",
-      "--mode",
-      "0777",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure package directory",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "cipd",
-      "ensure",
-      "-root",
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin",
-      "-ensure-file",
-      "infra/tools/luci/swarming/${platform} swarming_module_pin",
-      "-max-threads",
-      "0",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).install infra/tools/luci/swarming.ensure_installed",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@5@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@      {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"instance_id\": \"resolved-instance_id-of-swarming_module_\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"package\": \"infra/tools/luci/swarming/resolved-platform\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    ]@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"200\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.0.launch.task (attempt 0).trigger",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/1\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  ]@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=1@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "1"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.0.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"1\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"1\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"1\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.process results",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.process results.task",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.0.failed tasks",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 0)@https://example.swarmingserver.appspot.com/task?id=1@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.1",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_SUMMARY_TEXT@task passed@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.1.launch",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.1.launch.task (attempt 1)",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@",
-      "@@@STEP_LINK@Swarming task@https://example.swarmingserver.appspot.com/task?id=2@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.1.launch.task (attempt 1).increase priority",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_SUMMARY_TEXT@from 200 to 199@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "spawn-tasks",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-json-input",
-      "{\"requests\": [{\"name\": \"task\", \"priority\": \"199\", \"service_account\": \"\", \"task_slices\": [{\"expiration_secs\": \"300\", \"properties\": {\"command\": [], \"containment\": {\"containment_type\": \"NONE\"}, \"dimensions\": [{\"key\": \"device_type\", \"value\": \"device_type\"}, {\"key\": \"pool\", \"value\": \"pool\"}], \"env\": [], \"env_prefixes\": [], \"execution_timeout_secs\": \"1200\", \"grace_period_secs\": \"30\", \"idempotent\": false, \"io_timeout_secs\": \"60\", \"outputs\": [], \"relative_cwd\": \"\"}, \"wait_for_capacity\": false}]}]}",
-      "-json-output",
-      "/path/to/tmp/json"
-    ],
-    "infra_step": true,
-    "name": "launch/collect.1.launch.task (attempt 1).trigger",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@4@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"tasks\": [@@@",
-      "@@@STEP_LOG_LINE@json.output@    {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"request\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"name\": \"task\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"2\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_result\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"invocation\": \"invocations/2\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      }@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  ]@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@json.input@{@@@",
-      "@@@STEP_LOG_LINE@json.input@  \"requests\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@    {@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"priority\": \"199\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"service_account\": \"\",@@@",
-      "@@@STEP_LOG_LINE@json.input@      \"task_slices\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@        {@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"expiration_secs\": \"300\",@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"properties\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"command\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"containment\": {@@@",
-      "@@@STEP_LOG_LINE@json.input@              \"containment_type\": \"NONE\"@@@",
-      "@@@STEP_LOG_LINE@json.input@            },@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"dimensions\": [@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"device_type\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"device_type\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              },@@@",
-      "@@@STEP_LOG_LINE@json.input@              {@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"key\": \"pool\",@@@",
-      "@@@STEP_LOG_LINE@json.input@                \"value\": \"pool\"@@@",
-      "@@@STEP_LOG_LINE@json.input@              }@@@",
-      "@@@STEP_LOG_LINE@json.input@            ],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"env_prefixes\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"execution_timeout_secs\": \"1200\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"grace_period_secs\": \"30\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"idempotent\": false,@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"io_timeout_secs\": \"60\",@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.input@            \"relative_cwd\": \"\"@@@",
-      "@@@STEP_LOG_LINE@json.input@          },@@@",
-      "@@@STEP_LOG_LINE@json.input@          \"wait_for_capacity\": false@@@",
-      "@@@STEP_LOG_LINE@json.input@        }@@@",
-      "@@@STEP_LOG_LINE@json.input@      ]@@@",
-      "@@@STEP_LOG_LINE@json.input@    }@@@",
-      "@@@STEP_LOG_LINE@json.input@  ]@@@",
-      "@@@STEP_LOG_LINE@json.input@}@@@",
-      "@@@STEP_LOG_END@json.input@@@",
-      "@@@STEP_LINK@task UI: task@https://example.swarmingserver.appspot.com/task?id=2@@@"
-    ]
-  },
-  {
-    "cmd": [
-      "[START_DIR]/cipd_tool/infra/tools/luci/swarming/swarming_module_pin/swarming",
-      "collect",
-      "-server",
-      "https://example.swarmingserver.appspot.com",
-      "-task-summary-json",
-      "/path/to/tmp/json",
-      "-task-output-stdout",
-      "json",
-      "-verbose",
-      "-eager",
-      "2"
-    ],
-    "cost": {
-      "cpu": 100,
-      "disk": 0,
-      "memory": 50,
-      "net": 0
-    },
-    "infra_step": true,
-    "name": "launch/collect.1.collect",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LOG_LINE@json.output@{@@@",
-      "@@@STEP_LOG_LINE@json.output@  \"2\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"output\": \"hello world!\",@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"outputs\": [],@@@",
-      "@@@STEP_LOG_LINE@json.output@    \"results\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"bot_id\": \"vm-123\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"cas_output_root\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"cas_instance\": \"projects/example-project/instances/default_instance\",@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"digest\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"hash\": \"24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca\",@@@",
-      "@@@STEP_LOG_LINE@json.output@          \"size_bytes\": \"73\"@@@",
-      "@@@STEP_LOG_LINE@json.output@        }@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"duration\": 62.35,@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"exit_code\": \"0\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"name\": \"task\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"resultdb_info\": {@@@",
-      "@@@STEP_LOG_LINE@json.output@        \"invocation\": \"invocations/some-inv-name\"@@@",
-      "@@@STEP_LOG_LINE@json.output@      },@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"state\": \"COMPLETED\",@@@",
-      "@@@STEP_LOG_LINE@json.output@      \"task_id\": \"2\"@@@",
-      "@@@STEP_LOG_LINE@json.output@    }@@@",
-      "@@@STEP_LOG_LINE@json.output@  }@@@",
-      "@@@STEP_LOG_LINE@json.output@}@@@",
-      "@@@STEP_LOG_END@json.output@@@",
-      "@@@STEP_LOG_LINE@task stdout+stderr: task@hello world!@@@",
-      "@@@STEP_LOG_END@task stdout+stderr: task@@@",
-      "@@@STEP_LINK@task cas outputs: task@https://cas-viewer.appspot.com/projects/example-project/instances/default_instance/blobs/24b2420bc49d8b8fdc1d011a163708927532b37dc9f91d7d8d6877e3a86559ca/73/tree@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.1.process results",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.1.process results.task",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@3@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "launch/collect.1.passed tasks",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@2@@@",
-      "@@@STEP_LINK@task (attempt 1)@https://example.swarmingserver.appspot.com/task?id=2@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "passes",
-    "~followup_annotations": [
-      "@@@STEP_SUMMARY_TEXT@1 passed@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "passes.task",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (fail)@https://example.swarmingserver.appspot.com/task?id=1@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (pass)@https://example.swarmingserver.appspot.com/task?id=2@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "flakes",
-    "~followup_annotations": [
-      "@@@STEP_SUMMARY_TEXT@1 flaked@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "flakes.task",
-    "~followup_annotations": [
-      "@@@STEP_NEST_LEVEL@1@@@",
-      "@@@STEP_LINK@attempt 0 (fail)@https://example.swarmingserver.appspot.com/task?id=1@@@",
-      "@@@STEP_LINK@vm-123@https://example.swarmingserver.appspot.com/bot?id=vm-123@@@",
-      "@@@STEP_LINK@attempt 1 (pass)@https://example.swarmingserver.appspot.com/task?id=2@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "failures",
-    "~followup_annotations": [
-      "@@@STEP_SUMMARY_TEXT@0 failed@@@"
-    ]
-  },
-  {
-    "cmd": [],
-    "name": "all tasks passed"
-  },
-  {
-    "name": "$result"
-  }
-]
\ No newline at end of file
diff --git a/recipe_modules/swarming_retry/tests/full.py b/recipe_modules/swarming_retry/tests/full.py
index 08b602e..b41f6a7 100644
--- a/recipe_modules/swarming_retry/tests/full.py
+++ b/recipe_modules/swarming_retry/tests/full.py
@@ -14,7 +14,6 @@
     "recipe_engine/led",
     "recipe_engine/properties",
     "recipe_engine/step",
-    "recipe_engine/swarming",
 ]
 
 PROPERTIES = {
@@ -132,22 +131,6 @@
     return ret
 
 
-class TriggeredTask(swarming_retry_api.TriggeredTask):
-
-  def __init__(self, api, name, initial_task_id, **kwargs):
-    del initial_task_id  # Unused.
-
-    dimensions = {
-        "pool": "pool",
-        "device_type": "device_type",
-    }
-
-    request = api.swarming.task_request().with_name(name)
-    request = request.with_slice(0, request[0].with_dimensions(**dimensions))
-
-    super().__init__(request, api, **kwargs)
-
-
 # pylint: disable=invalid-name
 def RunSteps(
     api,
@@ -164,7 +147,7 @@
       "internal_failure": InternalFailureTask,
       "raising": RaisingTask,
       "led": LedTask,
-      "triggered": TriggeredTask,
+      #"triggered": TriggeredTask,
   }
 
   _create_task = task_types[task_type]  # pylint: disable=invalid-name
@@ -277,15 +260,6 @@
   )
 
   yield (
-      api.test("triggered_task") +
-      api.properties(full=False, task_type="triggered") +
-      api.swarming_retry.trigger_data("task", 1, iteration=0) +
-      test_api.collect_data([test_api.failed_task("task", 1)], iteration=0) +
-      api.swarming_retry.trigger_data("task", 2, iteration=1) +
-      test_api.collect_data([test_api.passed_task("task", 2)], iteration=1)
-  )
-
-  yield (
       api.test("max_attempts_three", status="FAILURE") +
       api.properties(full=False, task_type="raising", max_attempts=3) +
       test_api.collect_data([test_api.passed_task("task", 100)], iteration=0) +
@@ -324,11 +298,11 @@
   # Test the simple case where there are no failures of the task.
   yield (
       api.test("multirun_without_failures", status="SUCCESS") +
-      api.properties(run_count=2, task_type="triggered")
+      api.properties(run_count=2, task_type="led") +
       # Enforce that both of these task attempt are launched in the first
       # iteration.  (This requires using task_type="triggered".)
-      + api.swarming_retry.trigger_data("task", 100, iteration=0, attempt=0) +
-      api.swarming_retry.trigger_data("task", 101, iteration=0, attempt=1) +
+      #+ api.swarming_retry.trigger_data("task", 100, iteration=0, attempt=0) +
+      #api.swarming_retry.trigger_data("task", 101, iteration=0, attempt=1) +
       test_api.collect_data([test_api.passed_task("task", 100)], iteration=0) +
       test_api.collect_data([test_api.passed_task("task", 101)], iteration=1)
   )
@@ -337,14 +311,10 @@
   # eventually passes.
   yield (
       api.test("multirun_retry_overall_pass", status="SUCCESS") +
-      api.properties(run_count=2, task_type="triggered") +
-      api.swarming_retry.trigger_data("task", 100, iteration=0, attempt=0) +
-      api.swarming_retry.trigger_data("task", 101, iteration=0, attempt=1) +
+      api.properties(run_count=2, task_type="led") +
       test_api.collect_data([test_api.passed_task("task", 100)], iteration=0) +
       test_api.collect_data([test_api.failed_task("task", 101)], iteration=1) +
-      api.swarming_retry.trigger_data("task", 102, iteration=2, attempt=2) +
       test_api.collect_data([test_api.failed_task("task", 102)], iteration=2) +
-      api.swarming_retry.trigger_data("task", 103, iteration=3, attempt=3) +
       test_api.collect_data([test_api.passed_task("task", 103)], iteration=3)
   )
 
@@ -352,14 +322,10 @@
   # enough passes within the max_attempts retry limit.
   yield (
       api.test("multirun_retry_overall_fail", status="FAILURE") +
-      api.properties(run_count=2, task_type="triggered") +
-      api.swarming_retry.trigger_data("task", 100, iteration=0, attempt=0) +
-      api.swarming_retry.trigger_data("task", 101, iteration=0, attempt=1) +
+      api.properties(run_count=2, task_type="led") +
       test_api.collect_data([test_api.passed_task("task", 100)], iteration=0) +
       test_api.collect_data([test_api.failed_task("task", 101)], iteration=1) +
-      api.swarming_retry.trigger_data("task", 102, iteration=2, attempt=2) +
       test_api.collect_data([test_api.failed_task("task", 102)], iteration=2) +
-      api.swarming_retry.trigger_data("task", 103, iteration=3, attempt=3) +
       test_api.collect_data([test_api.failed_task("task", 103)], iteration=3)
   )
 
@@ -371,11 +337,7 @@
   # finished.
   yield (
       api.test("multirun_fail_pass", status="FAILURE") +
-      api.properties(run_count=2, max_attempts=1, task_type="triggered") +
-      api.swarming_retry.trigger_data("task", 100, iteration=0, attempt=0) +
-      api.swarming_retry.trigger_data("task", 101, iteration=0, attempt=1)
-      # The second attempt passes first.
-      +
+      api.properties(run_count=2, max_attempts=1, task_type="led") +
       test_api.collect_data([test_api.passed_task("task", 101)], iteration=0) +
       test_api.collect_data([test_api.failed_task("task", 100)], iteration=1)
   )
@@ -384,9 +346,7 @@
   # attempts in the first batch fail, there should be no retries.
   yield (
       api.test("multirun_no_futile_retries", status="FAILURE") +
-      api.properties(run_count=2, task_type="triggered") +
-      api.swarming_retry.trigger_data("task", 100, iteration=0, attempt=0) +
-      api.swarming_retry.trigger_data("task", 101, iteration=0, attempt=1) +
+      api.properties(run_count=2, task_type="led") +
       test_api.collect_data([test_api.failed_task("task", 100)], iteration=0) +
       test_api.collect_data([test_api.failed_task("task", 101)], iteration=1)
   )